(function(exports) { 'use strict'; var Unibabel = exports.Unibabel || require('../'); //UTF-8 var pass = true; var references = { string: 'I ½ ♥ 𩶘', array: [73, 32, 194, 189, 32, 226, 153, 165, 32, 240, 169, 182, 152], hex: '4920c2bd20e299a520f0a9b698', base64: 'SSDCvSDimaUg8Km2mA==', base32: 'JEQMFPJA4KM2KIHQVG3JQ===' }; references.buffer = Uint8Array.from(references.array); var binrefs = { // Note that the binary string "ÿâó<86>Î<93>k" can't be serialized to text array: [255, 226, 26, 243, 134, 206, 147, 107], hex: 'ffe21af386ce936b', base64: '/+Ia84bOk2s=' }; binrefs.buffer = new Uint8Array(binrefs.array); var str = references.string; var buf = Unibabel.utf8ToBuffer(references.string); var base64 = Unibabel.bufferToBase64(references.buffer); var hex = Unibabel.bufferToHex(references.buffer); var b32 = Unibabel.bufferToBase32(references.buffer); function buffersAreEqual(buf1, buf2) { if (buf1.length !== buf2.length) { return false; } return Array.prototype.every.call(buf1, function(byte, i) { if (byte === buf2[i]) { return true; } }); } // TODO compare buffer if (!buffersAreEqual(buf, references.array)) { pass = false; console.warn('[FAIL] utf8 -> buffer', buf); } if (base64 !== references.base64) { pass = false; console.warn('[FAIL] utf8 -> base64', base64); } if (hex !== references.hex) { pass = false; console.warn('[FAIL] utf8 -> hex', hex); } // binary var bytes = binrefs.array; buf = new Uint8Array(bytes); str = Unibabel.bufferToBinaryString(buf); base64 = Unibabel.bufferToBase64(buf); hex = Unibabel.bufferToHex(buf); // This can't be properly tested because binary strings can't be parsed // if (str !== "ÿâó†Î“k") { // pass = false; // console.log('[FAIL] binary -> str', str); // } if (binrefs.base64 !== base64) { pass = false; console.warn('[FAIL] binary -> base64', base64); } if (binrefs.hex !== hex) { pass = false; console.warn('[FAIL] binary -> hex', hex); } // // Base32 // b32 = Unibabel.bufferToBase32(references.buffer); if (references.base32 !== b32) { pass = false; console.warn('[FAIL] binary -> base32', references.base32, '!==', b32); } buf = Unibabel.base32ToBuffer(references.base32); if (!buffersAreEqual(buf, references.buffer)) { pass = false; console.warn('[FAIL] base32 -> binary', references.buffer, '!==', buf); } if (pass) { console.info('[PASS] :-D'); } })('undefined' === typeof window ? module.exports : window);