UNPKG

inventoresed

Version:

Z-Wave driver written entirely in JavaScript/TypeScript

180 lines (161 loc) 4.29 kB
import { EntryControlCCConfigurationGet, EntryControlCCConfigurationReport, EntryControlCCConfigurationSet, EntryControlCCEventSupportedGet, EntryControlCCEventSupportedReport, EntryControlCCKeySupportedGet, EntryControlCCKeySupportedReport, EntryControlCCNotification, EntryControlCommand, EntryControlDataTypes, EntryControlEventTypes, } from "@zwave-js/cc"; import { CommandClasses } from "@zwave-js/core"; import { createTestingHost } from "@zwave-js/host"; const host = createTestingHost(); function buildCCBuffer(payload: Buffer): Buffer { return Buffer.concat([ Buffer.from([ CommandClasses["Entry Control"], // CC ]), payload, ]); } describe("lib/commandclass/EntryControlCC => ", () => { it("the Notification command should deserialize correctly", () => { const data = buildCCBuffer( Buffer.concat([ Buffer.from([ EntryControlCommand.Notification, // CC Command 0x1, 0x2, 0x3, 16, 49, 50, 51, 52, ]), // Required padding for ASCII Buffer.alloc(12, 0xff), ]), ); const cc = new EntryControlCCNotification(host, { nodeId: 1, data, }); expect(cc.sequenceNumber).toEqual(1); expect(cc.dataType).toEqual(EntryControlDataTypes.ASCII); expect(cc.eventType).toEqual(EntryControlEventTypes.DisarmAll); expect(cc.eventData).toEqual("1234"); }); it("the ConfigurationGet command should serialize correctly", () => { const cc = new EntryControlCCConfigurationGet(host, { nodeId: 1, }); const expected = buildCCBuffer( Buffer.from([ EntryControlCommand.ConfigurationGet, // CC Command ]), ); expect(cc.serialize()).toEqual(expected); }); it("the ConfigurationSet command should serialize correctly", () => { const cc = new EntryControlCCConfigurationSet(host, { nodeId: 1, keyCacheSize: 1, keyCacheTimeout: 2, }); const expected = buildCCBuffer( Buffer.from([ EntryControlCommand.ConfigurationSet, // CC Command 0x1, 0x2, ]), ); expect(cc.serialize()).toEqual(expected); }); it("the ConfigurationReport command should be deserialize correctly", () => { const data = buildCCBuffer( Buffer.from([ EntryControlCommand.ConfigurationReport, // CC Command 0x1, 0x2, ]), ); const cc = new EntryControlCCConfigurationReport(host, { nodeId: 1, data, }); expect(cc.keyCacheSize).toEqual(1); expect(cc.keyCacheTimeout).toEqual(2); }); it("the EventSupportedGet command should serialize correctly", () => { const cc = new EntryControlCCEventSupportedGet(host, { nodeId: 1, }); const expected = buildCCBuffer( Buffer.from([ EntryControlCommand.EventSupportedGet, // CC Command ]), ); expect(cc.serialize()).toEqual(expected); }); it("the EventSupportedReport command should be deserialize correctly", () => { const data = buildCCBuffer( Buffer.from([ EntryControlCommand.EventSupportedReport, // CC Command 1, 0b00000100, 4, 0b01101000, 0b00000000, 0b00000000, 0b00000010, 1, 20, 2, 9, ]), ); const cc = new EntryControlCCEventSupportedReport(host, { nodeId: 1, data, }); expect(cc.supportedDataTypes).toEqual([EntryControlDataTypes.ASCII]); expect(cc.supportedEventTypes).toEqual([ EntryControlEventTypes.DisarmAll, EntryControlEventTypes.ArmAway, EntryControlEventTypes.ArmHome, EntryControlEventTypes.Cancel, ]); expect(cc.minKeyCacheSize).toEqual(1); expect(cc.maxKeyCacheSize).toEqual(20); expect(cc.minKeyCacheTimeout).toEqual(2); expect(cc.maxKeyCacheTimeout).toEqual(9); }); it("the KeySupportedGet command should serialize correctly", () => { const cc = new EntryControlCCKeySupportedGet(host, { nodeId: 1 }); const expected = buildCCBuffer( Buffer.from([ EntryControlCommand.KeySupportedGet, // CC Command ]), ); expect(cc.serialize()).toEqual(expected); }); it("the KeySupportedReport command should be deserialize correctly", () => { const data = buildCCBuffer( Buffer.from([ EntryControlCommand.KeySupportedReport, // CC Command 1, 0b01011010, ]), ); const cc = new EntryControlCCKeySupportedReport(host, { nodeId: 1, data, }); expect(cc.supportedKeys).toEqual([1, 3, 4, 6]); }); });