UNPKG

zigbee-herdsman

Version:

An open source ZigBee gateway solution with node.js.

206 lines (203 loc) 6.46 kB
import * as m from "../../../src/adapter/ember/utils/math"; const ASH_CRC_INIT = 0xffff; const B32 = 0xbeefface; describe("Ember Math utils", () => { it("mod8", () => { let t = m.mod8(0x00); expect(t).toStrictEqual(0); t = m.mod8(0x03); expect(t).toStrictEqual(3); t = m.mod8(0x07); expect(t).toStrictEqual(7); t = m.mod8(0x08); expect(t).toStrictEqual(0); t = m.mod8(0x10); expect(t).toStrictEqual(0); t = m.mod8(0xfe); expect(t).toStrictEqual(6); t = m.mod8(0xff); expect(t).toStrictEqual(7); }); it("inc8", () => { let t = m.inc8(0x00); expect(t).toStrictEqual(1); t = m.inc8(0x03); expect(t).toStrictEqual(4); t = m.inc8(0x07); expect(t).toStrictEqual(0); t = m.inc8(0x08); expect(t).toStrictEqual(1); t = m.inc8(0x10); expect(t).toStrictEqual(1); t = m.inc8(0xfe); expect(t).toStrictEqual(7); t = m.inc8(0xff); expect(t).toStrictEqual(0); }); it("withinRange", () => { let t = m.withinRange(0x00, 0x04, 0x07); expect(t).toStrictEqual(true); t = m.withinRange(0x00, 0x04, 0x08); expect(t).toStrictEqual(false); t = m.withinRange(0xaa, 0xac, 0xfe); expect(t).toStrictEqual(true); t = m.withinRange(0x00, 0x04, 0xf8); expect(t).toStrictEqual(false); }); it("halCommonCrc16", () => { let t = m.halCommonCrc16(0x00, ASH_CRC_INIT); expect(t).toStrictEqual(57840); t = m.halCommonCrc16(0x03, t); expect(t).toStrictEqual(11628); t = m.halCommonCrc16(0xfe, t); expect(t).toStrictEqual(38686); t = m.halCommonCrc16(0xa5, t); expect(t).toStrictEqual(2065); }); it("lowBits", () => { let t = m.lowBits(10); expect(t).toStrictEqual(10); t = m.lowBits(100); expect(t).toStrictEqual(4); }); it("highBits", () => { let t = m.highBits(10); expect(t).toStrictEqual(0); t = m.highBits(100); expect(t).toStrictEqual(6); }); it("lowByte", () => { let t = m.lowByte(10); expect(t).toStrictEqual(10); t = m.lowByte(100); expect(t).toStrictEqual(100); t = m.lowByte(1000); expect(t).toStrictEqual(232); t = m.lowByte(255); expect(t).toStrictEqual(255); t = m.lowByte(1024); expect(t).toStrictEqual(0); t = m.lowByte(B32); expect(t).toStrictEqual(206); }); it("highByte", () => { let t = m.highByte(10); expect(t).toStrictEqual(0); t = m.highByte(100); expect(t).toStrictEqual(0); t = m.highByte(1000); expect(t).toStrictEqual(3); t = m.highByte(255); expect(t).toStrictEqual(0); t = m.highByte(1024); expect(t).toStrictEqual(4); t = m.highByte(B32); expect(t).toStrictEqual(250); }); it("highLowToInt", () => { let t = m.highLowToInt(254, 10); expect(t).toStrictEqual(65034); t = m.highLowToInt(10, 100); expect(t).toStrictEqual(2660); t = m.highLowToInt(1000, 2000); expect(t).toStrictEqual(256208); t = m.highLowToInt(355, 255); expect(t).toStrictEqual(91135); t = m.highLowToInt(123, 1024); expect(t).toStrictEqual(31488); t = m.highLowToInt(1, B32); expect(t).toStrictEqual(462); t = m.highLowToInt(B32, 1); expect(t).toStrictEqual(16436737); }); it("bit", () => { let t = m.bit(11); expect(t).toStrictEqual(2048); t = m.bit(15); expect(t).toStrictEqual(32768); t = m.bit(26); expect(t).toStrictEqual(67108864); t = m.bit(11) | m.bit(15) | m.bit(20) | m.bit(25); expect(t).toStrictEqual(34637824); t = m.bit(12) | m.bit(13) | m.bit(14) | m.bit(16) | m.bit(17) | m.bit(18) | m.bit(19) | m.bit(21) | m.bit(22) | m.bit(23) | m.bit(24) | m.bit(26); expect(t).toStrictEqual(99577856); t = 53 & m.bit(0); expect(t).toStrictEqual(1); t = 53 & m.bit(3); expect(t).toStrictEqual(0); t = 53 | m.bit(0); expect(t).toStrictEqual(53); t = 53 | m.bit(3); expect(t).toStrictEqual(61); }); it("bit32", () => { let t = m.bit32(11); expect(t).toStrictEqual(2048); t = m.bit32(15); expect(t).toStrictEqual(32768); t = m.bit32(26); expect(t).toStrictEqual(67108864); t = m.bit32(11) | m.bit32(15) | m.bit32(20) | m.bit32(25); expect(t).toStrictEqual(34637824); t = m.bit32(12) | m.bit32(13) | m.bit32(14) | m.bit32(16) | m.bit32(17) | m.bit32(18) | m.bit32(19) | m.bit32(21) | m.bit32(22) | m.bit32(23) | m.bit32(24) | m.bit32(26); expect(t).toStrictEqual(99577856); t = B32 & m.bit32(0); expect(t).toStrictEqual(0); t = B32 & m.bit32(3); expect(t).toStrictEqual(8); t = B32 | m.bit32(0); expect(t).toStrictEqual(-1091568945); t = B32 | m.bit32(3); expect(t).toStrictEqual(-1091568946); }); it("lowHighBytes", () => { let [l, h] = m.lowHighBytes(1024); expect(l).toStrictEqual(0); expect(h).toStrictEqual(4); expect(l).toStrictEqual(m.lowByte(1024)); expect(h).toStrictEqual(m.highByte(1024)); [l, h] = m.lowHighBytes(255); expect(l).toStrictEqual(255); expect(h).toStrictEqual(0); }); it("lowHighBits", () => { let [l, h] = m.lowHighBits(10); expect(l).toStrictEqual(10); expect(h).toStrictEqual(0); expect(l).toStrictEqual(m.lowBits(10)); expect(h).toStrictEqual(m.highBits(0)); [l, h] = m.lowHighBits(100); expect(l).toStrictEqual(4); expect(h).toStrictEqual(6); }); it("byteToBits", () => { let t = m.byteToBits(2); expect(t).toStrictEqual("00000010"); t = m.byteToBits(4); expect(t).toStrictEqual("00000100"); }); });