UNPKG

binaryarray

Version:
297 lines (296 loc) 11.9 kB
"use strict"; 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(); }); }); });