Make all charset aliases lower-case, and add unit test for MacRoman. Bug 512060, r=Masatoshi Kimura <VYV03354@nifty.ne.jp>
authorSimon Montagu <smontagu@smontagu.org>
Sun, 23 Aug 2009 06:22:30 -0700
changeset 31765 1be54db4e40c90c20e65cac5332752d16753151f
parent 31764 30ead1e194782ab1a50df60c16de266ba8affe84
child 31766 d417a85ce9f7fb1ef7fab824762bf4b8cdf02daf
push id8713
push usersmontagu@mozilla.com
push dateSun, 23 Aug 2009 13:23:44 +0000
treeherdermozilla-central@1be54db4e40c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersMasatoshi
bugs512060
milestone1.9.3a1pre
Make all charset aliases lower-case, and add unit test for MacRoman. Bug 512060, r=Masatoshi Kimura <VYV03354@nifty.ne.jp>
intl/uconv/src/charsetalias.properties
intl/uconv/tests/unit/test_decode_CP850.js
intl/uconv/tests/unit/test_decode_CP852.js
intl/uconv/tests/unit/test_decode_CP855.js
intl/uconv/tests/unit/test_decode_CP857.js
intl/uconv/tests/unit/test_decode_CP862.js
intl/uconv/tests/unit/test_decode_CP864.js
intl/uconv/tests/unit/test_decode_x_mac_roman.js
intl/uconv/tests/unit/test_encode_x_mac_roman.js
--- a/intl/uconv/src/charsetalias.properties
+++ b/intl/uconv/src/charsetalias.properties
@@ -365,60 +365,60 @@ x-cp1258=windows-1258
 windows-874=windows-874
 ibm874=windows-874
 #
 # Aliases for x-mac-roman
 # XXX: should make macintosh the canonical name later
 #
 macintosh=x-mac-roman
 mac=x-mac-roman
-csMacintosh=x-mac-roman
+csmacintosh=x-mac-roman
 #
 # Aliases for IBM866
 #
 cp866=IBM866
 cp-866=IBM866
 866=IBM866
-csIBM866=IBM866
+csibm866=IBM866
 #
 # Aliases for IBM850
 #
 cp850=IBM850
 850=IBM850
-csIBM850=IBM850
+csibm850=IBM850
 #
 # Aliases for IBM852
 #
 cp852=IBM852
 852=IBM852
-csIBM852=IBM852
+csibm852=IBM852
 #
 # Aliases for IBM855
 #
 cp855=IBM855
 855=IBM855
-csIBM855=IBM855
+csibm855=IBM855
 #
 # Aliases for IBM857
 #
 cp857=IBM857
 857=IBM857
-csIBM857=IBM857
+csibm857=IBM857
 #
 # Aliases for IBM862
 #
 cp862=IBM862
 862=IBM862
-csIBM862=IBM862
+csibm862=IBM862
 #
 # Aliases for IBM864
 #
 cp864=IBM864
 864=IBM864
-csIBM864=IBM864
+csibm864=IBM864
 ibm-864=IBM864
 #
 # Aliases for IBM864i
 #
 cp864i=IBM864i
 864i=IBM864i
 csibm864i=IBM864i
 ibm-864i=IBM864i
--- a/intl/uconv/tests/unit/test_decode_CP850.js
+++ b/intl/uconv/tests/unit/test_decode_CP850.js
@@ -1,19 +1,22 @@
 // Tests conversion from IBM850 to Unicode
 	
 const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
     
 const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00c7\u00fc\u00e9\u00e2\u00e4\u00e0\u00e5\u00e7\u00ea\u00eb\u00e8\u00ef\u00ee\u00ec\u00c4\u00c5\u00c9\u00e6\u00c6\u00f4\u00f6\u00f2\u00fb\u00f9\u00ff\u00d6\u00dc\u00f8\u00a3\u00d8\u00d7\u0192\u00e1\u00ed\u00f3\u00fa\u00f1\u00d1\u00aa\u00ba\u00bf\u00ae\u00ac\u00bd\u00bc\u00a1\u00ab\u00bb\u2591\u2592\u2593\u2502\u2524\u00c1\u00c2\u00c0\u00a9\u2563\u2551\u2557\u255d\u00a2\u00a5\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u00e3\u00c3\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u00a4\u00f0\u00d0\u00ca\u00cb\u00c8\u20ac\u00cd\u00ce\u00cf\u2518\u250c\u2588\u2584\u00a6\u00cc\u2580\u00d3\u00df\u00d4\u00d2\u00f5\u00d5\u00b5\u00fe\u00de\u00da\u00db\u00d9\u00fd\u00dd\u00af\u00b4\u00ad\u00b1\u2017\u00be\u00b6\u00a7\u00f7\u00b8\u00b0\u00a8\u00b7\u00b9\u00b3\u00b2\u25a0\u00a0";
 
-const charset = "IBM850";
+function test_conversion(converter, charset) {
+    converter.charset = charset;
+    return converter.ConvertToUnicode(inString) + converter.Finish();
+}
 
 function run_test() {
     var ScriptableUnicodeConverter =
 	Components.Constructor("@mozilla.org/intl/scriptableunicodeconverter",
 			       "nsIScriptableUnicodeConverter");
-
     var converter = new ScriptableUnicodeConverter();
-    converter.charset = charset;
 
-    var outString = converter.ConvertToUnicode(inString) + converter.Finish();
-    do_check_eq(outString, expectedString);
+    do_check_eq(test_conversion(converter, "IBM850"), expectedString);
+    do_check_eq(test_conversion(converter, "csIBM850"), expectedString);
+    do_check_eq(test_conversion(converter, "CP850"), expectedString);
+    do_check_eq(test_conversion(converter, "850"), expectedString);
 }
--- a/intl/uconv/tests/unit/test_decode_CP852.js
+++ b/intl/uconv/tests/unit/test_decode_CP852.js
@@ -1,19 +1,22 @@
 // Tests conversion from IBM852 to Unicode
 	
 const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
     
 const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00c7\u00fc\u00e9\u00e2\u00e4\u016f\u0107\u00e7\u0142\u00eb\u0150\u0151\u00ee\u0179\u00c4\u0106\u00c9\u0139\u013a\u00f4\u00f6\u013d\u013e\u015a\u015b\u00d6\u00dc\u0164\u0165\u0141\u00d7\u010d\u00e1\u00ed\u00f3\u00fa\u0104\u0105\u017d\u017e\u0118\u0119\u20ac\u017a\u010c\u015f\u00ab\u00bb\u2591\u2592\u2593\u2502\u2524\u00c1\u00c2\u011a\u015e\u2563\u2551\u2557\u255d\u017b\u017c\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u0102\u0103\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u00a4\u0111\u0110\u010e\u00cb\u010f\u0147\u00cd\u00ce\u011b\u2518\u250c\u2588\u2584\u0162\u016e\u2580\u00d3\u00df\u00d4\u0143\u0144\u0148\u0160\u0161\u0154\u00da\u0155\u0170\u00fd\u00dd\u0163\u00b4\u00ad\u02dd\u02db\u02c7\u02d8\u00a7\u00f7\u00b8\u00b0\u00a8\u02d9\u0171\u0158\u0159\u25a0\u00a0";
 
-const charset = "IBM852";
+function test_conversion(converter, charset) {
+    converter.charset = charset;
+    return converter.ConvertToUnicode(inString) + converter.Finish();
+}
 
 function run_test() {
     var ScriptableUnicodeConverter =
 	Components.Constructor("@mozilla.org/intl/scriptableunicodeconverter",
 			       "nsIScriptableUnicodeConverter");
-
     var converter = new ScriptableUnicodeConverter();
-    converter.charset = charset;
 
-    var outString = converter.ConvertToUnicode(inString) + converter.Finish();
-    do_check_eq(outString, expectedString);
+    do_check_eq(test_conversion(converter, "IBM852"), expectedString);
+    do_check_eq(test_conversion(converter, "csIBM852"), expectedString);
+    do_check_eq(test_conversion(converter, "CP852"), expectedString);
+    do_check_eq(test_conversion(converter, "852"), expectedString);
 }
--- a/intl/uconv/tests/unit/test_decode_CP855.js
+++ b/intl/uconv/tests/unit/test_decode_CP855.js
@@ -1,19 +1,22 @@
 // Tests conversion from IBM855 to Unicode
 	
 const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
     
 const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045a\u040a\u045b\u040b\u045c\u040c\u045e\u040e\u045f\u040f\u044e\u042e\u044a\u042a\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\u00ab\u00bb\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255d\u0439\u0419\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u043a\u041a\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u00a4\u043b\u041b\u043c\u041c\u043d\u041d\u043e\u041e\u043f\u2518\u250c\u2588\u2584\u041f\u044f\u2580\u042f\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044c\u042c\u2116\u00ad\u044b\u042b\u0437\u0417\u0448\u0428\u044d\u042d\u0449\u0429\u0447\u0427\u00a7\u25a0\u00a0";
 
-const charset = "IBM855";
+function test_conversion(converter, charset) {
+    converter.charset = charset;
+    return converter.ConvertToUnicode(inString) + converter.Finish();
+}
 
 function run_test() {
     var ScriptableUnicodeConverter =
 	Components.Constructor("@mozilla.org/intl/scriptableunicodeconverter",
 			       "nsIScriptableUnicodeConverter");
-
     var converter = new ScriptableUnicodeConverter();
-    converter.charset = charset;
 
-    var outString = converter.ConvertToUnicode(inString) + converter.Finish();
-    do_check_eq(outString, expectedString);
+    do_check_eq(test_conversion(converter, "IBM855"), expectedString);
+    do_check_eq(test_conversion(converter, "csIBM855"), expectedString);
+    do_check_eq(test_conversion(converter, "CP855"), expectedString);
+    do_check_eq(test_conversion(converter, "855"), expectedString);
 }
--- a/intl/uconv/tests/unit/test_decode_CP857.js
+++ b/intl/uconv/tests/unit/test_decode_CP857.js
@@ -1,19 +1,22 @@
 // Tests conversion from IBM857 to Unicode
 	
 const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
     
 const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00c7\u00fc\u00e9\u00e2\u00e4\u00e0\u00e5\u00e7\u00ea\u00eb\u00e8\u00ef\u00ee\u0131\u00c4\u00c5\u00c9\u00e6\u00c6\u00f4\u00f6\u00f2\u00fb\u00f9\u0130\u00d6\u00dc\u00f8\u00a3\u00d8\u015e\u015f\u00e1\u00ed\u00f3\u00fa\u00f1\u00d1\u011e\u011f\u00bf\u00ae\u00ac\u00bd\u00bc\u00a1\u00ab\u00bb\u2591\u2592\u2593\u2502\u2524\u00c1\u00c2\u00c0\u00a9\u2563\u2551\u2557\u255d\u00a2\u00a5\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u00e3\u00c3\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u00a4\u00ba\u00aa\u00ca\u00cb\u00c8\u20ac\u00cd\u00ce\u00cf\u2518\u250c\u2588\u2584\u00a6\u00cc\u2580\u00d3\u00df\u00d4\u00d2\u00f5\u00d5\u00b5\u00d7\u00da\u00db\u00d9\u00ec\u00ff\u00af\u00b4\u00ad\u00b1\u00be\u00b6\u00a7\u00f7\u00b8\u00b0\u00a8\u00b7\u00b9\u00b3\u00b2\u25a0\u00a0";
 
-const charset = "IBM857";
+function test_conversion(converter, charset) {
+    converter.charset = charset;
+    return converter.ConvertToUnicode(inString) + converter.Finish();
+}
 
 function run_test() {
     var ScriptableUnicodeConverter =
 	Components.Constructor("@mozilla.org/intl/scriptableunicodeconverter",
 			       "nsIScriptableUnicodeConverter");
-
     var converter = new ScriptableUnicodeConverter();
-    converter.charset = charset;
 
-    var outString = converter.ConvertToUnicode(inString) + converter.Finish();
-    do_check_eq(outString, expectedString);
+    do_check_eq(test_conversion(converter, "IBM857"), expectedString);
+    do_check_eq(test_conversion(converter, "csIBM857"), expectedString);
+    do_check_eq(test_conversion(converter, "CP857"), expectedString);
+    do_check_eq(test_conversion(converter, "857"), expectedString);
 }
--- a/intl/uconv/tests/unit/test_decode_CP862.js
+++ b/intl/uconv/tests/unit/test_decode_CP862.js
@@ -1,19 +1,22 @@
 // Tests conversion from IBM862 to Unicode
 	
 const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
     
 const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u05d0\u05d1\u05d2\u05d3\u05d4\u05d5\u05d6\u05d7\u05d8\u05d9\u05da\u05db\u05dc\u05dd\u05de\u05df\u05e0\u05e1\u05e2\u05e3\u05e4\u05e5\u05e6\u05e7\u05e8\u05e9\u05ea\u00a2\u00a3\u00a5\u20aa\u200e\u200f\u202a\u202b\u202d\u202c\u202e\u2310\u00ac\u00bd\u00bc\u20ac\u00ab\u00bb\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u03b1\u00df\u0393\u03c0\u03a3\u03c3\u00b5\u03c4\u03a6\u0398\u03a9\u03b4\u221e\u03c6\u03b5\u2229\u2261\u00b1\u2265\u2264\u2320\u2321\u00f7\u2248\u00b0\u2219\u00b7\u221a\u207f\u00b2\u25a0\u00a0";
 
-const charset = "IBM862";
+function test_conversion(converter, charset) {
+    converter.charset = charset;
+    return converter.ConvertToUnicode(inString) + converter.Finish();
+}
 
 function run_test() {
     var ScriptableUnicodeConverter =
 	Components.Constructor("@mozilla.org/intl/scriptableunicodeconverter",
 			       "nsIScriptableUnicodeConverter");
-
     var converter = new ScriptableUnicodeConverter();
-    converter.charset = charset;
 
-    var outString = converter.ConvertToUnicode(inString) + converter.Finish();
-    do_check_eq(outString, expectedString);
+    do_check_eq(test_conversion(converter, "IBM862"), expectedString);
+    do_check_eq(test_conversion(converter, "csIBM862"), expectedString);
+    do_check_eq(test_conversion(converter, "CP862"), expectedString);
+    do_check_eq(test_conversion(converter, "862"), expectedString);
 }
--- a/intl/uconv/tests/unit/test_decode_CP864.js
+++ b/intl/uconv/tests/unit/test_decode_CP864.js
@@ -1,19 +1,22 @@
 // Tests conversion from IBM864 to Unicode
 	
 const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
     
 const expectedString = " !\"#$\u066a&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00b0\u00b7\u2219\u221a\u2592\u2500\u2502\u253c\u2524\u252c\u251c\u2534\u2510\u250c\u2514\u2518\u03b2\u221e\u03c6\u00b1\u00bd\u00bc\u2248\u00ab\u00bb\ufef7\ufef8\ufefb\ufefc\u00a0\u00ad\ufe82\u00a3\u00a4\ufe84\u20ac\ufe8e\ufe8f\ufe95\ufe99\u060c\ufe9d\ufea1\ufea5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\ufed1\u061b\ufeb1\ufeb5\ufeb9\u061f\u00a2\ufe80\ufe81\ufe83\ufe85\ufeca\ufe8b\ufe8d\ufe91\ufe93\ufe97\ufe9b\ufe9f\ufea3\ufea7\ufea9\ufeab\ufead\ufeaf\ufeb3\ufeb7\ufebb\ufebf\ufec1\ufec5\ufecb\ufecf\u00a6\u00ac\u00f7\u00d7\ufec9\u0640\ufed3\ufed7\ufedb\ufedf\ufee3\ufee7\ufeeb\ufeed\ufeef\ufef3\ufebd\ufecc\ufece\ufecd\ufee1\ufe7d\u0651\ufee5\ufee9\ufeec\ufef0\ufef2\ufed0\ufed5\ufef5\ufef6\ufedd\ufed9\ufef1\u25a0";
 
-const charset = "IBM864";
+function test_conversion(converter, charset) {
+    converter.charset = charset;
+    return converter.ConvertToUnicode(inString) + converter.Finish();
+}
 
 function run_test() {
     var ScriptableUnicodeConverter =
 	Components.Constructor("@mozilla.org/intl/scriptableunicodeconverter",
 			       "nsIScriptableUnicodeConverter");
-
     var converter = new ScriptableUnicodeConverter();
-    converter.charset = charset;
 
-    var outString = converter.ConvertToUnicode(inString) + converter.Finish();
-    do_check_eq(outString, expectedString);
+    do_check_eq(test_conversion(converter, "IBM864"), expectedString);
+    do_check_eq(test_conversion(converter, "csIBM864"), expectedString);
+    do_check_eq(test_conversion(converter, "CP864"), expectedString);
+    do_check_eq(test_conversion(converter, "864"), expectedString);
 }
new file mode 100644
--- /dev/null
+++ b/intl/uconv/tests/unit/test_decode_x_mac_roman.js
@@ -0,0 +1,22 @@
+// Tests conversion from x-mac-roman to Unicode
+	
+const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
+    
+const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00c4\u00c5\u00c7\u00c9\u00d1\u00d6\u00dc\u00e1\u00e0\u00e2\u00e4\u00e3\u00e5\u00e7\u00e9\u00e8\u00ea\u00eb\u00ed\u00ec\u00ee\u00ef\u00f1\u00f3\u00f2\u00f4\u00f6\u00f5\u00fa\u00f9\u00fb\u00fc\u2020\u00b0\u00a2\u00a3\u00a7\u2022\u00b6\u00df\u00ae\u00a9\u2122\u00b4\u00a8\u2260\u00c6\u00d8\u221e\u00b1\u2264\u2265\u00a5\u00b5\u2202\u2211\u220f\u03c0\u222b\u00aa\u00ba\u03a9\u00e6\u00f8\u00bf\u00a1\u00ac\u221a\u0192\u2248\u2206\u00ab\u00bb\u2026\u00a0\u00c0\u00c3\u00d5\u0152\u0153\u2013\u2014\u201c\u201d\u2018\u2019\u00f7\u25ca\u00ff\u0178\u2044\u20ac\u2039\u203a\ufb01\ufb02\u2021\u00b7\u201a\u201e\u2030\u00c2\u00ca\u00c1\u00cb\u00c8\u00cd\u00ce\u00cf\u00cc\u00d3\u00d4\uf8ff\u00d2\u00da\u00db\u00d9\u0131\u02c6\u02dc\u00af\u02d8\u02d9\u02da\u00b8\u02dd\u02db\u02c7";
+
+function test_conversion(converter, charset) {
+    converter.charset = charset;
+    return converter.ConvertToUnicode(inString) + converter.Finish();
+}
+
+function run_test() {
+    var ScriptableUnicodeConverter =
+	Components.Constructor("@mozilla.org/intl/scriptableunicodeconverter",
+			       "nsIScriptableUnicodeConverter");
+    var converter = new ScriptableUnicodeConverter();
+
+    do_check_eq(test_conversion(converter, "x-mac-roman"), expectedString);
+    do_check_eq(test_conversion(converter, "csMacintosh"), expectedString);
+    do_check_eq(test_conversion(converter, "macintosh"), expectedString);
+    do_check_eq(test_conversion(converter, "mac"), expectedString);
+}
new file mode 100644
--- /dev/null
+++ b/intl/uconv/tests/unit/test_encode_x_mac_roman.js
@@ -0,0 +1,19 @@
+// Tests conversion from Unicode to x-mac-roman
+	
+const inString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u00c4\u00c5\u00c7\u00c9\u00d1\u00d6\u00dc\u00e1\u00e0\u00e2\u00e4\u00e3\u00e5\u00e7\u00e9\u00e8\u00ea\u00eb\u00ed\u00ec\u00ee\u00ef\u00f1\u00f3\u00f2\u00f4\u00f6\u00f5\u00fa\u00f9\u00fb\u00fc\u2020\u00b0\u00a2\u00a3\u00a7\u2022\u00b6\u00df\u00ae\u00a9\u2122\u00b4\u00a8\u2260\u00c6\u00d8\u221e\u00b1\u2264\u2265\u00a5\u00b5\u2202\u2211\u220f\u03c0\u222b\u00aa\u00ba\u03a9\u00e6\u00f8\u00bf\u00a1\u00ac\u221a\u0192\u2248\u2206\u00ab\u00bb\u2026\u00a0\u00c0\u00c3\u00d5\u0152\u0153\u2013\u2014\u201c\u201d\u2018\u2019\u00f7\u25ca\u00ff\u0178\u2044\u20ac\u2039\u203a\ufb01\ufb02\u2021\u00b7\u201a\u201e\u2030\u00c2\u00ca\u00c1\u00cb\u00c8\u00cd\u00ce\u00cf\u00cc\u00d3\u00d4\uf8ff\u00d2\u00da\u00db\u00d9\u0131\u02c6\u02dc\u00af\u02d8\u02d9\u02da\u00b8\u02dd\u02db\u02c7";
+    
+const expectedString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
+
+const charset = "x-mac-roman";
+
+function run_test() {
+    var ScriptableUnicodeConverter =
+	Components.Constructor("@mozilla.org/intl/scriptableunicodeconverter",
+			       "nsIScriptableUnicodeConverter");
+
+    var converter = new ScriptableUnicodeConverter();
+    converter.charset = charset;
+
+    var outString = converter.ConvertFromUnicode(inString) + converter.Finish();
+    do_check_eq(outString, expectedString);
+}