UNPKG

node-vscp

Version:
241 lines (204 loc) 7.82 kB
var assert = require('assert'); const vscp_class = require('node-vscp-class'); const vscp_type = require('node-vscp-type'); const vscp = require("../src/vscp.js"); describe('CANAL helpers', function() { /* Bit 15 - This is a dumb node. No MDF, register, nothing. Bit 14 - GUID type Bit 13 - GUID type Bit 12 - GUID type (GUID is IP v.6 address.) Bit 8-11 = Reserved Bit 765 = priority, Priority 0-7 where 0 is highest. Bit 4 = hard coded, true for a hard coded device. Bit 3 = Don't calculate CRC, false for CRC usage. Just checked when CRC is used. If set the CRC should be set to 0xAA55 for the event to be accepted without a CRC check. Bit 2 = Rolling index. Bit 1 = Rolling index. Bit 0 = Rolling index. */ describe('vscp.getVscpHeadFromCANALid(id)', function() { it('should return 0x00f0.', function() { var id = 0x1e0a0601; // Priority=7, Hardcoded var vscpHead = vscp.getVscpHeadFromCANALid(id); assert.equal(vscpHead, 0x00f0); }); it('should return 0x00e0.', function() { var id = 0x1c0a0601; // Priority=7, NOT Hardcoded var vscpHead = vscp.getVscpHeadFromCANALid(id); assert.equal(vscpHead, 0x00e0); }); it('should return 0x00e0.', function() { var id = 0x020a0601; // Priority=0, Hardcoded var vscpHead = vscp.getVscpHeadFromCANALid(id); assert.equal(vscpHead, 0x0010); }); }); describe('vscp.getVscpClassFromCANALid(id)', function() { it('should return 10.', function() { var id = 0x1e0a0601; // Priority=7, Hardcoded var vscpHead = vscp.getVscpClassFromCANALid(id); assert.equal(vscpHead, 10); }); }); describe('vscp.getVscpTypeFromCANALid(id)', function() { it('should return 6.', function() { var id = 0x1e0a0601; // Priority=7, Hardcoded var vscpHead = vscp.getVscpTypeFromCANALid(id); assert.equal(vscpHead, 6); }); }); describe('vscp.getNicknameFromCANALid(id)', function() { it('should return 1.', function() { var id = 0x1e0a0601; // Priority=7, Hardcoded var vscpHead = vscp.getNicknameFromCANALid(id); assert.equal(vscpHead, 1); }); }); describe('vscp.getCANALid(id)', function() { it('should return 656896.', function() { var id = vscp.getCANALid(0,10,6); assert.equal(id, 0x000a0600); }); it('should return 470418944.', function() { var id = vscp.getCANALid(7,10,6); assert.equal(id, 0x1c0a0600); }); }); describe('vscp.convertEventToCanMsg(ev)', function() { it('should return 656897.', function() { // Define event with members var ev = new vscp.Event(); ev.vscpObId = 1234; ev.vscpClass = 10; ev.vscpType = 6; ev.vscpData = [1,2,3,4,5]; ev.vscpGuid = "FF:FF:FF:FF:FF:FF:FF:FE:B8:27:EB:40:59:96:00:32"; var canmsg = vscp.convertEventToCanMsg(ev); assert.equal(canmsg.id, 0x000a0632); }); it('should return 1234.', function() { // Define event with members var ev = new vscp.Event(); ev.vscpObId = 1234; ev.vscpClass = 10; ev.vscpType = 6; ev.vscpData = [1,2,3,4,5]; ev.vscpGuid = "FF:FF:FF:FF:FF:FF:FF:FE:B8:27:EB:40:59:96:00:32"; var canmsg = vscp.convertEventToCanMsg(ev); assert.equal(canmsg.obid, 1234); }); it('should return 0.', function() { // Define event with members var ev = new vscp.Event(); ev.vscpObId = 1234; ev.vscpClass = 10; ev.vscpType = 6; ev.vscpData = [1,2,3,4,5]; ev.vscpGuid = "FF:FF:FF:FF:FF:FF:FF:FE:B8:27:EB:40:59:96:00:32"; var canmsg = vscp.convertEventToCanMsg(ev); assert.equal(canmsg.timestamp, 0); }); it('should return [1,2,3,4,5].', function() { // Define event with members var ev = new vscp.Event(); ev.vscpObId = 1234; ev.vscpClass = 10; ev.vscpType = 6; ev.vscpData = [1,2,3,4,5]; ev.vscpGuid = "FF:FF:FF:FF:FF:FF:FF:FE:B8:27:EB:40:59:96:00:32"; var canmsg = vscp.convertEventToCanMsg(ev); assert.equal(canmsg.data.length, 5); assert.equal(canmsg.data[0], 1); assert.equal(canmsg.data[1], 2); assert.equal(canmsg.data[2], 3); assert.equal(canmsg.data[3], 4); assert.equal(canmsg.data[4], 5); }); it('should return 1.', function() { // Define event with members var ev = new vscp.Event(); ev.vscpObId = 1234; ev.vscpClass = 10; ev.vscpType = 6; ev.vscpData = [1,2,3,4,5]; ev.vscpGuid = "FF:FF:FF:FF:FF:FF:FF:FE:B8:27:EB:40:59:96:00:32"; var canmsg = vscp.convertEventToCanMsg(ev); assert.equal(canmsg.flags, 1); }); }); describe('vscp.convertCanMsgToEvent(ev)', function() { it('should return 10.', function() { var canmsg = { "id": vscp.getCANALid(7,10,6)+42, "ext": true, "rtr": false, "dlc": 4, "data": "1,2,3,4" }; var ev = vscp.convertCanMsgToEvent(canmsg); assert.equal(ev.vscpClass, 10); }); it('should return 6.', function() { var canmsg = { "id": vscp.getCANALid(7,10,6)+42, "ext": true, "rtr": false, "dlc": 4, "data": "1,2,3,4" }; var ev = vscp.convertCanMsgToEvent(canmsg); assert.equal(ev.vscpType, 6); }); it('should return 42.', function() { var canmsg = { "id": vscp.getCANALid(7,10,6)+42, "ext": true, "rtr": false, "dlc": 4, "data": "1,2,3,4" }; var ev = vscp.convertCanMsgToEvent(canmsg); assert.equal(vscp.getNickName(ev.vscpGuid), 42); }); it('should return 0xE0.', function() { var canmsg = { "id": vscp.getCANALid(7,10,6)+42, "ext": true, "rtr": false, "dlc": 4, "data": "1,2,3,4" }; var ev = vscp.convertCanMsgToEvent(canmsg); assert.equal(ev.vscpHead, 0xE0); }); it('should return 0xE0.', function() { var canmsg = { "id": vscp.getCANALid(1,10,6)+42, "ext": true, "rtr": false, "dlc": 4, "data": "1,2,3,4" }; var ev = vscp.convertCanMsgToEvent(canmsg); assert.equal(ev.vscpHead, 0x20); }); it('should return [1,2,3,4].', function() { var canmsg = { "id": vscp.getCANALid(7,10,6)+42, "ext": true, "rtr": false, "dlc": 4, "data": "1,2,3,4" }; var ev = vscp.convertCanMsgToEvent(canmsg); assert.equal(ev.vscpData.length, 4); assert.equal(ev.vscpData[0], 1); assert.equal(ev.vscpData[1], 2); assert.equal(ev.vscpData[2], 3); assert.equal(ev.vscpData[3], 4); }); }); });