michael@0: const Ci = Components.interfaces; michael@0: const Cc = Components.classes; michael@0: const CC = Components.Constructor; michael@0: michael@0: function CreateScriptableConverter() michael@0: { michael@0: var ScriptableUnicodeConverter = michael@0: CC("@mozilla.org/intl/scriptableunicodeconverter", michael@0: "nsIScriptableUnicodeConverter"); michael@0: michael@0: return new ScriptableUnicodeConverter(); michael@0: } michael@0: michael@0: function checkDecode(converter, charset, inText, expectedText) michael@0: { michael@0: try { michael@0: converter.charset = charset; michael@0: } catch(e) { michael@0: converter.charset = "iso-8859-1"; michael@0: } michael@0: michael@0: dump("testing decoding from " + charset + " to Unicode.\n"); michael@0: try { michael@0: var outText = converter.ConvertToUnicode(inText) + converter.Finish(); michael@0: } catch(e) { michael@0: outText = "\ufffd"; michael@0: } michael@0: do_check_eq(outText, expectedText); michael@0: } michael@0: michael@0: function checkEncode(converter, charset, inText, expectedText) michael@0: { michael@0: try { michael@0: converter.charset = charset; michael@0: } catch(e) { michael@0: converter.charset = "iso-8859-1"; michael@0: } michael@0: michael@0: dump("testing encoding from Unicode to " + charset + "\n"); michael@0: var outText = converter.ConvertFromUnicode(inText) + converter.Finish(); michael@0: do_check_eq(outText, expectedText); michael@0: } michael@0: michael@0: function testDecodeAliases() michael@0: { michael@0: var converter = CreateScriptableConverter(); michael@0: for (var i = 0; i < aliases.length; ++i) { michael@0: checkDecode(converter, aliases[i], inString, expectedString); michael@0: } michael@0: } michael@0: michael@0: function testEncodeAliases() michael@0: { michael@0: var converter = CreateScriptableConverter(); michael@0: for (var i = 0; i < aliases.length; ++i) { michael@0: checkEncode(converter, aliases[i], inString, expectedString); michael@0: } michael@0: } michael@0: michael@0: function testDecodeAliasesInternal() michael@0: { michael@0: var converter = CreateScriptableConverter(); michael@0: converter.isInternal = true; michael@0: for (var i = 0; i < aliases.length; ++i) { michael@0: checkDecode(converter, aliases[i], inString, expectedString); michael@0: } michael@0: } michael@0: michael@0: function testEncodeAliasesInternal() michael@0: { michael@0: var converter = CreateScriptableConverter(); michael@0: converter.isInternal = true; michael@0: for (var i = 0; i < aliases.length; ++i) { michael@0: checkEncode(converter, aliases[i], inString, expectedString); michael@0: } michael@0: }