"Convert non-strings and non-buffers": function() { assert.strictEqual(iconv.toEncoding({}, "utf8").toString(), "[object Object]"); assert.strictEqual(iconv.toEncoding(10, "utf8").toString(), "10"); assert.strictEqual(iconv.toEncoding(undefined, "utf8").toString(), ""); assert.strictEqual(iconv.fromEncoding({}, "utf8"), "[object Object]"); assert.strictEqual(iconv.fromEncoding(10, "utf8"), "10"); assert.strictEqual(iconv.fromEncoding(undefined, "utf8"), ""); },
"Big5 correctly encoded/decoded": function () { assert.strictEqual(iconv.toEncoding(testString, "big5").toString('binary'), testStringBig5Buffer.toString('binary')); assert.strictEqual(iconv.fromEncoding(testStringBig5Buffer, "big5"), testString); assert.strictEqual(iconv.toEncoding(testString2, 'big5').toString('binary'), testStringBig5Buffer2.toString('binary')); assert.strictEqual(iconv.fromEncoding(testStringBig5Buffer2, 'big5'), testString2); },
"Big5 correctly decodes and encodes characters · and ×": function() { // https://github.com/ashtuchkin/iconv-lite/issues/13 // Reference: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT var chars = "·×"; var big5Chars = new Buffer([0xA1, 0x50, 0xA1, 0xD1]); assert.strictEqual(iconv.toEncoding(chars, "big5").toString('binary'), big5Chars.toString('binary')); assert.strictEqual(iconv.fromEncoding(big5Chars, "big5"), chars) },
"compare with iconv result": function() { var mapfolder = path.join(path.dirname(module.filename), "../encodings/filemapping"); var files = fs.readdirSync(mapfolder); var t; for (i=0; i<files.length; i++) { var x = files[i].indexOf(" "); if (x === -1) x = files[i].indexOf("."); var enc = files[i].substring(0, x); //console.log("Test encoding " + enc); var p = getBigText(path.join(mapfolder, files[i])); // compare iconv-lite with utf8 assert.strictEqual(iconv.fromEncoding(p.other, enc).toString(), p.utf8); // compare iconv with utf8 var iconvc = new (require("iconv").Iconv)(enc, "utf8"); assert.strictEqual(iconvc.convert(p.other).toString(), p.utf8); } },
"ks_c_5601-1987 correctly encoded/decoded": function() { assert.strictEqual(iconv.toEncoding(testStringUtf, "ks_c_5601-1987").toString("binary"), testStringCP949Buffer.toString("binary")); assert.strictEqual(iconv.fromEncoding(testStringCP949Buffer, "ks_c_5601-1987"), testStringUtf); },
var vows=require("vows"),assert=require("assert"),iconv=require(__dirname+"/../"),ascii="\x00\b \n\f\r !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",encodings=[{name:"windows1254",variations:["windows-1254","win-1254","win1254","cp1254","cp-1254",1254],strings:{empty:"",ascii:ascii,turkish:"€‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ",untranslatable:""},encodedStrings:{empty:new Buffer(""),ascii:new Buffer(ascii,"binary"),turkish:new Buffer(" ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ","binary")}},{name:"iso88599",variations:["iso-8859-9","turkish","turkish8","cp28599","cp-28599",28599],strings:{empty:"",ascii:ascii,turkish:" ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ",untranslatable:""},encodedStrings:{empty:new Buffer(""),ascii:new Buffer(ascii,"binary"),turkish:new Buffer(" ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ","binary")}}],testsBatch={};encodings.forEach(function(e){var n=e.variations[0],t="turkish",r={"Convert to empty buffer":function(){assert.strictEqual(iconv.toEncoding("",n).toString("binary"),new Buffer("").toString("binary"))},"Convert from empty buffer":function(){assert.strictEqual(iconv.fromEncoding(new Buffer(""),n),"")},"Convert from buffer":function(){for(var t in e.encodedStrings)assert.strictEqual(iconv.fromEncoding(e.encodedStrings[t],n),e.strings[t])},"Convert to buffer":function(){for(var t in e.encodedStrings)assert.strictEqual(iconv.toEncoding(e.strings[t],n).toString("binary"),e.encodedStrings[t].toString("binary"))},"Try different variations of encoding":function(){e.variations.forEach(function(n){assert.strictEqual(iconv.fromEncoding(e.encodedStrings[t],n),e.strings[t]),assert.strictEqual(iconv.toEncoding(e.strings[t],n).toString("binary"),e.encodedStrings[t].toString("binary"))})},"Untranslatable chars are converted to defaultCharSingleByte":function(){var t=e.strings.untranslatable.split("").map(function(e){return iconv.defaultCharSingleByte}).join("");assert.strictEqual(iconv.toEncoding(e.strings.untranslatable,n).toString("binary"),t)}};testsBatch[e.name+":"]=r}),vows.describe("Test Turkish encodings").addBatch(testsBatch)["export"](module);
"Convert from buffer": function() { for (var key in encoding.encodedStrings) assert.strictEqual(iconv.fromEncoding(encoding.encodedStrings[key], enc), baseStrings[key]); },
encoding.variations.forEach(function(enc) { assert.strictEqual(iconv.fromEncoding(encoding.encodedStrings[key], enc), baseStrings[key]); assert.strictEqual(iconv.toEncoding(baseStrings[key], enc).toString('binary'), encoding.encodedStrings[key].toString('binary')); });
['utf8', "UTF-8", "UCS2", "binary", ""].forEach(function(enc) { assert.strictEqual(iconv.toEncoding(testStringLatin1, enc).toString(enc), testStringLatin1); assert.strictEqual(iconv.fromEncoding(new Buffer(testStringLatin1, enc), enc), testStringLatin1); });
"Convert from empty buffer": function() { assert.strictEqual(iconv.fromEncoding(new Buffer(''), enc), ""); },
"GB2312 correctly encoded/decoded": function () { assert.strictEqual(iconv.toEncoding(testString, "GB2312").toString('binary'), testStringGBKBuffer.toString('binary')); assert.strictEqual(iconv.fromEncoding(testStringGBKBuffer, "GB2312"), testString); },
"Big5 file read decoded,compare with iconv result": function() { var contentBuffer = fs.readFileSync(__dirname+"/big5File.txt"); var str = iconv.fromEncoding(contentBuffer, "big5"); var iconvc = new (require('iconv').Iconv)('big5','utf8'); assert.strictEqual(iconvc.convert(contentBuffer).toString(), str); },
var vows=require("vows"),fs=require("fs"),assert=require("assert"),iconv=require(__dirname+"/../"),testString="中文abc",testStringBig5Buffer=new Buffer([164,164,164,229,97,98,99]),testString2="測試",testStringBig5Buffer2=new Buffer([180,250,184,213]);vows.describe("Big5 tests").addBatch({"Big5 correctly encoded/decoded":function(){assert.strictEqual(iconv.toEncoding(testString,"big5").toString("binary"),testStringBig5Buffer.toString("binary")),assert.strictEqual(iconv.fromEncoding(testStringBig5Buffer,"big5"),testString),assert.strictEqual(iconv.toEncoding(testString2,"big5").toString("binary"),testStringBig5Buffer2.toString("binary")),assert.strictEqual(iconv.fromEncoding(testStringBig5Buffer2,"big5"),testString2)},"cp950 correctly encoded/decoded":function(){assert.strictEqual(iconv.toEncoding(testString,"cp950").toString("binary"),testStringBig5Buffer.toString("binary")),assert.strictEqual(iconv.fromEncoding(testStringBig5Buffer,"cp950"),testString)},"Big5 file read decoded,compare with iconv result":function(){var e=fs.readFileSync(__dirname+"/big5File.txt"),n=iconv.fromEncoding(e,"big5"),t=new(require("iconv").Iconv)("big5","utf8");assert.strictEqual(t.convert(e).toString(),n)},"Big5 correctly decodes and encodes characters · and ×":function(){var e="·×",n=new Buffer([161,80,161,209]);assert.strictEqual(iconv.toEncoding(e,"big5").toString("binary"),n.toString("binary")),assert.strictEqual(iconv.fromEncoding(n,"big5"),e)}})["export"](module);
"Return values are of correct types": function () { assert.ok(iconv.toEncoding(testString, "utf8") instanceof Buffer); var s = iconv.fromEncoding(new Buffer(testString), "utf8"); assert.strictEqual(Object.prototype.toString.call(s), "[object String]"); },
"Aliases encode and decode work the same as toEncoding and fromEncoding": function() { assert.strictEqual(iconv.toEncoding(testString, "latin1").toString("binary"), iconv.encode(testString, "latin1").toString("binary")); assert.strictEqual(iconv.fromEncoding(testStringLatin1, "latin1"), iconv.decode(testStringLatin1, "latin1")); },
"Base64 correctly encoded/decoded": function() { assert.strictEqual(iconv.toEncoding(testStringBase64, "base64").toString("binary"), testString); assert.strictEqual(iconv.fromEncoding(new Buffer(testString, "binary"), "base64"), testStringBase64); },
assert.throws(function() { iconv.fromEncoding("a", "xxx"); });
"Convert from string, not buffer (binary encoding used)": function() { assert.strictEqual(iconv.fromEncoding(testStringLatin1, "binary"), testStringLatin1); },
"Latin1 correctly encoded/decoded": function() { assert.strictEqual(iconv.toEncoding(testStringLatin1, "latin1").toString("binary"), testStringLatin1); assert.strictEqual(iconv.fromEncoding(new Buffer(testStringLatin1, "binary"), "latin1"), testStringLatin1); },