binaryarray
Version:
the binary array
297 lines (296 loc) • 11.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var assert = require("assert");
var binaryarray_1 = require("../lib/binaryarray");
var util_1 = require("../lib/util");
var bitsize_util_1 = require("../lib/bitsize_util");
describe('test', function () {
it('array length test', function () {
[
function () {
var ba = new binaryarray_1.BinaryArray(0);
assert(ba.maxnum === 0);
assert(ba.storage.length === 0);
},
function () {
var ba = new binaryarray_1.BinaryArray(1);
assert(ba.maxnum === 1);
assert(ba.storage.length === 1);
},
function () {
var ba = new binaryarray_1.BinaryArray(32);
assert(ba.maxnum === 32);
assert(ba.storage.length === 1);
},
function () {
var ba = new binaryarray_1.BinaryArray(33);
assert(ba.maxnum === 33);
assert(ba.storage.length === 2);
},
function () {
var ba = new binaryarray_1.BinaryArray(64);
assert(ba.maxnum === 64);
assert(ba.storage.length === 2);
},
function () {
var ba = new binaryarray_1.BinaryArray(65);
assert(ba.maxnum === 65);
assert(ba.storage.length === 3);
}
].forEach(function (f) { f(); });
});
it('binary on test', function () {
[
function () {
var ba = new binaryarray_1.BinaryArray(32);
assert(ba.storage[0] === 0x00000000);
},
function () {
var ba = new binaryarray_1.BinaryArray(32);
ba.bitOn(0);
assert(ba.storage[0] === 0x00000001);
assert(ba.at(0) === 1);
},
function () {
var ba = new binaryarray_1.BinaryArray(32);
ba.bitOn(0);
ba.bitOn(1);
assert(ba.storage[0] === 0x00000003);
assert(ba.at(0) === 1);
assert(ba.at(1) === 1);
},
function () {
var ba = new binaryarray_1.BinaryArray(32);
ba.bitOn(0);
ba.bitOn(1);
ba.bitOn(2);
assert(ba.storage[0] === 0x00000007);
assert(ba.at(0) === 1);
assert(ba.at(1) === 1);
assert(ba.at(2) === 1);
},
function () {
var ba = new binaryarray_1.BinaryArray(32);
ba.bitOn(31);
assert(ba.storage[0] === 0x80000000);
assert(ba.at(31) === 1);
},
function () {
var ba = new binaryarray_1.BinaryArray(33);
ba.bitOn(32);
assert(ba.storage[0] === 0x00000000);
assert(ba.storage[1] === 0x00000001);
assert(ba.at(31) === 0);
assert(ba.at(32) === 1);
},
function () {
var ba = new binaryarray_1.BinaryArray(32);
ba.bitOn(0);
assert(ba.storage[0] === 0x00000001);
ba.bitOn(0);
assert(ba.storage[0] === 0x00000001);
}
].forEach(function (f) { f(); });
});
it('binary off test', function () {
[
function () {
var ba = new binaryarray_1.BinaryArray(32);
ba.storage[0] = 0xffffffff;
ba.bitOff(0);
assert(ba.storage[0] === 0xfffffffe);
assert(ba.at(0) === 0);
assert(ba.at(1) === 1);
},
function () {
var ba = new binaryarray_1.BinaryArray(32);
ba.storage[0] = 0xffffffff;
ba.bitOff(31);
assert(ba.storage[0] === 0x7fffffff);
assert(ba.at(0) === 1);
assert(ba.at(30) === 1);
assert(ba.at(31) === 0);
},
function () {
var ba = new binaryarray_1.BinaryArray(64);
ba.storage[0] = 0xffffffff;
ba.storage[1] = 0xffffffff;
ba.bitOff(32);
assert(ba.storage[0] === 0xffffffff);
assert(ba.storage[1] === 0xfffffffe);
assert(ba.at(31) === 1);
assert(ba.at(32) === 0);
assert(ba.at(33) === 1);
},
function () {
var ba = new binaryarray_1.BinaryArray(32);
ba.storage[0] = 0xfffffffe;
ba.bitOff(0);
assert(ba.storage[0] === 0xfffffffe);
ba.bitOff(0);
assert(ba.storage[0] === 0xfffffffe);
}
].forEach(function (f) { f(); });
});
it('if array test', function () {
[
function () {
var input = [1, 1, 1, 1, 1, 1, 1, 1];
var ba = binaryarray_1.BinaryArray.loadFromArray(input);
assert(ba.maxnum === 8);
assert(ba.storage[0] === 0x000000ff);
var output = ba.toArray();
assert(JSON.stringify(input) === JSON.stringify(output));
},
function () {
var input = [
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1
];
var ba = binaryarray_1.BinaryArray.loadFromArray(input);
assert(ba.maxnum === input.length);
assert(ba.storage[0] === 0xffffffff);
assert(ba.storage[1] === 0x000000ff);
var output = ba.toArray();
assert(JSON.stringify(input) === JSON.stringify(output));
}
].forEach(function (f) { f(); });
});
it('if serialize test', function () {
[
function () {
var SPEC = {};
for (var i = 0; i < 33; i++) {
SPEC['TEST_' + (i + 1)] = i;
}
var input = ['TEST_1', 'TEST_2', 'TEST_33'];
var SPEC_MAX = util_1.getSpecMax(SPEC);
var ba = binaryarray_1.BinaryArray.deserialize(input, SPEC, SPEC_MAX);
assert(ba.maxnum === SPEC_MAX);
assert(ba.storage[0] === 0x00000003);
assert(ba.storage[1] === 0x00000001);
var output = ba.serialize(SPEC);
assert(JSON.stringify(input) === JSON.stringify(output));
}
].forEach(function (f) { f(); });
});
it('if other test', function () {
[
function () {
var input = [
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1
];
var ba = binaryarray_1.BinaryArray.loadFromArray(input);
assert(ba.toHexString() === 'FFFFFFFF');
},
function () {
var input = [
1, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0
];
var ba = binaryarray_1.BinaryArray.loadFromArray(input);
assert(ba.toHexString() === '0040201008040201');
},
function () {
var ba = binaryarray_1.BinaryArray.loadFromHexString(32, 'FFFFFFFF');
assert(ba.toHexString() === 'FFFFFFFF');
},
function () {
var input = [1, 0, 1, 0, 1, 0, 1];
var ba = binaryarray_1.BinaryArray.loadFromArray(input);
var json = ba.toJSON();
assert(json === JSON.stringify(input));
}
].forEach(function (f) { f(); });
});
it('other test', function () {
[
function () {
var ba = new binaryarray_1.BinaryArray(1024);
[0, 1, 2, 3, 4, 5, 10].forEach(function (v) { ba.bitOn(v); });
assert(ba.check([0, 1, 2, 3, 4, 5]));
assert(!ba.check([0, 1, 2, 3, 4, 5], [10]));
assert(ba.check([0, 1, 2, 3, 4, 5], [7, 8, 9]));
},
function () {
var ba = new binaryarray_1.BinaryArray(1024);
ba.bitOn(3);
var obj = ba.rangeOf([0, 1, 2, 3, 4, 5]);
assert(!obj[0]);
assert(obj[3]);
},
function () {
var ba = new binaryarray_1.BinaryArray(1024);
ba.bitOn(3);
var obj = ba.rangeOf(3);
assert(obj[3]);
},
/* todo typescript type
()=>{
let flag = 1;
const ba = new BinaryArray(1024);
ba.bitOn(3);
try{
const obj = ba.rangeOf("AAA");
}catch(e){
flag = 0;
}
assert(flag === 0);
},
*/
function () {
var ba = new binaryarray_1.BinaryArray(1024);
ba.bitOn(3);
var ba2 = ba.clone();
assert(ba2.at(3));
},
function () {
assert(bitsize_util_1.getBitSize() === 32);
},
function () {
var EVENT_CLEAR;
(function (EVENT_CLEAR) {
EVENT_CLEAR[EVENT_CLEAR["TUTORIAL"] = 0] = "TUTORIAL";
EVENT_CLEAR[EVENT_CLEAR["QUEST1"] = 1] = "QUEST1";
EVENT_CLEAR[EVENT_CLEAR["QUEST2"] = 2] = "QUEST2";
EVENT_CLEAR[EVENT_CLEAR["QUEST3"] = 3] = "QUEST3";
EVENT_CLEAR[EVENT_CLEAR["QUEST4"] = 4] = "QUEST4";
EVENT_CLEAR[EVENT_CLEAR["QUEST5"] = 5] = "QUEST5";
EVENT_CLEAR[EVENT_CLEAR["QUEST6"] = 6] = "QUEST6";
EVENT_CLEAR[EVENT_CLEAR["LASTBOSS"] = 7] = "LASTBOSS";
EVENT_CLEAR[EVENT_CLEAR["_SIZEOF"] = 8] = "_SIZEOF";
})(EVENT_CLEAR || (EVENT_CLEAR = {}));
var ba = new binaryarray_1.BinaryArray(EVENT_CLEAR._SIZEOF);
assert(ba.maxnum === EVENT_CLEAR._SIZEOF);
ba.bitOn(EVENT_CLEAR.TUTORIAL);
ba.bitOn(EVENT_CLEAR.QUEST1);
ba.bitOn(EVENT_CLEAR.QUEST4);
assert(ba.at(EVENT_CLEAR.TUTORIAL));
assert(ba.at(EVENT_CLEAR.QUEST1));
assert(ba.at(EVENT_CLEAR.QUEST4));
assert(!ba.at(EVENT_CLEAR.LASTBOSS));
var output = ba.serialize(EVENT_CLEAR);
var ba2 = binaryarray_1.BinaryArray.deserialize(output, EVENT_CLEAR, EVENT_CLEAR._SIZEOF);
assert(JSON.stringify(output) === JSON.stringify(ba2.serialize(EVENT_CLEAR)));
},
function () {
var ba = new binaryarray_1.BinaryArray(1024);
assert(ba.isRange(1023));
assert(!ba.isRange(1024));
assert(!ba.isRange(-1));
}
].forEach(function (f) { f(); });
});
});