mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-03-19 13:02:13 +01:00
php: 0.5.0
Fix ZEND_DECLARE_MODULE_GLOBALS Add unpack of template converter (Merge pull request #57 #58 from enfinity/msgpackr)
This commit is contained in:
parent
3fb31f651d
commit
2e969e3a0a
@ -1,5 +1,20 @@
|
||||
msgpack extension changelog
|
||||
|
||||
Version 0.5.0
|
||||
-------------
|
||||
* Fix ZEND_DECLARE_MODULE_GLOBALS:
|
||||
Moved ZEND_DECLARE_MODULE_GLOBALS from header to source file.
|
||||
Added ZEND_EXTERN_MODULE_GLOBALS in source files to avoid undefined
|
||||
_msgpack_globals message.
|
||||
(Contributed by seporaitis)
|
||||
* Add unpack of template converter:
|
||||
Merge https://github.com/msgpack/msgpack/pull/58
|
||||
Fixed memory leaks.
|
||||
Fixed older version.
|
||||
Fixed tests scripts.
|
||||
Added msgpack_unpack function was implemented.
|
||||
(Contributed by ivan)
|
||||
|
||||
Version 0.4.0
|
||||
-------------
|
||||
* Fix array pack.
|
||||
|
@ -19,6 +19,8 @@
|
||||
#include "msgpack_errors.h"
|
||||
#include "msgpack/version.h"
|
||||
|
||||
ZEND_DECLARE_MODULE_GLOBALS(msgpack)
|
||||
|
||||
static ZEND_FUNCTION(msgpack_serialize);
|
||||
static ZEND_FUNCTION(msgpack_unserialize);
|
||||
|
||||
@ -322,7 +324,7 @@ static ZEND_FUNCTION(msgpack_unserialize)
|
||||
ALLOC_INIT_ZVAL(zv);
|
||||
php_msgpack_unserialize(zv, str, str_len TSRMLS_CC);
|
||||
|
||||
if (msgpack_convert_object(return_value, object, &zv) != SUCCESS)
|
||||
if (msgpack_convert_template(return_value, object, &zv) != SUCCESS)
|
||||
{
|
||||
RETURN_NULL();
|
||||
}
|
||||
|
@ -359,7 +359,7 @@ static ZEND_METHOD(msgpack, unpack)
|
||||
ALLOC_INIT_ZVAL(zv);
|
||||
php_msgpack_unserialize(zv, str, str_len TSRMLS_CC);
|
||||
|
||||
if (msgpack_convert_object(return_value, object, &zv) != SUCCESS)
|
||||
if (msgpack_convert_template(return_value, object, &zv) != SUCCESS)
|
||||
{
|
||||
RETURN_NULL();
|
||||
}
|
||||
|
@ -38,11 +38,16 @@ inline int msgpack_convert_long_to_properties(
|
||||
HashTable *ht, HashTable **properties, HashPosition *prop_pos,
|
||||
uint key_index, zval *val, HashTable *var)
|
||||
{
|
||||
TSRMLS_FETCH();
|
||||
|
||||
if (*properties != NULL)
|
||||
{
|
||||
char *prop_key;
|
||||
uint prop_key_len;
|
||||
ulong prop_key_index;
|
||||
zval **data = NULL;
|
||||
zval *tplval = NULL;
|
||||
zval **dataval = NULL;
|
||||
|
||||
for (;; zend_hash_move_forward_ex(*properties, prop_pos))
|
||||
{
|
||||
@ -53,10 +58,67 @@ inline int msgpack_convert_long_to_properties(
|
||||
if (var == NULL ||
|
||||
!zend_hash_exists(var, prop_key, prop_key_len))
|
||||
{
|
||||
zend_hash_move_forward_ex(*properties, prop_pos);
|
||||
return zend_symtable_update(
|
||||
ht, prop_key, prop_key_len,
|
||||
&val, sizeof(val), NULL);
|
||||
if (zend_hash_find(
|
||||
ht, prop_key, prop_key_len,
|
||||
(void **)&data) == SUCCESS)
|
||||
{
|
||||
switch (Z_TYPE_PP(data))
|
||||
{
|
||||
case IS_ARRAY:
|
||||
{
|
||||
HashTable *dataht;
|
||||
dataht = HASH_OF(val);
|
||||
if (zend_hash_index_find(
|
||||
dataht, prop_key_index,
|
||||
(void **)dataval) != SUCCESS)
|
||||
{
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) "
|
||||
"can't get data value by index",
|
||||
__FUNCTION__);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
ALLOC_INIT_ZVAL(tplval);
|
||||
if (msgpack_convert_array(
|
||||
tplval, *data, dataval) == SUCCESS)
|
||||
{
|
||||
zend_hash_move_forward_ex(
|
||||
*properties, prop_pos);
|
||||
|
||||
return zend_symtable_update(
|
||||
ht, prop_key, prop_key_len,
|
||||
&tplval, sizeof(tplval), NULL);
|
||||
}
|
||||
// TODO: de we need to call dtor?
|
||||
return FAILURE;
|
||||
break;
|
||||
}
|
||||
case IS_OBJECT:
|
||||
{
|
||||
ALLOC_INIT_ZVAL(tplval);
|
||||
if (msgpack_convert_object(
|
||||
tplval, *data, &val) == SUCCESS)
|
||||
{
|
||||
zend_hash_move_forward_ex(
|
||||
*properties, prop_pos);
|
||||
|
||||
return zend_symtable_update(
|
||||
ht, prop_key, prop_key_len,
|
||||
&tplval, sizeof(tplval), NULL);
|
||||
}
|
||||
// TODO: de we need to call dtor?
|
||||
return FAILURE;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
zend_hash_move_forward_ex(*properties, prop_pos);
|
||||
return zend_symtable_update(
|
||||
ht, prop_key, prop_key_len,
|
||||
&val, sizeof(val), NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -108,31 +170,286 @@ inline int msgpack_convert_string_to_properties(
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
int msgpack_convert_object(zval *return_value, zval *object, zval **value)
|
||||
int msgpack_convert_array(zval *return_value, zval *tpl, zval **value)
|
||||
{
|
||||
zend_class_entry *ce, **pce;
|
||||
HashTable *properties = NULL;
|
||||
HashPosition prop_pos;
|
||||
TSRMLS_FETCH();
|
||||
|
||||
switch (Z_TYPE_P(object))
|
||||
if (Z_TYPE_P(tpl) == IS_ARRAY)
|
||||
{
|
||||
char *key;
|
||||
uint key_len;
|
||||
int key_type;
|
||||
ulong key_index;
|
||||
zval **data, **arydata;
|
||||
HashPosition pos, valpos;
|
||||
HashTable *ht, *htval;
|
||||
int num;
|
||||
|
||||
ht = HASH_OF(tpl);
|
||||
// TODO: maybe need to release memory?
|
||||
array_init(return_value);
|
||||
|
||||
num = zend_hash_num_elements(ht);
|
||||
if (num <= 0)
|
||||
{
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) template array length is 0",
|
||||
__FUNCTION__);
|
||||
zval_ptr_dtor(value);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
/* string */
|
||||
if (ht->nNumOfElements != ht->nNextFreeElement)
|
||||
{
|
||||
htval = HASH_OF(*value);
|
||||
if (!htval)
|
||||
{
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) input data is not array",
|
||||
__FUNCTION__);
|
||||
zval_ptr_dtor(value);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
zend_hash_internal_pointer_reset_ex(ht, &pos);
|
||||
zend_hash_internal_pointer_reset_ex(htval, &valpos);
|
||||
for (;; zend_hash_move_forward_ex(ht, &pos),
|
||||
zend_hash_move_forward_ex(htval, &valpos))
|
||||
{
|
||||
key_type = zend_hash_get_current_key_ex(
|
||||
ht, &key, &key_len, &key_index, 0, &pos);
|
||||
|
||||
if (key_type == HASH_KEY_NON_EXISTANT)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (zend_hash_get_current_data_ex(
|
||||
ht, (void *)&data, &pos) != SUCCESS)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (key_type == HASH_KEY_IS_STRING)
|
||||
{
|
||||
int (*convert_function)(zval *, zval *, zval **) = NULL;
|
||||
zval **dataval, *val;
|
||||
|
||||
switch (Z_TYPE_PP(data))
|
||||
{
|
||||
case IS_ARRAY:
|
||||
convert_function = msgpack_convert_array;
|
||||
break;
|
||||
case IS_OBJECT:
|
||||
// case IS_STRING:
|
||||
convert_function = msgpack_convert_object;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (zend_hash_get_current_data_ex(
|
||||
htval, (void *)&dataval, &valpos) != SUCCESS)
|
||||
{
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) can't get data",
|
||||
__FUNCTION__);
|
||||
zval_ptr_dtor(value);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
MSGPACK_CONVERT_COPY_ZVAL(val, dataval);
|
||||
|
||||
if (convert_function)
|
||||
{
|
||||
zval *rv;
|
||||
ALLOC_INIT_ZVAL(rv);
|
||||
if (convert_function(rv, *data, &val) != SUCCESS)
|
||||
{
|
||||
zval_ptr_dtor(&val);
|
||||
return FAILURE;
|
||||
}
|
||||
add_assoc_zval_ex(return_value, key, key_len, rv);
|
||||
}
|
||||
else
|
||||
{
|
||||
add_assoc_zval_ex(return_value, key, key_len, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
zval_ptr_dtor(value);
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* index */
|
||||
int (*convert_function)(zval *, zval *, zval **) = NULL;
|
||||
|
||||
if (Z_TYPE_PP(value) != IS_ARRAY)
|
||||
{
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) unserialized data must be array.",
|
||||
__FUNCTION__);
|
||||
zval_ptr_dtor(value);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
zend_hash_internal_pointer_reset_ex(ht, &pos);
|
||||
|
||||
key_type = zend_hash_get_current_key_ex(
|
||||
ht, &key, &key_len, &key_index, 0, &pos);
|
||||
|
||||
if (key_type == HASH_KEY_NON_EXISTANT)
|
||||
{
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) first element in template array is empty",
|
||||
__FUNCTION__);
|
||||
zval_ptr_dtor(value);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
if (zend_hash_get_current_data_ex(
|
||||
ht, (void *)&data, &pos) != SUCCESS)
|
||||
{
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) invalid template: empty array?",
|
||||
__FUNCTION__);
|
||||
zval_ptr_dtor(value);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
switch (Z_TYPE_PP(data))
|
||||
{
|
||||
case IS_ARRAY:
|
||||
convert_function = msgpack_convert_array;
|
||||
break;
|
||||
case IS_OBJECT:
|
||||
case IS_STRING:
|
||||
convert_function = msgpack_convert_object;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
htval = HASH_OF(*value);
|
||||
num = zend_hash_num_elements(htval);
|
||||
if (num <= 0)
|
||||
{
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) array length is 0 in unserialized data",
|
||||
__FUNCTION__);
|
||||
zval_ptr_dtor(value);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
zend_hash_internal_pointer_reset_ex(htval, &valpos);
|
||||
for (;; zend_hash_move_forward_ex(htval, &valpos))
|
||||
{
|
||||
key_type = zend_hash_get_current_key_ex(
|
||||
htval, &key, &key_len, &key_index, 0, &valpos);
|
||||
|
||||
if (key_type == HASH_KEY_NON_EXISTANT)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (zend_hash_get_current_data_ex(
|
||||
htval, (void *)&arydata, &valpos) != SUCCESS)
|
||||
{
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) can't get next data in indexed array",
|
||||
__FUNCTION__);
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (key_type)
|
||||
{
|
||||
case HASH_KEY_IS_LONG:
|
||||
{
|
||||
zval *aryval, *rv;
|
||||
ALLOC_INIT_ZVAL(rv);
|
||||
MSGPACK_CONVERT_COPY_ZVAL(aryval, arydata);
|
||||
if (convert_function)
|
||||
{
|
||||
if (convert_function(rv, *data, &aryval) != SUCCESS)
|
||||
{
|
||||
zval_ptr_dtor(&aryval);
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) "
|
||||
"convert failure in HASH_KEY_IS_LONG "
|
||||
"in indexed array",
|
||||
__FUNCTION__);
|
||||
zval_ptr_dtor(value);
|
||||
return FAILURE;
|
||||
}
|
||||
add_next_index_zval(return_value, rv);
|
||||
}
|
||||
else
|
||||
{
|
||||
add_next_index_zval(return_value, aryval);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HASH_KEY_IS_STRING:
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) key is string",
|
||||
__FUNCTION__);
|
||||
zval_ptr_dtor(value);
|
||||
return FAILURE;
|
||||
default:
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) key is not string nor array",
|
||||
__FUNCTION__);
|
||||
zval_ptr_dtor(value);
|
||||
return FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
zval_ptr_dtor(value);
|
||||
return SUCCESS;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// shouldn't reach
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) template is not array",
|
||||
__FUNCTION__);
|
||||
zval_ptr_dtor(value);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
// shouldn't reach
|
||||
zval_ptr_dtor(value);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
int msgpack_convert_object(zval *return_value, zval *tpl, zval **value)
|
||||
{
|
||||
zend_class_entry *ce, **pce;
|
||||
TSRMLS_FETCH();
|
||||
|
||||
switch (Z_TYPE_P(tpl))
|
||||
{
|
||||
case IS_STRING:
|
||||
if (zend_lookup_class(
|
||||
Z_STRVAL_P(object), Z_STRLEN_P(object),
|
||||
Z_STRVAL_P(tpl), Z_STRLEN_P(tpl),
|
||||
&pce TSRMLS_CC) != SUCCESS)
|
||||
{
|
||||
MSGPACK_ERROR("[msgpack] (%s) Class '%s' not found",
|
||||
__FUNCTION__, Z_STRVAL_P(object));
|
||||
__FUNCTION__, Z_STRVAL_P(tpl));
|
||||
return FAILURE;
|
||||
}
|
||||
ce = *pce;
|
||||
break;
|
||||
case IS_OBJECT:
|
||||
ce = zend_get_class_entry(object TSRMLS_CC);
|
||||
ce = zend_get_class_entry(tpl TSRMLS_CC);
|
||||
break;
|
||||
default:
|
||||
MSGPACK_ERROR("[msgpack] (%s) Object type is unsupported",
|
||||
MSGPACK_ERROR("[msgpack] (%s) object type is unsupported",
|
||||
__FUNCTION__);
|
||||
return FAILURE;
|
||||
}
|
||||
@ -152,13 +469,76 @@ int msgpack_convert_object(zval *return_value, zval *object, zval **value)
|
||||
}
|
||||
|
||||
object_init_ex(return_value, ce);
|
||||
properties = Z_OBJ_HT_P(return_value)->get_properties(
|
||||
return_value TSRMLS_CC);
|
||||
if (HASH_OF(object))
|
||||
|
||||
/* Run the constructor if there is one */
|
||||
if (ce->constructor
|
||||
&& (ce->constructor->common.fn_flags & ZEND_ACC_PUBLIC))
|
||||
{
|
||||
properties = HASH_OF(object);
|
||||
zval *retval_ptr = NULL;
|
||||
zval ***params = NULL;
|
||||
int num_args = 0;
|
||||
zend_fcall_info fci;
|
||||
zend_fcall_info_cache fcc;
|
||||
|
||||
#if ZEND_MODULE_API_NO >= 20090626
|
||||
fci.size = sizeof(fci);
|
||||
fci.function_table = EG(function_table);
|
||||
fci.function_name = NULL;
|
||||
fci.symbol_table = NULL;
|
||||
fci.object_ptr = return_value;
|
||||
fci.retval_ptr_ptr = &retval_ptr;
|
||||
fci.param_count = num_args;
|
||||
fci.params = params;
|
||||
fci.no_separation = 1;
|
||||
|
||||
fcc.initialized = 1;
|
||||
fcc.function_handler = ce->constructor;
|
||||
fcc.calling_scope = EG(scope);
|
||||
fcc.called_scope = Z_OBJCE_P(return_value);
|
||||
fcc.object_ptr = return_value;
|
||||
#else
|
||||
fci.size = sizeof(fci);
|
||||
fci.function_table = EG(function_table);
|
||||
fci.function_name = NULL;
|
||||
fci.symbol_table = NULL;
|
||||
fci.object_pp = &return_value;
|
||||
fci.retval_ptr_ptr = &retval_ptr;
|
||||
fci.param_count = num_args;
|
||||
fci.params = params;
|
||||
fci.no_separation = 1;
|
||||
|
||||
fcc.initialized = 1;
|
||||
fcc.function_handler = ce->constructor;
|
||||
fcc.calling_scope = EG(scope);
|
||||
fcc.object_pp = &return_value;
|
||||
#endif
|
||||
|
||||
if (zend_call_function(&fci, &fcc TSRMLS_CC) == FAILURE)
|
||||
{
|
||||
if (params)
|
||||
{
|
||||
efree(params);
|
||||
}
|
||||
if (retval_ptr)
|
||||
{
|
||||
zval_ptr_dtor(&retval_ptr);
|
||||
}
|
||||
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) Invocation of %s's constructor failed",
|
||||
__FUNCTION__, ce->name);
|
||||
|
||||
return FAILURE;
|
||||
}
|
||||
if (retval_ptr)
|
||||
{
|
||||
zval_ptr_dtor(&retval_ptr);
|
||||
}
|
||||
if (params)
|
||||
{
|
||||
efree(params);
|
||||
}
|
||||
}
|
||||
zend_hash_internal_pointer_reset_ex(properties, &prop_pos);
|
||||
|
||||
switch (Z_TYPE_PP(value))
|
||||
{
|
||||
@ -184,12 +564,16 @@ int msgpack_convert_object(zval *return_value, zval *object, zval **value)
|
||||
break;
|
||||
}
|
||||
|
||||
ALLOC_HASHTABLE(var);
|
||||
zend_hash_init(var, num, NULL, NULL, 0);
|
||||
|
||||
/* string */
|
||||
if (ht->nNumOfElements != ht->nNextFreeElement)
|
||||
/* string - php_only mode? */
|
||||
if (ht->nNumOfElements != ht->nNextFreeElement
|
||||
|| ht->nNumOfElements != ret->nNumOfElements)
|
||||
{
|
||||
HashTable *properties = NULL;
|
||||
HashPosition prop_pos;
|
||||
|
||||
ALLOC_HASHTABLE(var);
|
||||
zend_hash_init(var, num, NULL, NULL, 0);
|
||||
|
||||
zend_hash_internal_pointer_reset_ex(ht, &pos);
|
||||
for (;; zend_hash_move_forward_ex(ht, &pos))
|
||||
{
|
||||
@ -222,61 +606,154 @@ int msgpack_convert_object(zval *return_value, zval *object, zval **value)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* index */
|
||||
zend_hash_internal_pointer_reset_ex(ht, &pos);
|
||||
for (;; zend_hash_move_forward_ex(ht, &pos))
|
||||
{
|
||||
key_type = zend_hash_get_current_key_ex(
|
||||
ht, &key, &key_len, &key_index, 0, &pos);
|
||||
/* index */
|
||||
properties = Z_OBJ_HT_P(return_value)->get_properties(
|
||||
return_value TSRMLS_CC);
|
||||
|
||||
if (key_type == HASH_KEY_NON_EXISTANT)
|
||||
if (HASH_OF(tpl))
|
||||
{
|
||||
break;
|
||||
properties = HASH_OF(tpl);
|
||||
}
|
||||
zend_hash_internal_pointer_reset_ex(properties, &prop_pos);
|
||||
|
||||
if (zend_hash_get_current_data_ex(
|
||||
ht, (void *)&data, &pos) != SUCCESS)
|
||||
zend_hash_internal_pointer_reset_ex(ht, &pos);
|
||||
for (;; zend_hash_move_forward_ex(ht, &pos))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
key_type = zend_hash_get_current_key_ex(
|
||||
ht, &key, &key_len, &key_index, 0, &pos);
|
||||
|
||||
switch (key_type)
|
||||
{
|
||||
case HASH_KEY_IS_LONG:
|
||||
if (key_type == HASH_KEY_NON_EXISTANT)
|
||||
{
|
||||
zval *val;
|
||||
MSGPACK_CONVERT_COPY_ZVAL(val, data);
|
||||
if (msgpack_convert_long_to_properties(
|
||||
ret, &properties, &prop_pos,
|
||||
key_index, val, var) != SUCCESS)
|
||||
{
|
||||
zval_ptr_dtor(&val);
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) "
|
||||
"illegal offset type, skip this decoding",
|
||||
__FUNCTION__);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HASH_KEY_IS_STRING:
|
||||
|
||||
if (zend_hash_get_current_data_ex(
|
||||
ht, (void *)&data, &pos) != SUCCESS)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (key_type)
|
||||
{
|
||||
case HASH_KEY_IS_LONG:
|
||||
{
|
||||
zval *val;
|
||||
MSGPACK_CONVERT_COPY_ZVAL(val, data);
|
||||
if (msgpack_convert_long_to_properties(
|
||||
ret, &properties, &prop_pos,
|
||||
key_index, val, var) != SUCCESS)
|
||||
{
|
||||
zval_ptr_dtor(&val);
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) "
|
||||
"illegal offset type, skip this decoding",
|
||||
__FUNCTION__);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case HASH_KEY_IS_STRING:
|
||||
break;
|
||||
default:
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) key is not string nor array",
|
||||
__FUNCTION__);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
zend_hash_destroy(var);
|
||||
FREE_HASHTABLE(var);
|
||||
}
|
||||
else
|
||||
{
|
||||
HashPosition valpos;
|
||||
int (*convert_function)(zval *, zval *, zval **) = NULL;
|
||||
zval **arydata, *aryval;
|
||||
|
||||
/* index */
|
||||
zend_hash_internal_pointer_reset_ex(ret, &pos);
|
||||
zend_hash_internal_pointer_reset_ex(ht, &valpos);
|
||||
for (;; zend_hash_move_forward_ex(ret, &pos),
|
||||
zend_hash_move_forward_ex(ht, &valpos))
|
||||
{
|
||||
key_type = zend_hash_get_current_key_ex(
|
||||
ret, &key, &key_len, &key_index, 0, &pos);
|
||||
|
||||
if (key_type == HASH_KEY_NON_EXISTANT)
|
||||
{
|
||||
break;
|
||||
default:
|
||||
}
|
||||
|
||||
if (zend_hash_get_current_data_ex(
|
||||
ret, (void *)&data, &pos) != SUCCESS)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (Z_TYPE_PP(data))
|
||||
{
|
||||
case IS_ARRAY:
|
||||
convert_function = msgpack_convert_array;
|
||||
break;
|
||||
case IS_OBJECT:
|
||||
//case IS_STRING: -- may have default values of
|
||||
// class members, so it's not wise to allow
|
||||
convert_function = msgpack_convert_object;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (zend_hash_get_current_data_ex(
|
||||
ht, (void *)&arydata, &valpos) != SUCCESS)
|
||||
{
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) key is not string nor array",
|
||||
"[msgpack] (%s) can't get data value by index",
|
||||
__FUNCTION__);
|
||||
break;
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
MSGPACK_CONVERT_COPY_ZVAL(aryval, arydata);
|
||||
|
||||
if (convert_function)
|
||||
{
|
||||
zval *rv;
|
||||
ALLOC_INIT_ZVAL(rv);
|
||||
|
||||
if (convert_function(rv, *data, &aryval) != SUCCESS)
|
||||
{
|
||||
zval_ptr_dtor(&aryval);
|
||||
MSGPACK_WARNING(
|
||||
"[msgpack] (%s) "
|
||||
"convert failure in convert_object",
|
||||
__FUNCTION__);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
zend_symtable_update(
|
||||
ret, key, key_len, &rv, sizeof(rv), NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
zend_symtable_update(
|
||||
ret, key, key_len, &aryval, sizeof(aryval), NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
zend_hash_destroy(var);
|
||||
FREE_HASHTABLE(var);
|
||||
|
||||
zval_ptr_dtor(value);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
HashTable *properties = NULL;
|
||||
HashPosition prop_pos;
|
||||
|
||||
properties = Z_OBJ_HT_P(return_value)->get_properties(
|
||||
return_value TSRMLS_CC);
|
||||
zend_hash_internal_pointer_reset_ex(properties, &prop_pos);
|
||||
|
||||
if (msgpack_convert_long_to_properties(
|
||||
HASH_OF(return_value), &properties, &prop_pos,
|
||||
0, *value, NULL) != SUCCESS)
|
||||
@ -286,7 +763,32 @@ int msgpack_convert_object(zval *return_value, zval *object, zval **value)
|
||||
__FUNCTION__);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
int msgpack_convert_template(zval *return_value, zval *tpl, zval **value)
|
||||
{
|
||||
TSRMLS_FETCH();
|
||||
|
||||
switch (Z_TYPE_P(tpl))
|
||||
{
|
||||
case IS_ARRAY:
|
||||
return msgpack_convert_array(return_value, tpl, value);
|
||||
break;
|
||||
case IS_STRING:
|
||||
case IS_OBJECT:
|
||||
return msgpack_convert_object(return_value, tpl, value);
|
||||
break;
|
||||
default:
|
||||
MSGPACK_ERROR("[msgpack] (%s) Template type is unsupported",
|
||||
__FUNCTION__);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
// shouldn't reach
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
|
@ -3,5 +3,7 @@
|
||||
#define MSGPACK_CONVERT_H
|
||||
|
||||
int msgpack_convert_object(zval *return_value, zval *object, zval **value);
|
||||
int msgpack_convert_array(zval *return_value, zval *tpl, zval **value);
|
||||
int msgpack_convert_template(zval *return_value, zval *tpl, zval **value);
|
||||
|
||||
#endif
|
||||
|
@ -10,11 +10,11 @@
|
||||
<email>advect@gmail.com</email>
|
||||
<active>yes</active>
|
||||
</lead>
|
||||
<date>2011-01-16</date>
|
||||
<time>16:05:34</time>
|
||||
<date>2011-07-27</date>
|
||||
<time>12:39:33</time>
|
||||
<version>
|
||||
<release>0.4.0</release>
|
||||
<api>0.4.0</api>
|
||||
<release>0.5.0</release>
|
||||
<api>0.5.0</api>
|
||||
</version>
|
||||
<stability>
|
||||
<release>beta</release>
|
||||
@ -32,17 +32,17 @@
|
||||
<file md5sum="6747376fed353e6bd2490c5c4b3a096c" name="config.m4" role="src" />
|
||||
<file md5sum="195040cca1f961b6356d296e60a532ce" name="config.w32" role="src" />
|
||||
<file md5sum="8eadc10d9a8345f3ffa9614348cdb939" name="msgpack.php" role="src" />
|
||||
<file md5sum="3348110bba3168ea57f5ba973bf6fcb5" name="msgpack.c" role="src" />
|
||||
<file md5sum="654f52c1edc96100c71190d072421f20" name="msgpack_class.c" role="src" />
|
||||
<file md5sum="a8f42021390a4c9f8ad1690a7543262e" name="msgpack.c" role="src" />
|
||||
<file md5sum="c6cdb4c0a9e44f2259fdbd3be79d0b6b" name="msgpack_class.c" role="src" />
|
||||
<file md5sum="b8eadd32c3eafb67645bb4ffe16f687c" name="msgpack_class.h" role="src" />
|
||||
<file md5sum="18951ba7ba70fe79fa551ea25fb11dd2" name="msgpack_convert.c" role="src" />
|
||||
<file md5sum="0958d54ea4a922746c7e72734a5a9b95" name="msgpack_convert.h" role="src" />
|
||||
<file md5sum="7b9adaae675371038f8774a1eb3b831b" name="msgpack_convert.c" role="src" />
|
||||
<file md5sum="36e55e18e2a3c53f2929558fb6cdd7ed" name="msgpack_convert.h" role="src" />
|
||||
<file md5sum="7d25383ea3cff751ca993c98b1b5e57e" name="msgpack_errors.h" role="src" />
|
||||
<file md5sum="ffaeb53d003a0961bcb6837545815877" name="msgpack_pack.c" role="src" />
|
||||
<file md5sum="06f85a181c2070272c0ecd0dc3161161" name="msgpack_pack.h" role="src" />
|
||||
<file md5sum="d341e1a3b400b45f844a94ecd5198248" name="msgpack_unpack.c" role="src" />
|
||||
<file md5sum="1a31c49f353c8deec86affd1564909d1" name="msgpack_unpack.h" role="src" />
|
||||
<file md5sum="46846c8d7a2c9a3cb81564dd66357f20" name="php_msgpack.h" role="src" />
|
||||
<file md5sum="7a558da9034ccda806990aff0b212c90" name="php_msgpack.h" role="src" />
|
||||
<file md5sum="82079e9a298ecdda2122757ddfbf576e" name="msgpack/pack_define.h" role="src" />
|
||||
<file md5sum="af3f5ca341be55d866fe151c45186d22" name="msgpack/pack_template.h" role="src" />
|
||||
<file md5sum="09510085da29090ea0f3919c2e708f46" name="msgpack/unpack_define.h" role="src" />
|
||||
@ -97,7 +97,7 @@
|
||||
<file md5sum="3f37b5f1f4da46a1afeafea516d56490" name="tests/031.phpt" role="test" />
|
||||
<file md5sum="170dfcb82fd1e097fffc6b57a7e9764a" name="tests/032.phpt" role="test" />
|
||||
<file md5sum="0e96b2ebf8c37c1c4c13de4d2d5dae95" name="tests/033.phpt" role="test" />
|
||||
<file md5sum="38a296986d384118800b03bb1a4f24a9" name="tests/034.phpt" role="test" />
|
||||
<file md5sum="c36550e0f68d0aa1174247bfb37c13f0" name="tests/034.phpt" role="test" />
|
||||
<file md5sum="661553a8ccd9b83c95772dd9ad68d82b" name="tests/035.phpt" role="test" />
|
||||
<file md5sum="3914d56c32ca243221c8eecc767b3056" name="tests/040.phpt" role="test" />
|
||||
<file md5sum="8b49472a24bf5fbe9e90276b5f4b076a" name="tests/040b.phpt" role="test" />
|
||||
@ -172,6 +172,72 @@
|
||||
<file md5sum="025d7ce0533df77af4e6621386fd4a0b" name="tests/102b.phpt" role="test" />
|
||||
<file md5sum="cd76b1b0cd4d8905ed896dbac07df670" name="tests/103.phpt" role="test" />
|
||||
<file md5sum="76bab9f004e10e76761c34b2338f9fee" name="tests/103b.phpt" role="test" />
|
||||
<file md5sum="fe34de5b1e1613b0009b1151c9a2fb77" name="tests/104.phpt" role="test" />
|
||||
<file md5sum="8ba365211992593daa3e5ace200b9698" name="tests/104b.phpt" role="test" />
|
||||
<file md5sum="d4daa384c1824805165df0595cda598e" name="tests/105.phpt" role="test" />
|
||||
<file md5sum="3d4d3da8b195686aabdef2c142955a50" name="tests/105b.phpt" role="test" />
|
||||
<file md5sum="766a6fbfbd479c3612dc62435fa28172" name="tests/106.phpt" role="test" />
|
||||
<file md5sum="1f9709dbd7deb6cd06eb96000822743d" name="tests/106b.phpt" role="test" />
|
||||
<file md5sum="daa8775eb9dd7d96cd007aaf05ccd5fc" name="tests/107.phpt" role="test" />
|
||||
<file md5sum="a5485997dc85a18f2571b1d96db24361" name="tests/107b.phpt" role="test" />
|
||||
<file md5sum="fff04218d82653f79ef06a12db7eb688" name="tests/108.phpt" role="test" />
|
||||
<file md5sum="242a8aa45a44e8b263c2dd0584a18d5f" name="tests/108b.phpt" role="test" />
|
||||
<file md5sum="0da5a36396ec076a4259f4aa72702472" name="tests/109.phpt" role="test" />
|
||||
<file md5sum="774a4a16a2ddee39595f479c8e7da374" name="tests/109b.phpt" role="test" />
|
||||
<file md5sum="d44f963b68a26483d4bc95e1c1718c59" name="tests/110.phpt" role="test" />
|
||||
<file md5sum="19fad685bf703baf889ece8fd031c548" name="tests/110b.phpt" role="test" />
|
||||
<file md5sum="b5e79a4fdec999701eeed6e4ffedbaaf" name="tests/111.phpt" role="test" />
|
||||
<file md5sum="aa326ce98233bf0aaf085a28b67ac9c6" name="tests/111b.phpt" role="test" />
|
||||
<file md5sum="2d9d876a7771eb149e8751fb2764413e" name="tests/112.phpt" role="test" />
|
||||
<file md5sum="9211056b9b3b664b409b3c9940b56453" name="tests/112b.phpt" role="test" />
|
||||
<file md5sum="9961fad01da15f452e55e7ddd2fa2c40" name="tests/113.phpt" role="test" />
|
||||
<file md5sum="ee7367c5c40cee3b8cc6a0f4b2f92c77" name="tests/113b.phpt" role="test" />
|
||||
<file md5sum="889ae1fe8a8bf73da35d9f86e772f008" name="tests/114.phpt" role="test" />
|
||||
<file md5sum="2e67b53bda5406182f7af545b66d2686" name="tests/114b.phpt" role="test" />
|
||||
<file md5sum="0c352ddf3fe25db4c68f42f814ebbf91" name="tests/115.phpt" role="test" />
|
||||
<file md5sum="7b81b4a35afaeffd707037a052f96660" name="tests/115b.phpt" role="test" />
|
||||
<file md5sum="d1ce1f246f03ad9148a9a1ac4e9e8e40" name="tests/116.phpt" role="test" />
|
||||
<file md5sum="a9b477ef90ffb043cd1e6ce3bffc56e8" name="tests/116b.phpt" role="test" />
|
||||
<file md5sum="22ad9a50e059cb3460df3913323d0c98" name="tests/117.phpt" role="test" />
|
||||
<file md5sum="4bee2fee7d418a03d0a2161d6851195b" name="tests/117b.phpt" role="test" />
|
||||
<file md5sum="33b2f3109657045f97ddf56e8483a888" name="tests/118.phpt" role="test" />
|
||||
<file md5sum="507c2900acf9b17506d8f886abc3f251" name="tests/118b.phpt" role="test" />
|
||||
<file md5sum="063c815822c304354350d2ee2f3298f2" name="tests/119.phpt" role="test" />
|
||||
<file md5sum="66d6b04af099daccc61e1b423e163159" name="tests/119b.phpt" role="test" />
|
||||
<file md5sum="14e128915526b618110b7a69ee4f8350" name="tests/120.phpt" role="test" />
|
||||
<file md5sum="b78062023ccf2774270987d5b06c4567" name="tests/120b.phpt" role="test" />
|
||||
<file md5sum="39d997975c5fcb15f74ff0254cf7353e" name="tests/121.phpt" role="test" />
|
||||
<file md5sum="021777d95203bd66f10ccb9764ba5d77" name="tests/121b.phpt" role="test" />
|
||||
<file md5sum="88e32faca9d5d03b9450ca13788fe606" name="tests/122.phpt" role="test" />
|
||||
<file md5sum="1933f5c66b5bf594740e98bb95b32ccb" name="tests/122b.phpt" role="test" />
|
||||
<file md5sum="dfcba4317c824c19bfbe514bfe6cff45" name="tests/123.phpt" role="test" />
|
||||
<file md5sum="7301229f2c4f0f0a8f6bca198495f7d4" name="tests/123b.phpt" role="test" />
|
||||
<file md5sum="88d215f411a38ba06165759af9af9d74" name="tests/124.phpt" role="test" />
|
||||
<file md5sum="a39c8f196277f3b387c3472664ee07aa" name="tests/124b.phpt" role="test" />
|
||||
<file md5sum="e1f352ff75fefaf50d79c8fb19129051" name="tests/125.phpt" role="test" />
|
||||
<file md5sum="dbe6cc43d405455fefe247f66c76195c" name="tests/125b.phpt" role="test" />
|
||||
<file md5sum="5d7580cac61f98a12d52dc3bc621e565" name="tests/126.phpt" role="test" />
|
||||
<file md5sum="000ba52afda50731ad6a5cf0afc16f70" name="tests/126b.phpt" role="test" />
|
||||
<file md5sum="9c64222d9e74d89f2c01487b780e84c0" name="tests/127.phpt" role="test" />
|
||||
<file md5sum="cb616c53b3ffdc20bea4b12d3e2c1d8c" name="tests/127b.phpt" role="test" />
|
||||
<file md5sum="7591a640110855713549d6957d8394cf" name="tests/128.phpt" role="test" />
|
||||
<file md5sum="f579ce8a1b8d7280fd45522268f46821" name="tests/128b.phpt" role="test" />
|
||||
<file md5sum="15e6419d723c7c58494681d6c81e562f" name="tests/129.phpt" role="test" />
|
||||
<file md5sum="759048ff6222150cdc74451ea136f992" name="tests/129b.phpt" role="test" />
|
||||
<file md5sum="23f98cfe4c3ba459396c62801e04af04" name="tests/130.phpt" role="test" />
|
||||
<file md5sum="d047c8603e7be5069ab578d009c799eb" name="tests/130b.phpt" role="test" />
|
||||
<file md5sum="604111af2502d05fb3e59d45067f2003" name="tests/131.phpt" role="test" />
|
||||
<file md5sum="54b91353b7be6c078dc13c368117a4b6" name="tests/131b.phpt" role="test" />
|
||||
<file md5sum="f96c33aea681d7aa38f2bb671279173e" name="tests/132.phpt" role="test" />
|
||||
<file md5sum="a3127fd73df54a33a4a67dded67248ca" name="tests/132b.phpt" role="test" />
|
||||
<file md5sum="8b20b5ac3eedfe710b41ff0c39e73709" name="tests/133.phpt" role="test" />
|
||||
<file md5sum="2c78697358f2baa98d2cf07e25783002" name="tests/133b.phpt" role="test" />
|
||||
<file md5sum="1b99d02a41791e5cf6481d3e32635e75" name="tests/134.phpt" role="test" />
|
||||
<file md5sum="ebe1916f9ef3b784baa7543252f13a5f" name="tests/134b.phpt" role="test" />
|
||||
<file md5sum="ae5088b921e06924d0ea9af308b92d3d" name="tests/135.phpt" role="test" />
|
||||
<file md5sum="bddb8caa6a0ebb0d200b0aa8f7f1bc2c" name="tests/135b.phpt" role="test" />
|
||||
<file md5sum="78f1d56b752d8ce366d4b1ab9bb2b6d3" name="tests/136.phpt" role="test" />
|
||||
<file md5sum="11e31f9cc6f60546b85dfd292240af89" name="tests/136b.phpt" role="test" />
|
||||
</dir>
|
||||
</contents>
|
||||
<dependencies>
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
Summary: PHP extension for interfacing with MessagePack
|
||||
Name: php-msgpack
|
||||
Version: 0.4.0
|
||||
Version: 0.5.0
|
||||
Release: 1%{?dist}
|
||||
Source: php-msgpack-%{version}.tar.gz
|
||||
License: New BSD License
|
||||
|
@ -2,7 +2,7 @@
|
||||
#ifndef PHP_MSGPACK_H
|
||||
#define PHP_MSGPACK_H
|
||||
|
||||
#define MSGPACK_EXTENSION_VERSION "0.4.0"
|
||||
#define MSGPACK_EXTENSION_VERSION "0.5.0"
|
||||
|
||||
#include "ext/standard/php_smart_str.h"
|
||||
|
||||
@ -26,7 +26,7 @@ ZEND_BEGIN_MODULE_GLOBALS(msgpack)
|
||||
zend_bool php_only;
|
||||
ZEND_END_MODULE_GLOBALS(msgpack)
|
||||
|
||||
ZEND_DECLARE_MODULE_GLOBALS(msgpack)
|
||||
ZEND_EXTERN_MODULE_GLOBALS(msgpack)
|
||||
|
||||
#ifdef ZTS
|
||||
#define MSGPACK_G(v) TSRMG(msgpack_globals_id, zend_msgpack_globals *, v)
|
||||
|
@ -8,31 +8,34 @@ if(!extension_loaded('msgpack')) {
|
||||
}
|
||||
|
||||
$datas = array(
|
||||
87817,
|
||||
-1,
|
||||
array(1,2,3,"testing" => 10, "foo"),
|
||||
true,
|
||||
false,
|
||||
0.187182,
|
||||
"dakjdh98389\000",
|
||||
null,
|
||||
(object)array(1,2,3),
|
||||
87817,
|
||||
-1,
|
||||
array(1,2,3,"testing" => 10, "foo"),
|
||||
true,
|
||||
false,
|
||||
0.187182,
|
||||
"dakjdh98389\000",
|
||||
null,
|
||||
(object)array(1,2,3),
|
||||
);
|
||||
|
||||
error_reporting(0);
|
||||
|
||||
foreach ($datas as $data) {
|
||||
$str = msgpack_serialize($data);
|
||||
$len = strlen($str);
|
||||
foreach ($datas as $data)
|
||||
{
|
||||
$str = msgpack_serialize($data);
|
||||
$len = strlen($str);
|
||||
|
||||
for ($j = 0; $j < 200; $j++) {
|
||||
for ($i = 0; $i < $len - 1; $i++) {
|
||||
$sub = substr($str, 0, $i);
|
||||
$sub .= mcrypt_create_iv(30, MCRYPT_DEV_URANDOM);
|
||||
$php_errormsg = null;
|
||||
$v = msgpack_unserialize($sub);
|
||||
}
|
||||
}
|
||||
for ($j = 0; $j < 200; $j++)
|
||||
{
|
||||
for ($i = 0; $i < $len - 1; $i++)
|
||||
{
|
||||
$sub = substr($str, 0, $i);
|
||||
$sub .= mcrypt_create_iv(30, MCRYPT_DEV_URANDOM);
|
||||
$php_errormsg = null;
|
||||
$v = msgpack_unserialize($sub);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
--EXPECT--
|
||||
|
81
php/tests/104.phpt
Normal file
81
php/tests/104.phpt
Normal file
@ -0,0 +1,81 @@
|
||||
--TEST--
|
||||
unpack of template converter: class unpacker (array: string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata0";
|
||||
|
||||
$obj2 = new MyObj();
|
||||
$obj2->pdata = "pubdata1";
|
||||
|
||||
$ary = array($obj, $obj2);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (3) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (3) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
}
|
||||
}
|
||||
OK
|
81
php/tests/104b.phpt
Normal file
81
php/tests/104b.phpt
Normal file
@ -0,0 +1,81 @@
|
||||
--TEST--
|
||||
unpack of template converter: class unpacker (array: string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata0";
|
||||
|
||||
$obj2 = new MyObj();
|
||||
$obj2->pdata = "pubdata1";
|
||||
|
||||
$ary = array($obj, $obj2);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (3) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (3) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
}
|
||||
}
|
||||
OK
|
81
php/tests/105.phpt
Normal file
81
php/tests/105.phpt
Normal file
@ -0,0 +1,81 @@
|
||||
--TEST--
|
||||
unpack of template converter: class unpacker (array: object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata0";
|
||||
|
||||
$obj2 = new MyObj();
|
||||
$obj2->pdata = "pubdata1";
|
||||
|
||||
$ary = array($obj, $obj2);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (3) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (3) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
}
|
||||
}
|
||||
OK
|
81
php/tests/105b.phpt
Normal file
81
php/tests/105b.phpt
Normal file
@ -0,0 +1,81 @@
|
||||
--TEST--
|
||||
unpack of template converter: class unpacker (array: object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata0";
|
||||
|
||||
$obj2 = new MyObj();
|
||||
$obj2->pdata = "pubdata1";
|
||||
|
||||
$ary = array($obj, $obj2);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (3) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (3) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
}
|
||||
}
|
||||
OK
|
87
php/tests/106.phpt
Normal file
87
php/tests/106.phpt
Normal file
@ -0,0 +1,87 @@
|
||||
--TEST--
|
||||
unpack of template converter: class unpacker (string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj {
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$tpl = "MyObj";
|
||||
|
||||
test("recursive object /w string", $obj, $tpl, $obj);
|
||||
|
||||
--EXPECTF--
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
OK
|
88
php/tests/106b.phpt
Normal file
88
php/tests/106b.phpt
Normal file
@ -0,0 +1,88 @@
|
||||
--TEST--
|
||||
unpack of template converter: class unpacker (string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$tpl = "MyObj";
|
||||
|
||||
test("recursive object /w string", $obj, $tpl, $obj);
|
||||
|
||||
--EXPECTF--
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
OK
|
88
php/tests/107.phpt
Normal file
88
php/tests/107.phpt
Normal file
@ -0,0 +1,88 @@
|
||||
--TEST--
|
||||
unpack of template converter: class unpacker (object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$tpl = new MyObj();
|
||||
|
||||
test("recursive object /w instance", $obj, $tpl, $obj);
|
||||
|
||||
--EXPECTF--
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
OK
|
88
php/tests/107b.phpt
Normal file
88
php/tests/107b.phpt
Normal file
@ -0,0 +1,88 @@
|
||||
--TEST--
|
||||
unpack of template converter: class unpacker (object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$tpl = new MyObj();
|
||||
|
||||
test("recursive object /w instance", $obj, $tpl, $obj);
|
||||
|
||||
--EXPECTF--
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
OK
|
93
php/tests/108.phpt
Normal file
93
php/tests/108.phpt
Normal file
@ -0,0 +1,93 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class: class unpacker (array: string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$ary = array($obj);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object with object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
93
php/tests/108b.phpt
Normal file
93
php/tests/108b.phpt
Normal file
@ -0,0 +1,93 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class: class unpacker (array: string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$ary = array($obj);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object with object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
92
php/tests/109.phpt
Normal file
92
php/tests/109.phpt
Normal file
@ -0,0 +1,92 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class: class unpacker (array: object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj {
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$ary = array($obj);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("recursive object with object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
93
php/tests/109b.phpt
Normal file
93
php/tests/109b.phpt
Normal file
@ -0,0 +1,93 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class: class unpacker (array: object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$ary = array($obj);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object with object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
114
php/tests/110.phpt
Normal file
114
php/tests/110.phpt
Normal file
@ -0,0 +1,114 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple variable: class unpacker (array: string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary->subpdata = "subpubdata0";
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary->subpdata = "subpubdata1";
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata0"
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
114
php/tests/110b.phpt
Normal file
114
php/tests/110b.phpt
Normal file
@ -0,0 +1,114 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple variable: class unpacker (array: string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary->subpdata = "subpubdata0";
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary->subpdata = "subpubdata1";
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata0"
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
114
php/tests/111.phpt
Normal file
114
php/tests/111.phpt
Normal file
@ -0,0 +1,114 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple variable: class unpacker (array: object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary->subpdata = "subpubdata0";
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary->subpdata = "subpubdata1";
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("recursive object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata0"
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
114
php/tests/111b.phpt
Normal file
114
php/tests/111b.phpt
Normal file
@ -0,0 +1,114 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple variable: class unpacker (array: object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary->subpdata = "subpubdata0";
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary->subpdata = "subpubdata1";
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("recursive object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata0"
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
144
php/tests/112.phpt
Normal file
144
php/tests/112.phpt
Normal file
@ -0,0 +1,144 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: class unpacker (array: string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object list with object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
144
php/tests/112b.phpt
Normal file
144
php/tests/112b.phpt
Normal file
@ -0,0 +1,144 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: class unpacker (array: string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object list with object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
144
php/tests/113.phpt
Normal file
144
php/tests/113.phpt
Normal file
@ -0,0 +1,144 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: class unpacker (array: object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("recursive object list with object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
144
php/tests/113b.phpt
Normal file
144
php/tests/113b.phpt
Normal file
@ -0,0 +1,144 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: class unpacker (array: object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("recursive object list with object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
166
php/tests/114.phpt
Normal file
166
php/tests/114.phpt
Normal file
@ -0,0 +1,166 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: class unpacker (array)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$arySubObj = array(
|
||||
"subdata" => "subdatadata",
|
||||
"subpriv" => "subprivdata",
|
||||
"subpdata" => null,
|
||||
);
|
||||
|
||||
$aryMyObj = array(
|
||||
"data" => "datadata",
|
||||
"priv" => "privdata",
|
||||
"pdata" => null,
|
||||
"subary" => array($arySubObj),
|
||||
);
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array($aryMyObj);
|
||||
$resary = array($aryMyObj, $aryMyObj);
|
||||
$resary[0]["pdata"] = "pubdata0";
|
||||
$resary[0]["subary"][] = $arySubObj;
|
||||
$resary[0]["subary"][0]["subpdata"] = "subpubdata00";
|
||||
$resary[0]["subary"][1]["subpdata"] = "subpdata01";
|
||||
$resary[1]["subary"][] = $arySubObj;
|
||||
$resary[1]["pdata"] = "pubdata1";
|
||||
$resary[1]["subary"][0]["subpdata"] = "subpubdata1";
|
||||
$resary[1]["subary"][1]["subpdata"] = "subpdata11";
|
||||
|
||||
test("recursive object list to associative array list", $ary, $tpl, $resary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(4) {
|
||||
["data"]=>
|
||||
string(8) "datadata"
|
||||
["priv"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
array(4) {
|
||||
["data"]=>
|
||||
string(8) "datadata"
|
||||
["priv"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
166
php/tests/114b.phpt
Normal file
166
php/tests/114b.phpt
Normal file
@ -0,0 +1,166 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: class unpacker (array)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$arySubObj = array(
|
||||
"subdata" => "subdatadata",
|
||||
"subpriv" => "subprivdata",
|
||||
"subpdata" => null,
|
||||
);
|
||||
|
||||
$aryMyObj = array(
|
||||
"data" => "datadata",
|
||||
"priv" => "privdata",
|
||||
"pdata" => null,
|
||||
"subary" => array($arySubObj),
|
||||
);
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array($aryMyObj);
|
||||
$resary = array($aryMyObj, $aryMyObj);
|
||||
$resary[0]["pdata"] = "pubdata0";
|
||||
$resary[0]["subary"][] = $arySubObj;
|
||||
$resary[0]["subary"][0]["subpdata"] = "subpubdata00";
|
||||
$resary[0]["subary"][1]["subpdata"] = "subpdata01";
|
||||
$resary[1]["subary"][] = $arySubObj;
|
||||
$resary[1]["pdata"] = "pubdata1";
|
||||
$resary[1]["subary"][0]["subpdata"] = "subpubdata1";
|
||||
$resary[1]["subary"][1]["subpdata"] = "subpdata11";
|
||||
|
||||
test("recursive object list to associative array list", $ary, $tpl, $resary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(4) {
|
||||
["data"]=>
|
||||
string(8) "datadata"
|
||||
["priv"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
array(4) {
|
||||
["data"]=>
|
||||
string(8) "datadata"
|
||||
["priv"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
82
php/tests/115.phpt
Normal file
82
php/tests/115.phpt
Normal file
@ -0,0 +1,82 @@
|
||||
--TEST--
|
||||
unpack of template converter: class unpacker (array: string: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata0";
|
||||
|
||||
$obj2 = new MyObj();
|
||||
$obj2->pdata = "pubdata1";
|
||||
|
||||
$ary = array($obj, $obj2);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (3) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (3) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
}
|
||||
}
|
||||
OK
|
89
php/tests/115b.phpt
Normal file
89
php/tests/115b.phpt
Normal file
@ -0,0 +1,89 @@
|
||||
--TEST--
|
||||
unpack of template converter: class unpacker (array: string: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
if (version_compare(PHP_VERSION, '5.1.0') <= 0)
|
||||
{
|
||||
$msgpack->setOption(MESSAGEPACK_OPT_PHPONLY, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
}
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata0";
|
||||
|
||||
$obj2 = new MyObj();
|
||||
$obj2->pdata = "pubdata1";
|
||||
|
||||
$ary = array($obj, $obj2);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (3) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (3) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
}
|
||||
}
|
||||
OK
|
82
php/tests/116.phpt
Normal file
82
php/tests/116.phpt
Normal file
@ -0,0 +1,82 @@
|
||||
--TEST--
|
||||
unpack of template converter: class unpacker (array: object: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata0";
|
||||
|
||||
$obj2 = new MyObj();
|
||||
$obj2->pdata = "pubdata1";
|
||||
|
||||
$ary = array($obj, $obj2);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (3) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (3) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
}
|
||||
}
|
||||
OK
|
89
php/tests/116b.phpt
Normal file
89
php/tests/116b.phpt
Normal file
@ -0,0 +1,89 @@
|
||||
--TEST--
|
||||
unpack of template converter: class unpacker (array: object: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
if (version_compare(PHP_VERSION, '5.1.0') <= 0)
|
||||
{
|
||||
$msgpack->setOption(MESSAGEPACK_OPT_PHPONLY, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
}
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata0";
|
||||
|
||||
$obj2 = new MyObj();
|
||||
$obj2->pdata = "pubdata1";
|
||||
|
||||
$ary = array($obj, $obj2);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (3) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (3) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
}
|
||||
}
|
||||
OK
|
88
php/tests/117.phpt
Normal file
88
php/tests/117.phpt
Normal file
@ -0,0 +1,88 @@
|
||||
--TEST--
|
||||
unpack of template converter: class unpacker (string: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj {
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$tpl = "MyObj";
|
||||
|
||||
test("recursive object /w string", $obj, $tpl, $obj);
|
||||
|
||||
--EXPECTF--
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
OK
|
96
php/tests/117b.phpt
Normal file
96
php/tests/117b.phpt
Normal file
@ -0,0 +1,96 @@
|
||||
--TEST--
|
||||
unpack of template converter: class unpacker (string: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
if (version_compare(PHP_VERSION, '5.1.0') <= 0)
|
||||
{
|
||||
$msgpack->setOption(MESSAGEPACK_OPT_PHPONLY, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
}
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$tpl = "MyObj";
|
||||
|
||||
test("recursive object /w string", $obj, $tpl, $obj);
|
||||
|
||||
--EXPECTF--
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
OK
|
89
php/tests/118.phpt
Normal file
89
php/tests/118.phpt
Normal file
@ -0,0 +1,89 @@
|
||||
--TEST--
|
||||
unpack of template converter: class unpacker (object: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$tpl = new MyObj();
|
||||
|
||||
test("recursive object /w instance", $obj, $tpl, $obj);
|
||||
|
||||
--EXPECTF--
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
OK
|
96
php/tests/118b.phpt
Normal file
96
php/tests/118b.phpt
Normal file
@ -0,0 +1,96 @@
|
||||
--TEST--
|
||||
unpack of template converter: class unpacker (object: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
if (version_compare(PHP_VERSION, '5.1.0') <= 0)
|
||||
{
|
||||
$msgpack->setOption(MESSAGEPACK_OPT_PHPONLY, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
}
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$tpl = new MyObj();
|
||||
|
||||
test("recursive object /w instance", $obj, $tpl, $obj);
|
||||
|
||||
--EXPECTF--
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
OK
|
94
php/tests/119.phpt
Normal file
94
php/tests/119.phpt
Normal file
@ -0,0 +1,94 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class: class unpacker (array: string: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$ary = array($obj);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object with object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
101
php/tests/119b.phpt
Normal file
101
php/tests/119b.phpt
Normal file
@ -0,0 +1,101 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class: class unpacker (array: string: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
if (version_compare(PHP_VERSION, '5.1.0') <= 0)
|
||||
{
|
||||
$msgpack->setOption(MESSAGEPACK_OPT_PHPONLY, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
}
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$ary = array($obj);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object with object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
93
php/tests/120.phpt
Normal file
93
php/tests/120.phpt
Normal file
@ -0,0 +1,93 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class: class unpacker (array: object: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj {
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$ary = array($obj);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("recursive object with object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
101
php/tests/120b.phpt
Normal file
101
php/tests/120b.phpt
Normal file
@ -0,0 +1,101 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class: class unpacker (array: object: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
if (version_compare(PHP_VERSION, '5.1.0') <= 0)
|
||||
{
|
||||
$msgpack->setOption(MESSAGEPACK_OPT_PHPONLY, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
}
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$ary = array($obj);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object with object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
115
php/tests/121.phpt
Normal file
115
php/tests/121.phpt
Normal file
@ -0,0 +1,115 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple variable: class unpacker (array: string: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary->subpdata = "subpubdata0";
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary->subpdata = "subpubdata1";
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata0"
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
122
php/tests/121b.phpt
Normal file
122
php/tests/121b.phpt
Normal file
@ -0,0 +1,122 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple variable: class unpacker (array: string: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
if (version_compare(PHP_VERSION, '5.1.0') <= 0)
|
||||
{
|
||||
$msgpack->setOption(MESSAGEPACK_OPT_PHPONLY, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
}
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary->subpdata = "subpubdata0";
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary->subpdata = "subpubdata1";
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata0"
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
115
php/tests/122.phpt
Normal file
115
php/tests/122.phpt
Normal file
@ -0,0 +1,115 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple variable: class unpacker (array: object: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary->subpdata = "subpubdata0";
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary->subpdata = "subpubdata1";
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("recursive object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata0"
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
122
php/tests/122b.phpt
Normal file
122
php/tests/122b.phpt
Normal file
@ -0,0 +1,122 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple variable: class unpacker (array: object: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
if (version_compare(PHP_VERSION, '5.1.0') <= 0)
|
||||
{
|
||||
$msgpack->setOption(MESSAGEPACK_OPT_PHPONLY, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
}
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary->subpdata = "subpubdata0";
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary->subpdata = "subpubdata1";
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("recursive object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata0"
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
145
php/tests/123.phpt
Normal file
145
php/tests/123.phpt
Normal file
@ -0,0 +1,145 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: class unpacker (array: string: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object list with object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
152
php/tests/123b.phpt
Normal file
152
php/tests/123b.phpt
Normal file
@ -0,0 +1,152 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: class unpacker (array: string: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
if (version_compare(PHP_VERSION, '5.1.0') <= 0)
|
||||
{
|
||||
$msgpack->setOption(MESSAGEPACK_OPT_PHPONLY, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
}
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object list with object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
145
php/tests/124.phpt
Normal file
145
php/tests/124.phpt
Normal file
@ -0,0 +1,145 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: class unpacker (array: object: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("recursive object list with object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
152
php/tests/124b.phpt
Normal file
152
php/tests/124b.phpt
Normal file
@ -0,0 +1,152 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: class unpacker (array: object: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
if (version_compare(PHP_VERSION, '5.1.0') <= 0)
|
||||
{
|
||||
$msgpack->setOption(MESSAGEPACK_OPT_PHPONLY, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
}
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("recursive object list with object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
167
php/tests/125.phpt
Normal file
167
php/tests/125.phpt
Normal file
@ -0,0 +1,167 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: class unpacker (array: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$arySubObj = array(
|
||||
"subdata" => "subdatadata",
|
||||
"subpriv" => "subprivdata",
|
||||
"subpdata" => null,
|
||||
);
|
||||
|
||||
$aryMyObj = array(
|
||||
"data" => "datadata",
|
||||
"priv" => "privdata",
|
||||
"pdata" => null,
|
||||
"subary" => array($arySubObj),
|
||||
);
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array($aryMyObj);
|
||||
$resary = array($aryMyObj, $aryMyObj);
|
||||
$resary[0]["pdata"] = "pubdata0";
|
||||
$resary[0]["subary"][] = $arySubObj;
|
||||
$resary[0]["subary"][0]["subpdata"] = "subpubdata00";
|
||||
$resary[0]["subary"][1]["subpdata"] = "subpdata01";
|
||||
$resary[1]["subary"][] = $arySubObj;
|
||||
$resary[1]["pdata"] = "pubdata1";
|
||||
$resary[1]["subary"][0]["subpdata"] = "subpubdata1";
|
||||
$resary[1]["subary"][1]["subpdata"] = "subpdata11";
|
||||
|
||||
test("recursive object list to associative array list", $ary, $tpl, $resary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(4) {
|
||||
["data"]=>
|
||||
string(8) "datadata"
|
||||
["priv"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
array(4) {
|
||||
["data"]=>
|
||||
string(8) "datadata"
|
||||
["priv"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
174
php/tests/125b.phpt
Normal file
174
php/tests/125b.phpt
Normal file
@ -0,0 +1,174 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: class unpacker (array: OPT_PHPONLY=false)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$msgpack = new MessagePack();
|
||||
if (version_compare(PHP_VERSION, '5.1.0') <= 0)
|
||||
{
|
||||
$msgpack->setOption(MESSAGEPACK_OPT_PHPONLY, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
$msgpack->setOption(MessagePack::OPT_PHPONLY, false);
|
||||
}
|
||||
|
||||
$serialized = $msgpack->pack($variable);
|
||||
|
||||
$unserialized = $msgpack->unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$arySubObj = array(
|
||||
"subdata" => "subdatadata",
|
||||
"subpriv" => "subprivdata",
|
||||
"subpdata" => null,
|
||||
);
|
||||
|
||||
$aryMyObj = array(
|
||||
"data" => "datadata",
|
||||
"priv" => "privdata",
|
||||
"pdata" => null,
|
||||
"subary" => array($arySubObj),
|
||||
);
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array($aryMyObj);
|
||||
$resary = array($aryMyObj, $aryMyObj);
|
||||
$resary[0]["pdata"] = "pubdata0";
|
||||
$resary[0]["subary"][] = $arySubObj;
|
||||
$resary[0]["subary"][0]["subpdata"] = "subpubdata00";
|
||||
$resary[0]["subary"][1]["subpdata"] = "subpdata01";
|
||||
$resary[1]["subary"][] = $arySubObj;
|
||||
$resary[1]["pdata"] = "pubdata1";
|
||||
$resary[1]["subary"][0]["subpdata"] = "subpubdata1";
|
||||
$resary[1]["subary"][1]["subpdata"] = "subpdata11";
|
||||
|
||||
test("recursive object list to associative array list", $ary, $tpl, $resary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(4) {
|
||||
["data"]=>
|
||||
string(8) "datadata"
|
||||
["priv"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
array(4) {
|
||||
["data"]=>
|
||||
string(8) "datadata"
|
||||
["priv"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
78
php/tests/126.phpt
Normal file
78
php/tests/126.phpt
Normal file
@ -0,0 +1,78 @@
|
||||
--TEST--
|
||||
unpack of template converter (array: string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata0";
|
||||
|
||||
$obj2 = new MyObj();
|
||||
$obj2->pdata = "pubdata1";
|
||||
|
||||
$ary = array($obj, $obj2);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (3) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (3) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
}
|
||||
}
|
||||
OK
|
78
php/tests/126b.phpt
Normal file
78
php/tests/126b.phpt
Normal file
@ -0,0 +1,78 @@
|
||||
--TEST--
|
||||
unpack of template converter (array: string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata0";
|
||||
|
||||
$obj2 = new MyObj();
|
||||
$obj2->pdata = "pubdata1";
|
||||
|
||||
$ary = array($obj, $obj2);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (3) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (3) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
}
|
||||
}
|
||||
OK
|
78
php/tests/127.phpt
Normal file
78
php/tests/127.phpt
Normal file
@ -0,0 +1,78 @@
|
||||
--TEST--
|
||||
unpack of template converter (array: object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata0";
|
||||
|
||||
$obj2 = new MyObj();
|
||||
$obj2->pdata = "pubdata1";
|
||||
|
||||
$ary = array($obj, $obj2);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (3) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (3) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
}
|
||||
}
|
||||
OK
|
78
php/tests/127b.phpt
Normal file
78
php/tests/127b.phpt
Normal file
@ -0,0 +1,78 @@
|
||||
--TEST--
|
||||
unpack of template converter (array: object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata0";
|
||||
|
||||
$obj2 = new MyObj();
|
||||
$obj2->pdata = "pubdata1";
|
||||
|
||||
$ary = array($obj, $obj2);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (3) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (3) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
}
|
||||
}
|
||||
OK
|
84
php/tests/128.phpt
Normal file
84
php/tests/128.phpt
Normal file
@ -0,0 +1,84 @@
|
||||
--TEST--
|
||||
unpack of template converter (string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj {
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$tpl = "MyObj";
|
||||
|
||||
test("recursive object /w string", $obj, $tpl, $obj);
|
||||
|
||||
--EXPECTF--
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
OK
|
85
php/tests/128b.phpt
Normal file
85
php/tests/128b.phpt
Normal file
@ -0,0 +1,85 @@
|
||||
--TEST--
|
||||
unpack of template converter (string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$tpl = "MyObj";
|
||||
|
||||
test("recursive object /w string", $obj, $tpl, $obj);
|
||||
|
||||
--EXPECTF--
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
OK
|
85
php/tests/129.phpt
Normal file
85
php/tests/129.phpt
Normal file
@ -0,0 +1,85 @@
|
||||
--TEST--
|
||||
unpack of template converter (object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$tpl = new MyObj();
|
||||
|
||||
test("recursive object /w instance", $obj, $tpl, $obj);
|
||||
|
||||
--EXPECTF--
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
OK
|
85
php/tests/129b.phpt
Normal file
85
php/tests/129b.phpt
Normal file
@ -0,0 +1,85 @@
|
||||
--TEST--
|
||||
unpack of template converter (object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$tpl = new MyObj();
|
||||
|
||||
test("recursive object /w instance", $obj, $tpl, $obj);
|
||||
|
||||
--EXPECTF--
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
OK
|
90
php/tests/130.phpt
Normal file
90
php/tests/130.phpt
Normal file
@ -0,0 +1,90 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class: (array: string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$ary = array($obj);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object with object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
90
php/tests/130b.phpt
Normal file
90
php/tests/130b.phpt
Normal file
@ -0,0 +1,90 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class: (array: string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$ary = array($obj);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object with object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
89
php/tests/131.phpt
Normal file
89
php/tests/131.phpt
Normal file
@ -0,0 +1,89 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class: (array: object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj {
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$ary = array($obj);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("recursive object with object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
90
php/tests/131b.phpt
Normal file
90
php/tests/131b.phpt
Normal file
@ -0,0 +1,90 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class: (array: object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj = new MyObj();
|
||||
$obj->pdata = "pubdata";
|
||||
$obj->subary->subpdata = "subpubdata";
|
||||
|
||||
$ary = array($obj);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object with object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(1) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(7) "pubdata"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpubdata"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
111
php/tests/132.phpt
Normal file
111
php/tests/132.phpt
Normal file
@ -0,0 +1,111 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple variable: (array: string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary->subpdata = "subpubdata0";
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary->subpdata = "subpubdata1";
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata0"
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
111
php/tests/132b.phpt
Normal file
111
php/tests/132b.phpt
Normal file
@ -0,0 +1,111 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple variable: (array: string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary->subpdata = "subpubdata0";
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary->subpdata = "subpubdata1";
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata0"
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
111
php/tests/133.phpt
Normal file
111
php/tests/133.phpt
Normal file
@ -0,0 +1,111 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple variable: (array: object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary->subpdata = "subpubdata0";
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary->subpdata = "subpubdata1";
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("recursive object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata0"
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
111
php/tests/133b.phpt
Normal file
111
php/tests/133b.phpt
Normal file
@ -0,0 +1,111 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple variable: (array: object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = new SubObj();
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary->subpdata = "subpubdata0";
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary->subpdata = "subpubdata1";
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("recursive object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata0"
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
141
php/tests/134.phpt
Normal file
141
php/tests/134.phpt
Normal file
@ -0,0 +1,141 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: (array: string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object list with object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
141
php/tests/134b.phpt
Normal file
141
php/tests/134b.phpt
Normal file
@ -0,0 +1,141 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: (array: string)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array("MyObj");
|
||||
|
||||
test("recursive object list with object list /w string", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
141
php/tests/135.phpt
Normal file
141
php/tests/135.phpt
Normal file
@ -0,0 +1,141 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: (array: object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("recursive object list with object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
[%r"?data"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "datadata"
|
||||
[%r"?priv"?:("MyObj":)?private"?%r]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
[%r"?subdata"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subdatadata"
|
||||
[%r"?subpriv"?:("SubObj":)?private"?%r]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
141
php/tests/135b.phpt
Normal file
141
php/tests/135b.phpt
Normal file
@ -0,0 +1,141 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: (array: object)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array(new MyObj());
|
||||
|
||||
test("recursive object list with object list /w instance", $ary, $tpl, $ary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(MyObj)#%d (4) {
|
||||
["data:private"]=>
|
||||
string(8) "datadata"
|
||||
["priv:private"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
object(SubObj)#%d (3) {
|
||||
["subdata:private"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv:private"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
163
php/tests/136.phpt
Normal file
163
php/tests/136.phpt
Normal file
@ -0,0 +1,163 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: (array)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') < 0) {
|
||||
echo "skip tests in PHP 5.2 or newer";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$arySubObj = array(
|
||||
"subdata" => "subdatadata",
|
||||
"subpriv" => "subprivdata",
|
||||
"subpdata" => null,
|
||||
);
|
||||
|
||||
$aryMyObj = array(
|
||||
"data" => "datadata",
|
||||
"priv" => "privdata",
|
||||
"pdata" => null,
|
||||
"subary" => array($arySubObj),
|
||||
);
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array($aryMyObj);
|
||||
$resary = array($aryMyObj, $aryMyObj);
|
||||
$resary[0]["pdata"] = "pubdata0";
|
||||
$resary[0]["subary"][] = $arySubObj;
|
||||
$resary[0]["subary"][0]["subpdata"] = "subpubdata00";
|
||||
$resary[0]["subary"][1]["subpdata"] = "subpdata01";
|
||||
$resary[1]["subary"][] = $arySubObj;
|
||||
$resary[1]["pdata"] = "pubdata1";
|
||||
$resary[1]["subary"][0]["subpdata"] = "subpubdata1";
|
||||
$resary[1]["subary"][1]["subpdata"] = "subpdata11";
|
||||
|
||||
test("recursive object list to associative array list", $ary, $tpl, $resary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(4) {
|
||||
["data"]=>
|
||||
string(8) "datadata"
|
||||
["priv"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
array(4) {
|
||||
["data"]=>
|
||||
string(8) "datadata"
|
||||
["priv"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
163
php/tests/136b.phpt
Normal file
163
php/tests/136b.phpt
Normal file
@ -0,0 +1,163 @@
|
||||
--TEST--
|
||||
unpack of template converter: multiple class/variable: class unpacker (array)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
echo "skip tests in PHP 5.1 or older";
|
||||
}
|
||||
--FILE--
|
||||
<?php
|
||||
if(!extension_loaded('msgpack'))
|
||||
{
|
||||
dl('msgpack.' . PHP_SHLIB_SUFFIX);
|
||||
}
|
||||
|
||||
//error_reporting(0);
|
||||
|
||||
function test($type, $variable, $object, $result = null)
|
||||
{
|
||||
$serialized = msgpack_pack($variable);
|
||||
$unserialized = msgpack_unpack($serialized, $object);
|
||||
|
||||
var_dump($unserialized);
|
||||
if ($result)
|
||||
{
|
||||
echo $unserialized == $result ? 'OK' : 'ERROR', PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
echo 'SKIP', PHP_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
class MyObj
|
||||
{
|
||||
private $data = null;
|
||||
private $priv = "privdata";
|
||||
public $pdata = null;
|
||||
public $subary = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->data = "datadata";
|
||||
$this->subary = array(new SubObj());
|
||||
}
|
||||
}
|
||||
|
||||
class SubObj
|
||||
{
|
||||
private $subdata = null;
|
||||
private $subpriv = "subprivdata";
|
||||
public $subpdata = null;
|
||||
|
||||
function __construct()
|
||||
{
|
||||
$this->subdata = "subdatadata";
|
||||
}
|
||||
}
|
||||
|
||||
$arySubObj = array(
|
||||
"subdata" => "subdatadata",
|
||||
"subpriv" => "subprivdata",
|
||||
"subpdata" => null,
|
||||
);
|
||||
|
||||
$aryMyObj = array(
|
||||
"data" => "datadata",
|
||||
"priv" => "privdata",
|
||||
"pdata" => null,
|
||||
"subary" => array($arySubObj),
|
||||
);
|
||||
|
||||
$obj0 = new MyObj();
|
||||
$obj0->pdata = "pubdata0";
|
||||
$obj0->subary[0]->subpdata = "subpubdata00";
|
||||
$subobj01 = new SubObj();
|
||||
$subobj01->subpdata = "subpdata01";
|
||||
$obj0->subary[1] = $subobj01;
|
||||
$obj1 = new MyObj();
|
||||
$obj1->pdata = "pubdata1";
|
||||
$obj1->subary[0]->subpdata = "subpubdata1";
|
||||
$subobj11 = new SubObj();
|
||||
$subobj11->subpdata = "subpdata11";
|
||||
$obj1->subary[1] = $subobj11;
|
||||
|
||||
$ary = array($obj0, $obj1);
|
||||
|
||||
$tpl = array($aryMyObj);
|
||||
$resary = array($aryMyObj, $aryMyObj);
|
||||
$resary[0]["pdata"] = "pubdata0";
|
||||
$resary[0]["subary"][] = $arySubObj;
|
||||
$resary[0]["subary"][0]["subpdata"] = "subpubdata00";
|
||||
$resary[0]["subary"][1]["subpdata"] = "subpdata01";
|
||||
$resary[1]["subary"][] = $arySubObj;
|
||||
$resary[1]["pdata"] = "pubdata1";
|
||||
$resary[1]["subary"][0]["subpdata"] = "subpubdata1";
|
||||
$resary[1]["subary"][1]["subpdata"] = "subpdata11";
|
||||
|
||||
test("recursive object list to associative array list", $ary, $tpl, $resary);
|
||||
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(4) {
|
||||
["data"]=>
|
||||
string(8) "datadata"
|
||||
["priv"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata0"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(12) "subpubdata00"
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata01"
|
||||
}
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
array(4) {
|
||||
["data"]=>
|
||||
string(8) "datadata"
|
||||
["priv"]=>
|
||||
string(8) "privdata"
|
||||
["pdata"]=>
|
||||
string(8) "pubdata1"
|
||||
["subary"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(11) "subpubdata1"
|
||||
}
|
||||
[1]=>
|
||||
array(3) {
|
||||
["subdata"]=>
|
||||
string(11) "subdatadata"
|
||||
["subpriv"]=>
|
||||
string(11) "subprivdata"
|
||||
["subpdata"]=>
|
||||
string(10) "subpdata11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OK
|
Loading…
x
Reference in New Issue
Block a user