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:
advect 2011-07-28 08:15:38 +09:00
parent 3fb31f651d
commit 2e969e3a0a
75 changed files with 7946 additions and 93 deletions

View File

@ -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.

View File

@ -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();
}

View File

@ -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();
}

View File

@ -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))
{
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;
}
/* 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);
/* string */
if (ht->nNumOfElements != ht->nNextFreeElement)
{
zend_hash_internal_pointer_reset_ex(ht, &pos);
for (;; zend_hash_move_forward_ex(ht, &pos))
{
@ -222,9 +606,17 @@ int msgpack_convert_object(zval *return_value, zval *object, zval **value)
}
}
}
}
/* index */
properties = Z_OBJ_HT_P(return_value)->get_properties(
return_value TSRMLS_CC);
if (HASH_OF(tpl))
{
properties = HASH_OF(tpl);
}
zend_hash_internal_pointer_reset_ex(properties, &prop_pos);
zend_hash_internal_pointer_reset_ex(ht, &pos);
for (;; zend_hash_move_forward_ex(ht, &pos))
{
@ -272,11 +664,96 @@ int msgpack_convert_object(zval *return_value, zval *object, zval **value)
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;
}
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) can't get data value by index",
__FUNCTION__);
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);
}
}
}
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)
@ -287,6 +764,31 @@ int msgpack_convert_object(zval *return_value, zval *object, zval **value)
}
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;
}

View File

@ -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

View File

@ -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>

View File

@ -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

View File

@ -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)

View File

@ -21,12 +21,15 @@ $datas = array(
error_reporting(0);
foreach ($datas as $data) {
foreach ($datas as $data)
{
$str = msgpack_serialize($data);
$len = strlen($str);
for ($j = 0; $j < 200; $j++) {
for ($i = 0; $i < $len - 1; $i++) {
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;

81
php/tests/104.phpt Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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