diff -r 000000000000 -r 6474c204b198 intl/uconv/tests/unit/test_bug449578.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/intl/uconv/tests/unit/test_bug449578.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,55 @@ +/* Tests conversion from ISO-2022-KR to Unicode (bug 449578) + */ + +// designator sequence at beginning of line - legal +const in1 = "%1B$)C%0E0!3*4Y6s%0F 1234"; +// empty non-ASCII sequence -- illegal +const in2 = "%1B$)Cab%0E%0Fcd"; +// designator sequence not at beginning of line - illegal +const in3 = "abc %1B$)C%0E0!3*4Y6s%0F 1234"; + +const expected1 = "\uAC00\uB098\uB2E4\uB77C 1234"; +const expected2 = "ab\uFFFD\cd"; +const expected3 = "abc \u001B$)C\uAC00\uB098\uB2E4\uB77C 1234"; + +function testCase(inStr, expected) +{ + var dataURI = "data:text/plain;charset=ISO-2022-KR," + inStr; + + var IOService = Components.Constructor("@mozilla.org/network/io-service;1", + "nsIIOService"); + var ConverterInputStream = + Components.Constructor("@mozilla.org/intl/converter-input-stream;1", + "nsIConverterInputStream", + "init"); + + var ios = new IOService(); + var channel = ios.newChannel(dataURI, "", null); + var testInputStream = channel.open(); + var testConverter = new ConverterInputStream(testInputStream, + "ISO-2022-KR", + 8192, + 0xFFFD); + + if (!(testConverter instanceof + Components.interfaces.nsIUnicharLineInputStream)) + throw "not line input stream"; + + var outStr = ""; + var more; + do { + // read the line and check for eof + var line = {}; + more = testConverter.readLine(line); + outStr += line.value; + } while (more); + + do_check_eq(outStr, expected); +} + +function run_test() +{ + testCase(in1, expected1); + testCase(in2, expected2); + testCase(in3, expected3); +}