michael@0: var Ci = Components.interfaces, michael@0: Cc = Components.classes, michael@0: CC = Components.Constructor; michael@0: var converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"] michael@0: .createInstance(Ci.nsIScriptableUnicodeConverter); michael@0: converter.charset = "UTF-8"; michael@0: michael@0: var SIS = CC("@mozilla.org/scriptableinputstream;1", michael@0: "nsIScriptableInputStream", michael@0: "init"); michael@0: michael@0: function test_char(code) { michael@0: dump("test_char(0x" + code.toString(16) + ")\n"); michael@0: var original = String.fromCharCode(code); michael@0: var nativeStream = converter.convertToInputStream(original); michael@0: var stream = new SIS(nativeStream); michael@0: var utf8Result = stream.read(stream.available()); michael@0: stream.close(); michael@0: var result = converter.ConvertToUnicode(utf8Result); michael@0: do_check_eq(escape(original), escape(result)); michael@0: } michael@0: michael@0: function run_test() { michael@0: // This is not a very comprehensive test. michael@0: for (var i = 0x007f - 2; i <= 0x007f; i++) michael@0: test_char(i); michael@0: for (i = 0x07ff - 2; i <= 0x07ff; i++) michael@0: test_char(i); michael@0: for (i = 0x1000 - 2; i <= 0x1000 + 2; i++) michael@0: test_char(i); michael@0: for (i = 0xe000; i <= 0xe000 + 2; i++) michael@0: test_char(i); michael@0: }