diff options
Diffstat (limited to 'intl/uconv/tests/unit/CharsetConversionTests.js')
-rw-r--r-- | intl/uconv/tests/unit/CharsetConversionTests.js | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/intl/uconv/tests/unit/CharsetConversionTests.js b/intl/uconv/tests/unit/CharsetConversionTests.js new file mode 100644 index 000000000..72480a5f8 --- /dev/null +++ b/intl/uconv/tests/unit/CharsetConversionTests.js @@ -0,0 +1,98 @@ +var Ci = Components.interfaces; +var Cc = Components.classes; +var CC = Components.Constructor; + +function CreateScriptableConverter() +{ + var ScriptableUnicodeConverter = + CC("@mozilla.org/intl/scriptableunicodeconverter", + "nsIScriptableUnicodeConverter"); + + return new ScriptableUnicodeConverter(); +} + +function checkDecode(converter, charset, inText, expectedText) +{ + try { + converter.charset = charset; + } catch(e) { + converter.charset = "iso-8859-1"; + } + + dump("testing decoding from " + charset + " to Unicode.\n"); + try { + var outText = converter.ConvertToUnicode(inText); + } catch(e) { + outText = "\ufffd"; + } + + if (outText != expectedText) { + for (var i = 0; i < inText.length; ++i) { + var inn = inText[i]; + var out = outText[i]; + var expected = expectedText[i]; + if (out != expected) { + dump("Decoding error at position " + i + ": for input " + escape(inn) + " expected " + escape(expected) + " but got " + escape(out) + "\n"); + } + } + } + do_check_eq(outText, expectedText); +} + +function checkEncode(converter, charset, inText, expectedText) +{ + try { + converter.charset = charset; + } catch(e) { + converter.charset = "iso-8859-1"; + } + + dump("testing encoding from Unicode to " + charset + "\n"); + var outText = converter.ConvertFromUnicode(inText) + converter.Finish(); + + if (outText != expectedText) { + for (var i = 0; i < inText.length; ++i) { + var inn = inText[i]; + var out = outText[i]; + var expected = expectedText[i]; + if (out != expected) { + dump("Encoding error at position " + i + ": for input " + escape(inn) + " expected " + escape(expected) + " but got " + escape(out) + "\n"); + } + } + } + do_check_eq(outText, expectedText); +} + +function testDecodeAliases() +{ + var converter = CreateScriptableConverter(); + for (var i = 0; i < aliases.length; ++i) { + checkDecode(converter, aliases[i], inString, expectedString); + } +} + +function testEncodeAliases() +{ + var converter = CreateScriptableConverter(); + for (var i = 0; i < aliases.length; ++i) { + checkEncode(converter, aliases[i], inString, expectedString); + } +} + +function testDecodeAliasesInternal() +{ + var converter = CreateScriptableConverter(); + converter.isInternal = true; + for (var i = 0; i < aliases.length; ++i) { + checkDecode(converter, aliases[i], inString, expectedString); + } +} + +function testEncodeAliasesInternal() +{ + var converter = CreateScriptableConverter(); + converter.isInternal = true; + for (var i = 0; i < aliases.length; ++i) { + checkEncode(converter, aliases[i], inString, expectedString); + } +} |