head_charsetConversionTests.js (2935B)
1 var CC = Components.Constructor; 2 3 function CreateScriptableConverter() { 4 var ScriptableUnicodeConverter = CC( 5 "@mozilla.org/intl/scriptableunicodeconverter", 6 "nsIScriptableUnicodeConverter" 7 ); 8 9 return new ScriptableUnicodeConverter(); 10 } 11 12 function checkDecode(converter, charset, inText, expectedText) { 13 try { 14 converter.charset = charset; 15 } catch (e) { 16 converter.charset = "iso-8859-1"; 17 } 18 19 dump("testing decoding from " + charset + " to Unicode.\n"); 20 try { 21 var outText = converter.ConvertToUnicode(inText); 22 } catch (e) { 23 outText = "\ufffd"; 24 } 25 26 if (outText != expectedText) { 27 for (var i = 0; i < inText.length; ++i) { 28 var inn = inText[i]; 29 var out = outText[i]; 30 var expected = expectedText[i]; 31 if (out != expected) { 32 dump( 33 "Decoding error at position " + 34 i + 35 ": for input " + 36 escape(inn) + 37 " expected " + 38 escape(expected) + 39 " but got " + 40 escape(out) + 41 "\n" 42 ); 43 } 44 } 45 } 46 Assert.equal(outText, expectedText); 47 } 48 49 function checkEncode(converter, charset, inText, expectedText) { 50 try { 51 converter.charset = charset; 52 } catch (e) { 53 converter.charset = "iso-8859-1"; 54 } 55 56 dump("testing encoding from Unicode to " + charset + "\n"); 57 var outText = converter.ConvertFromUnicode(inText) + converter.Finish(); 58 59 if (outText != expectedText) { 60 for (var i = 0; i < inText.length; ++i) { 61 var inn = inText[i]; 62 var out = outText[i]; 63 var expected = expectedText[i]; 64 if (out != expected) { 65 dump( 66 "Encoding error at position " + 67 i + 68 ": for input " + 69 escape(inn) + 70 " expected " + 71 escape(expected) + 72 " but got " + 73 escape(out) + 74 "\n" 75 ); 76 } 77 } 78 } 79 Assert.equal(outText, expectedText); 80 } 81 82 function testDecodeAliases(aliases, inString, expectedString) { 83 var converter = CreateScriptableConverter(); 84 for (var i = 0; i < aliases.length; ++i) { 85 checkDecode(converter, aliases[i], inString, expectedString); 86 } 87 } 88 89 function testEncodeAliases(aliases, inString, expectedString) { 90 var converter = CreateScriptableConverter(); 91 for (var i = 0; i < aliases.length; ++i) { 92 checkEncode(converter, aliases[i], inString, expectedString); 93 } 94 } 95 96 function testDecodeAliasesInternal(aliases, inString, expectedString) { 97 var converter = CreateScriptableConverter(); 98 converter.isInternal = true; 99 for (var i = 0; i < aliases.length; ++i) { 100 checkDecode(converter, aliases[i], inString, expectedString); 101 } 102 } 103 104 function testEncodeAliasesInternal(aliases, inString, expectedString) { 105 var converter = CreateScriptableConverter(); 106 converter.isInternal = true; 107 for (var i = 0; i < aliases.length; ++i) { 108 checkEncode(converter, aliases[i], inString, expectedString); 109 } 110 }