testTruncatedChars($truncated, 'ARMSCII-8', 'UTF-16BE', "\x00%");
echo "Tested ARMSCII-8 -> UTF-16BE\n";
-findInvalidChars($fromUnicode, $invalid, $unused, map(range(0,0xFF), 2));
+findInvalidChars($fromUnicode, $invalid, $unused, array_fill_keys(range(0,0xFF), 2));
convertAllInvalidChars($invalid, $fromUnicode, 'UTF-16BE', 'ARMSCII-8', '%');
echo "Tested UTF-16BE -> ARMSCII-8\n";
?>
}
}
-// Helper for building `$startBytes` map for above function
-function map($keys, $value, $array = array()) {
- foreach ($keys as $key)
- $array[$key] = $value;
- return $array;
-}
-
function testEncodingFromUTF16ConversionTable($path, $encoding, $replacement = '%', $startBytes = array()) {
srand(1000); // Make results consistent
mb_substitute_character(0x25); // '%'
testTruncatedChars($truncated, $encoding, 'UTF-16BE', "\x00%");
echo "Tested $encoding -> UTF-16BE\n";
- findInvalidChars($fromUnicode, $invalid, $unused, map(range(0,0xFF), 2));
+ findInvalidChars($fromUnicode, $invalid, $unused, array_fill_keys(range(0,0xFF), 2));
convertAllInvalidChars($invalid, $fromUnicode, 'UTF-16BE', $encoding, $replacement);
echo "Tested UTF-16BE -> $encoding\n";
}
/* Likewise with 0x005C */
$fromUnicode["\x00\x00\x00\x5C"] = "\x5C";
-findInvalidChars($validChars, $invalidChars, $truncated, map(range(0xA1, 0xFE), 2, array(0x8E => 2, 0x8F => 3)));
+findInvalidChars($validChars, $invalidChars, $truncated, array_fill_keys(range(0xA1, 0xFE), 2) + array(0x8E => 2, 0x8F => 3));
/* In the JIS X 0212 character set, kuten code 0x2237 (EUC-JP 0x8FA2B7)
* is an ordinary tilde character
testValidString("\x8F\xA2\xB7", "\x00\x00\x00~", 'EUC-JP', 'UTF-32BE', false);
echo "Irreversible mapping of 0x8FA2B7 follows JIS X 0212 correctly\n";
+testAllValidChars($fromUnicode, 'UTF-32BE', 'EUC-JP', false);
+echo "Unicode -> EUC-JP conversion works on all valid characters\n";
+
$invalidChars = array();
for ($cp = 0; $cp <= 0xFFFF; $cp++) {
$char = pack('N', $cp);
Encoding verification and conversion work for all valid characters
Encoding verification and conversion work for all invalid characters
Irreversible mapping of 0x8FA2B7 follows JIS X 0212 correctly
+Unicode -> EUC-JP conversion works on all valid characters
Unicode -> EUC-JP conversion works on all invalid characters
echo "SJIS verification and conversion works on all valid characters\n";
findInvalidChars($validChars, $invalidChars, $truncated,
- map(range(0x81, 0x9F), 2, map(range(0xE0, 0xEF), 2)));
+ array_fill_keys(range(0x81, 0x9F), 2) + array_fill_keys(range(0xE0, 0xEF), 2));
testAllInvalidChars($invalidChars, $validChars, 'Shift-JIS', 'UTF-16BE', "\x00%");
testTruncatedChars($truncated, 'Shift-JIS', 'UTF-16BE', "\x00%");
echo "SJIS verification and conversion works on all invalid characters\n";
-findInvalidChars($fromUnicode, $invalidChars, $unused, map(range(0, 0xFF), 2));
+testAllValidChars($fromUnicode, 'UTF-16BE', 'Shift-JIS', false);
+echo "Unicode -> SJIS conversion works on all valid characters\n";
+
+findInvalidChars($fromUnicode, $invalidChars, $unused, array_fill_keys(range(0, 0xFF), 2));
convertAllInvalidChars($invalidChars, $fromUnicode, 'UTF-16BE', 'Shift-JIS', '%');
echo "Unicode -> SJIS conversion works on all invalid characters\n";
?>
--EXPECT--
SJIS verification and conversion works on all valid characters
SJIS verification and conversion works on all invalid characters
+Unicode -> SJIS conversion works on all valid characters
Unicode -> SJIS conversion works on all invalid characters