ab2b64
Version:
Convert ArrayBuffer to Base64 string and vice versa
38 lines (30 loc) • 1.85 kB
JavaScript
const ab2b64 = require("../");
const assert = require('assert');
const str2ab = (str) => {
let buffer = new ArrayBuffer(str.length * 2); //JS UTF-16 = 2 bytes each character
let view = new Uint16Array(buffer);
str.split("").forEach((char, index) => { view[index] = char.charCodeAt(0)});
return buffer;
};
const ab2str = (buffer) => {
//removing null terminator at the end
return String.fromCodePoint.apply(null, new Uint16Array(buffer));
};
const main_test = async () => {
const testBuffer1 = str2ab("Pickle Rick!!");
const b64test1 = await ab2b64.ab2b64Async(testBuffer1);
assert.equal(b64test1, "UABpAGMAawBsAGUAIABSAGkAYwBrACEAIQA=", "Array Buffer conversion to Base64 str failed!"); //UTF-16 LE
const b64test2 = "UwBlAGEAbAAgAFQAZQBhAG0AIABSAGkAYwBrAHMAIABpAG4AIAB0AGgAZQAgAGgAbwB1AHMAZQAsACAAYgBhAGIAeQAhAA==";
const testBuffer2 = await ab2b64.b642abAsync(b64test2);
assert.equal(ab2str(testBuffer2), "Seal Team Ricks in the house, baby!", "Base64 str conversion to Array Buffer failed");
const testBuffer3 = str2ab("I'm Mr. Meeseeks! Look at me!");
const b64test3 = await ab2b64.ab2b64Async(testBuffer3);
assert.equal(b64test3, "SQAnAG0AIABNAHIALgAgAE0AZQBlAHMAZQBlAGsAcwAhACAATABvAG8AawAgAGEAdAAgAG0AZQAhAA==", "Array Buffer conversion to Base64 str failed!"); //UTF-16 LE
const b64test4 = "RABvAG8AZgB1AHMAIABSAGkAYwBrAA==";
const testBuffer4 = await ab2b64.b642abAsync(b64test4);
assert.equal(ab2str(testBuffer4), "Doofus Rick", "Base64 str conversion to Array Buffer failed");
const testBuffer5 = str2ab("Hello Randy");
const b64test5 = await ab2b64.ab2b64Async(testBuffer5);
assert.equal(ab2b64.b642ab(b64test5).byteLength, testBuffer5.byteLength);
};
main_test().then(() => console.log("All tests pass")).catch(err => console.log(err));