diff --git a/Zend/tests/offsets/ArrayAccess_container_offset_behaviour.phpt b/Zend/tests/offsets/ArrayAccess_container_offset_behaviour.phpt index 5a5fab352be31..b45b373c7b640 100644 --- a/Zend/tests/offsets/ArrayAccess_container_offset_behaviour.phpt +++ b/Zend/tests/offsets/ArrayAccess_container_offset_behaviour.phpt @@ -123,6 +123,37 @@ foreach (['A', 'B'] as $class) { EXPECTED_OUTPUT ); + if ($varOutput !== $expected_output) { + file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "debug_ArrayAccess_container_{$failuresNb}.txt", $varOutput); + ++$failuresNb; + $failures[] = $error; + } + ++$testCasesTotal; + } + /* Using offsets as references */ + foreach ($offsets as $offset) { + $dimension = &$offset; + $container = new $class(); + $error = "(new $class())[&" . zend_test_var_export($dimension) . '] has different outputs' . "\n"; + ob_start(); + var_dump($dimension); + $var_dump_output = ob_get_clean(); + + include $var_dim_filename; + $varOutput = ob_get_contents(); + ob_clean(); + $varOutput = str_replace( + [$var_dim_filename], + ['%s'], + $varOutput + ); + + $expected_output = str_replace( + ["VAR_DUMP_OF_OFFSET\n", "CLASS_NAME"], + [$var_dump_output, $class], + EXPECTED_OUTPUT + ); + if ($varOutput !== $expected_output) { file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "debug_ArrayAccess_container_{$failuresNb}.txt", $varOutput); ++$failuresNb; diff --git a/Zend/tests/offsets/ArrayObject_container_offset_behaviour.phpt b/Zend/tests/offsets/ArrayObject_container_offset_behaviour.phpt index ae4685f093eec..7b3efbbb02de4 100644 --- a/Zend/tests/offsets/ArrayObject_container_offset_behaviour.phpt +++ b/Zend/tests/offsets/ArrayObject_container_offset_behaviour.phpt @@ -332,6 +332,37 @@ foreach ($offsets as $dimension) { } ++$testCasesTotal; } +/* Using offsets as references */ +foreach ($offsets as $offset) { + $dimension = &$offset; + $container = new ArrayObject(); + $error = '(new ArrayObject())[&' . zend_test_var_export($dimension) . '] has different outputs' . "\n"; + ob_start(); + var_dump($dimension); + $var_dump_output = ob_get_clean(); + + include $var_dim_filename; + $varOutput = ob_get_contents(); + ob_clean(); + $varOutput = str_replace( + [$var_dim_filename], + ['%s'], + $varOutput + ); + + if ( + !preg_match($EXPECTED_OUTPUT_VALID_OFFSETS_REGEX, $varOutput) + && !preg_match($EXPECTED_OUTPUT_INVALID_OFFSETS_REGEX, $varOutput) + && !preg_match($EXPECTED_OUTPUT_FLOAT_OFFSETS_REGEX, $varOutput) + && $varOutput !== EXPECTED_OUTPUT_NULL_OFFSET + && $varOutput !== EXPECTED_OUTPUT_RESOURCE_STDERR_OFFSETS + ) { + file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "debug_ArrayObject_container_{$failuresNb}.txt", $varOutput); + ++$failuresNb; + $failures[] = $error; + } + ++$testCasesTotal; +} ob_end_clean(); echo "Executed tests\n"; diff --git a/Zend/tests/offsets/array_container_offset_behaviour.phpt b/Zend/tests/offsets/array_container_offset_behaviour.phpt index 2755e9452593a..793108a4ee566 100644 --- a/Zend/tests/offsets/array_container_offset_behaviour.phpt +++ b/Zend/tests/offsets/array_container_offset_behaviour.phpt @@ -281,6 +281,33 @@ foreach ($offsets as $dimension) { } ++$testCasesTotal; } +/* Using offsets as references */ +foreach ($offsets as $offset) { + $dimension = &$offset; + $container = []; + $error = '[][&' . zend_test_var_export($dimension) . '] has different outputs' . "\n"; + + include $var_dim_filename; + $varOutput = ob_get_contents(); + ob_clean(); + $varOutput = str_replace( + [$var_dim_filename], + ['%s'], + $varOutput + ); + + if ( + !preg_match($EXPECTED_OUTPUT_VALID_OFFSETS_REGEX, $varOutput) + && !preg_match($EXPECTED_OUTPUT_INVALID_OFFSETS_REGEX, $varOutput) + && !preg_match($EXPECTED_OUTPUT_FLOAT_OFFSETS_REGEX, $varOutput) + && $varOutput !== EXPECTED_OUTPUT_RESOURCE_STDERR_OFFSETS + ) { + file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "debug_array_container_{$failuresNb}.txt", $varOutput); + ++$failuresNb; + $failures[] = $error; + } + ++$testCasesTotal; +} ob_end_clean(); echo "Executed tests\n"; diff --git a/Zend/tests/offsets/false_container_offset_behaviour.phpt b/Zend/tests/offsets/false_container_offset_behaviour.phpt index e90577d634b5c..8a6cd93b72609 100644 --- a/Zend/tests/offsets/false_container_offset_behaviour.phpt +++ b/Zend/tests/offsets/false_container_offset_behaviour.phpt @@ -288,6 +288,33 @@ foreach ($offsets as $dimension) { } ++$testCasesTotal; } +/* Using offsets as references */ +foreach ($offsets as $offset) { + $dimension = &$offset; + $container = false; + $error = 'false[&' . zend_test_var_export($dimension) . '] has different outputs' . "\n"; + + include $var_dim_filename; + $varOutput = ob_get_contents(); + ob_clean(); + $varOutput = str_replace( + [$var_dim_filename], + ['%s'], + $varOutput + ); + + if ( + !preg_match($EXPECTED_OUTPUT_VALID_OFFSETS_REGEX, $varOutput) + && !preg_match($EXPECTED_OUTPUT_INVALID_OFFSETS_REGEX, $varOutput) + && !preg_match($EXPECTED_OUTPUT_FLOAT_OFFSETS_REGEX, $varOutput) + && $varOutput !== EXPECTED_OUTPUT_RESOURCE_STDERR_OFFSETS + ) { + file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "debug_false_container_{$failuresNb}.txt", $varOutput); + ++$failuresNb; + $failures[] = $error; + } + ++$testCasesTotal; +} ob_end_clean(); echo "Executed tests\n"; diff --git a/Zend/tests/offsets/invalid_container_offset_behaviour.phpt b/Zend/tests/offsets/invalid_container_offset_behaviour.phpt index 2a403d339f868..f904481c7d9d3 100644 --- a/Zend/tests/offsets/invalid_container_offset_behaviour.phpt +++ b/Zend/tests/offsets/invalid_container_offset_behaviour.phpt @@ -80,7 +80,27 @@ OUTPUT; } ++$testCasesTotal; } + /* Using offsets as references */ + foreach ($offsets as $offset) { + $dimension = &$offset; + $error = $containerStr . '[&' . zend_test_var_export($dimension) . '] has different outputs' . "\n"; + include $var_dim_filename; + $varOutput = ob_get_contents(); + ob_clean(); + $varOutput = str_replace( + [$var_dim_filename], + ['%s'], + $varOutput + ); + + if ($EXPECTED_OUTPUT !== $varOutput) { + file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "debug_invalid_container_{$failuresNb}.txt", $varOutput); + ++$failuresNb; + $failures[] = $error; + } + ++$testCasesTotal; + } } ob_end_clean(); diff --git a/Zend/tests/offsets/null_container_offset_behaviour.phpt b/Zend/tests/offsets/null_container_offset_behaviour.phpt index e80ff059469df..0fe02556d3e09 100644 --- a/Zend/tests/offsets/null_container_offset_behaviour.phpt +++ b/Zend/tests/offsets/null_container_offset_behaviour.phpt @@ -280,6 +280,33 @@ foreach ($offsets as $dimension) { } ++$testCasesTotal; } +/* Using offsets as references */ +foreach ($offsets as $offset) { + $dimension = &$offset; + $container = null; + $error = 'null[&' . zend_test_var_export($offset) . '] has different outputs' . "\n"; + + include $var_dim_filename; + $varOutput = ob_get_contents(); + ob_clean(); + $varOutput = str_replace( + [$var_dim_filename], + ['%s'], + $varOutput + ); + + if ( + !preg_match($EXPECTED_OUTPUT_VALID_OFFSETS_REGEX, $varOutput) + && !preg_match($EXPECTED_OUTPUT_INVALID_OFFSETS_REGEX, $varOutput) + && !preg_match($EXPECTED_OUTPUT_FLOAT_OFFSETS_REGEX, $varOutput) + && $varOutput !== EXPECTED_OUTPUT_RESOURCE_STDERR_OFFSETS + ) { + file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "debug_null_container_{$failuresNb}.txt", $varOutput); + ++$failuresNb; + $failures[] = $error; + } + ++$testCasesTotal; +} ob_end_clean(); echo "Executed tests\n"; diff --git a/Zend/tests/offsets/object_container_offset_behaviour.phpt b/Zend/tests/offsets/object_container_offset_behaviour.phpt index afe9f51f3d4e9..5770b1e88123f 100644 --- a/Zend/tests/offsets/object_container_offset_behaviour.phpt +++ b/Zend/tests/offsets/object_container_offset_behaviour.phpt @@ -62,6 +62,28 @@ foreach ($offsets as $dimension) { } ++$testCasesTotal; } +/* Using offsets as references */ +foreach ($offsets as $offset) { + $dimension = &$offset; + $container = new stdClass(); + $error = '(new stdClass())[&' . zend_test_var_export($offset) . '] has different outputs' . "\n"; + + include $var_dim_filename; + $varOutput = ob_get_contents(); + ob_clean(); + $varOutput = str_replace( + [$var_dim_filename], + ['%s'], + $varOutput + ); + + if ($varOutput !== EXPECTED_OUTPUT) { + file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "debug_object_container_{$failuresNb}.txt", $varOutput); + ++$failuresNb; + $failures[] = $error; + } + ++$testCasesTotal; +} ob_end_clean(); echo "Executed tests\n"; diff --git a/Zend/tests/offsets/string_container_offset_behaviour.phpt b/Zend/tests/offsets/string_container_offset_behaviour.phpt index 55427957f7afb..dc4c95e5d9ec5 100644 --- a/Zend/tests/offsets/string_container_offset_behaviour.phpt +++ b/Zend/tests/offsets/string_container_offset_behaviour.phpt @@ -661,6 +661,40 @@ foreach ($offsets as $dimension) { } ++$testCasesTotal; } +/* Using offsets as references */ +foreach ($offsets as $offset) { + $dimension = &$offset; + $container = ''; + $error = '""[&' . zend_test_var_export($offset) . '] has different outputs' . "\n"; + + include $var_dim_filename; + $varOutput = ob_get_contents(); + ob_clean(); + $varOutput = str_replace( + [$var_dim_filename], + ['%s'], + $varOutput + ); + + if ( + !preg_match($EXPECTED_OUTPUT_VALID_OFFSETS_REGEX, $varOutput) + && !preg_match($EXPECTED_OUTPUT_VALID_OFFSETS_OUT_OF_RANGE_REGEX, $varOutput) + && !preg_match($EXPECTED_OUTPUT_STRING_CAST_OFFSETS_REGEX, $varOutput) + && !preg_match($EXPECTED_OUTPUT_STRING_CAST_OFFSETS_TO_0_REGEX, $varOutput) + && !preg_match($EXPECTED_OUTPUT_STRING_CAST_OFFSETS_OUT_OF_RANGE_REGEX, $varOutput) + && !preg_match($EXPECTF_OUTPUT_FLOAT_OFFSETS_OUT_OF_RANGE_REGEX, $varOutput) + && !preg_match($EXPECTED_OUTPUT_FLOAT_INF_NAN_OFFSETS_REGEX, $varOutput) + && !preg_match($EXPECTED_OUTPUT_INVALID_OFFSETS_REGEX, $varOutput) + && $varOutput !== EXPECTED_OUTPUT_INVALID_OFFSETS_AS_STRINGS + && !preg_match($EXPECTED_OUTPUT_INVALID_OFFSETS_AS_LEADING_NUMERIC_STRINGS_REGEX, $varOutput) + && !preg_match($EXPECTED_OUTPUT_INVALID_OFFSETS_AS_LEADING_NUMERIC_STRINGS_TO_0_REGEX, $varOutput) + ) { + file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "debug_string_container_{$failuresNb}.txt", $varOutput); + ++$failuresNb; + $failures[] = $error; + } + ++$testCasesTotal; +} ob_end_clean(); echo "Executed tests\n";