PATH:
opt
/
alt
/
tests
/
alt-php83-pecl-igbinary_3.2.15-1.el8
/
tests
--TEST-- Check for double extremes --FILE-- <?php function str2bin($bytestring) { $len = strlen($bytestring); $output = ''; for ($i = 0; $i < $len; $i++) { $bin = decbin(ord($bytestring[$i])); $bin = str_pad($bin, 8, '0', STR_PAD_LEFT); $output .= $bin; } return $output; } function test($type, $variable, $validOutputs = null) { $serialized = igbinary_serialize($variable); $unserialized = igbinary_unserialize($serialized); echo $type, ":\n"; var_dump($variable); var_dump($unserialized); echo " 6 5 4 3 2 1\n"; echo "3210987654321098765432109876543210987654321098765432109876543210\n"; $output = substr($serialized, 5, 8); $binOutput = str2bin($output); if ($validOutputs === null) { echo $binOutput, "\n"; } else { echo in_array($binOutput, $validOutputs) ? "ACCEPTABLE" : ("UNACCEPTABLE : " . $binOutput); echo "\n"; } echo "\n"; } // subnormal number test('double subnormal', -4.944584125e-314); // max subnormal: sign 0, exponent 0, all 1 double // http://www.exploringbinary.com/php-hangs-on-numeric-value-2-2250738585072011e-308/ test('double 1 max subnormal', 2.2250738585072010e-308); test('double 2 max subnormal', 2.2250738585072011e-308); $validOutputs = array('0000000000010000000000000000000000000000000000000000000000000000', '0000000000001111111111111111111111111111111111111111111111111111'); test('double 3 max subnormal', 2.2250738585072012e-308, $validOutputs); test('double 4 max subnormal', 2.2250738585072013e-308, $validOutputs); test('double 5 max subnormal', 2.2250738585072014e-308); // min subnormal number test('double min subnormal', -4.9406564584124654e-324); // big double test('double big', -1.79769e308); // max double, sign 0, exponent all-1 - 1, mantissa all-1 test('double max', 1.7976931348623157e308); // small double test('double small', -2.225e-308); // min double, sign 1, exponent all-1 - 1, mantissa all-1 test('double min', -1.7976931348623157e308); --EXPECTF-- double subnormal: float(-4.944584125%S-314) float(-4.944584125%S-314) 6 5 4 3 2 1 3210987654321098765432109876543210987654321098765432109876543210 1000000000000000000000000000001001010100100001010011000101110110 double 1 max subnormal: float(2.2250738585072%SE-308) float(2.2250738585072%SE-308) 6 5 4 3 2 1 3210987654321098765432109876543210987654321098765432109876543210 0000000000001111111111111111111111111111111111111111111111111111 double 2 max subnormal: float(2.2250738585072%SE-308) float(2.2250738585072%SE-308) 6 5 4 3 2 1 3210987654321098765432109876543210987654321098765432109876543210 0000000000001111111111111111111111111111111111111111111111111111 double 3 max subnormal: float(2.2250738585072%SE-308) float(2.2250738585072%SE-308) 6 5 4 3 2 1 3210987654321098765432109876543210987654321098765432109876543210 ACCEPTABLE double 4 max subnormal: float(2.2250738585072%SE-308) float(2.2250738585072%SE-308) 6 5 4 3 2 1 3210987654321098765432109876543210987654321098765432109876543210 ACCEPTABLE double 5 max subnormal: float(2.2250738585072%SE-308) float(2.2250738585072%SE-308) 6 5 4 3 2 1 3210987654321098765432109876543210987654321098765432109876543210 0000000000010000000000000000000000000000000000000000000000000000 double min subnormal: float(-%SE-324) float(-%SE-324) 6 5 4 3 2 1 3210987654321098765432109876543210987654321098765432109876543210 1000000000000000000000000000000000000000000000000000000000000001 double big: float(-1.79769E+308) float(-1.79769E+308) 6 5 4 3 2 1 3210987654321098765432109876543210987654321098765432109876543210 1111111111101111111111111111110001010111110010101000001010101110 double max: float(1.7976931348623%SE+308) float(1.7976931348623%SE+308) 6 5 4 3 2 1 3210987654321098765432109876543210987654321098765432109876543210 0111111111101111111111111111111111111111111111111111111111111111 double small: float(-2.225E-308) float(-2.225E-308) 6 5 4 3 2 1 3210987654321098765432109876543210987654321098765432109876543210 1000000000001111111111111101110100110001101000000000110001101101 double min: float(-1.7976931348623%SE+308) float(-1.7976931348623%SE+308) 6 5 4 3 2 1 3210987654321098765432109876543210987654321098765432109876543210 1111111111101111111111111111111111111111111111111111111111111111
[+]
..
[-] igbinary_015.phpt
[edit]
[-] __serialize_005.phpt
[edit]
[-] igbinary_087.phpt
[edit]
[-] igbinary_014.phpt
[edit]
[-] igbinary_082_php74.phpt
[edit]
[-] igbinary_063_php7.phpt
[edit]
[-] typed_property_ref_overwrite.phpt
[edit]
[-] igbinary_bug72134.phpt
[edit]
[-] igbinary_020.phpt
[edit]
[-] __serialize_020.phpt
[edit]
[-] igbinary_063_php72.phpt
[edit]
[-] igbinary_048.phpt
[edit]
[-] __serialize_016.phpt
[edit]
[-] igbinary_046d.phpt
[edit]
[-] __serialize_013.phpt
[edit]
[-] igbinary_069.phpt
[edit]
[-] __serialize_014_php8.phpt
[edit]
[-] igbinary_084.phpt
[edit]
[-] igbinary_092.phpt
[edit]
[-] igbinary_025b.phpt
[edit]
[-] igbinary_057.phpt
[edit]
[-] igbinary_043.phpt
[edit]
[-] igbinary_enums_2.phpt
[edit]
[-] igbinary_004.phpt
[edit]
[-] igbinary_067.phpt
[edit]
[-] __serialize_004.phpt
[edit]
[-] igbinary_028.phpt
[edit]
[-] __serialize_010.phpt
[edit]
[-] igbinary_081.phpt
[edit]
[-] igbinary_070.phpt
[edit]
[-] __serialize_016_php8.phpt
[edit]
[-] igbinary_085.phpt
[edit]
[-] igbinary_094.phpt
[edit]
[-] igbinary_009b.phpt
[edit]
[-] igbinary_068.phpt
[edit]
[-] igbinary_034.phpt
[edit]
[-] igbinary_enums_1.phpt
[edit]
[-] igbinary_086.phpt
[edit]
[-] igbinary_enums_3_php83.phpt
[edit]
[-] igbinary_046b.phpt
[edit]
[-] igbinary_075.phpt
[edit]
[-] __serialize_011.phpt
[edit]
[-] php82_suppress_dynamic_properties_warning.inc
[edit]
[-] igbinary_024.phpt
[edit]
[-] igbinary_045c.phpt
[edit]
[-] igbinary_079.phpt
[edit]
[-] igbinary_015c.phpt
[edit]
[-] __serialize_018.phpt
[edit]
[-] __serialize_012.phpt
[edit]
[-] igbinary_084b.phpt
[edit]
[-] igbinary_058b.phpt
[edit]
[-] igbinary_040.phpt
[edit]
[-] igbinary_066.phpt
[edit]
[-] igbinary_022.phpt
[edit]
[-] igbinary_027.phpt
[edit]
[-] igbinary_016.phpt
[edit]
[-] igbinary_046c.phpt
[edit]
[-] igbinary_023.phpt
[edit]
[-] typed_property_ref_overwrite2.phpt
[edit]
[-] igbinary_041.phpt
[edit]
[-] igbinary_099.phpt
[edit]
[-] igbinary_098.phpt
[edit]
[-] igbinary_026b.phpt
[edit]
[-] igbinary_031.phpt
[edit]
[-] igbinary_030_php72.phpt
[edit]
[-] igbinary_053.phpt
[edit]
[-] igbinary_017.phpt
[edit]
[-] __serialize_017.phpt
[edit]
[-] igbinary_001.phpt
[edit]
[-] igbinary_096.phpt
[edit]
[-] igbinary_050.phpt
[edit]
[-] igbinary_088.phpt
[edit]
[-] igbinary_065.phpt
[edit]
[-] igbinary_026_php8.phpt
[edit]
[-] igbinary_049b.phpt
[edit]
[-] igbinary_009b_php8.phpt
[edit]
[-] __serialize_001.phpt
[edit]
[-] igbinary_078.phpt
[edit]
[-] igbinary_091.phpt
[edit]
[-] igbinary_021.phpt
[edit]
[-] igbinary_enums_3.phpt
[edit]
[-] igbinary_071.phpt
[edit]
[-] igbinary_018.phpt
[edit]
[-] igbinary_029.phpt
[edit]
[-] igbinary_046.phpt
[edit]
[-] __serialize_007.phpt
[edit]
[-] igbinary_003.phpt
[edit]
[-] __serialize_008.phpt
[edit]
[-] igbinary_005.phpt
[edit]
[-] igbinary_095.phpt
[edit]
[-] igbinary_033.phpt
[edit]
[-] igbinary_047.phpt
[edit]
[-] igbinary_076.phpt
[edit]
[-] igbinary_089.phpt
[edit]
[-] igbinary_072.phpt
[edit]
[-] igbinary_049.phpt
[edit]
[-] igbinary_077.phpt
[edit]
[-] igbinary_015b.phpt
[edit]
[-] igbinary_002.phpt
[edit]
[-] igbinary_073.phpt
[edit]
[-] igbinary_048b.phpt
[edit]
[-] igbinary_012.phpt
[edit]
[-] __serialize_019.phpt
[edit]
[-] igbinary_062.phpt
[edit]
[-] __serialize_002.phpt
[edit]
[-] __serialize_015.phpt
[edit]
[-] igbinary_089_32bit.phpt
[edit]
[-] igbinary_008.phpt
[edit]
[-] typed_property_refs_php74.phpt
[edit]
[-] igbinary_064.phpt
[edit]
[-] igbinary_010.phpt
[edit]
[-] igbinary_074.phpt
[edit]
[-] typed_property_ref_assignment_failure.phpt
[edit]
[-] typed_property_refs.phpt
[edit]
[-] igbinary_052.phpt
[edit]
[-] igbinary_009.phpt
[edit]
[-] __serialize_003.phpt
[edit]
[-] igbinary_032.phpt
[edit]
[-] igbinary_bug54662.phpt
[edit]
[-] igbinary_007.phpt
[edit]
[-] igbinary_097.phpt
[edit]
[-] __serialize_006.phpt
[edit]
[-] igbinary_044.phpt
[edit]
[-] __serialize_021.phpt
[edit]
[-] igbinary_013.phpt
[edit]
[-] igbinary_071_php8.phpt
[edit]
[-] sleep_mangled_name_clash.phpt
[edit]
[-] igbinary_022_php82.phpt
[edit]
[-] igbinary_051.phpt
[edit]
[-] igbinary_045b.phpt
[edit]
[-] igbinary_055.phpt
[edit]
[-] igbinary_030_php7.phpt
[edit]
[-] igbinary_082.phpt
[edit]
[-] igbinary_080.phpt
[edit]
[-] __serialize_022.phpt
[edit]
[-] igbinary_025.phpt
[edit]
[-] __serialize_013_php8.phpt
[edit]
[-] igbinary_059.phpt
[edit]
[-] igbinary_054.phpt
[edit]
[-] igbinary_093.phpt
[edit]
[-] __serialize_009.phpt
[edit]
[-] igbinary_006.phpt
[edit]
[-] igbinary_026b_php8.phpt
[edit]
[-] igbinary_058.phpt
[edit]
[-] igbinary_083.phpt
[edit]
[-] __serialize_014.phpt
[edit]
[-] igbinary_026.phpt
[edit]
[-] igbinary_090.phpt
[edit]