67 lines
1.5 KiB
JavaScript
67 lines
1.5 KiB
JavaScript
(function () {
|
||
'use strict';
|
||
|
||
var Unibabel = window.Unibabel;
|
||
|
||
//UTF-8
|
||
var pass = true;
|
||
var str = "I ½ ♥ 𩶘";
|
||
var buf = Unibabel.utf8ToBuffer(str);
|
||
var base64 = Unibabel.bufferToBase64(buf);
|
||
var hex = Unibabel.bufferToHex(buf);
|
||
|
||
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;
|
||
}
|
||
});
|
||
}
|
||
|
||
console.log('buffer', buf);
|
||
// TODO compare buffer
|
||
var reference = [ 73, 32, 194, 189, 32, 226, 153, 165, 32, 240, 169, 182, 152 ];
|
||
if (!buffersAreEqual(buf, reference)) {
|
||
pass = false;
|
||
console.log('[FAIL] utf8 -> buffer', buf);
|
||
}
|
||
if (base64 !== "SSDCvSDimaUg8Km2mA==") {
|
||
pass = false;
|
||
console.log('[FAIL] utf8 -> base64', base64);
|
||
}
|
||
if (hex !== "4920c2bd20e299a520f0a9b698") {
|
||
pass = false;
|
||
console.log('[FAIL] utf8 -> hex', hex);
|
||
}
|
||
|
||
|
||
// binary
|
||
var bytes = [ 255, 226, 26, 243, 134, 206, 147, 107 ];
|
||
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 ("/+Ia84bOk2s=" !== base64) {
|
||
pass = false;
|
||
console.log('[FAIL] binary -> base64', base64);
|
||
}
|
||
if (hex !== "ffe21af386ce936b") {
|
||
pass = false;
|
||
console.log('[FAIL] binary -> hex', hex);
|
||
}
|
||
|
||
if (pass) {
|
||
console.log('[PASS] :-D');
|
||
}
|
||
|
||
}());
|