UNPKG

knxultimate

Version:

KNX IP protocol implementation for Node. This is the ENGINE of Node-Red KNX-Ultimate node.

78 lines (64 loc) 2.94 kB
import { describe, it } from 'node:test' import assert from 'node:assert' import KNXConnectionStateRequest from '../../src/protocol/KNXConnectionStateRequest' import HPAI from '../../src/protocol/HPAI' import { KNX_CONSTANTS } from '../../src/protocol/KNXConstants' describe('KNXConnectionStateRequest', () => { it('should create a KNXConnectionStateRequest with channelID and HPAI', () => { const hpai = new HPAI('192.168.1.1', 3671, KNX_CONSTANTS.IPV4_UDP) const request = new KNXConnectionStateRequest(1, hpai) assert.strictEqual(request.channelID, 1) assert.strictEqual(request.hpaiControl, hpai) }) it('should create a KNXConnectionStateRequest with default HPAI', () => { const request = new KNXConnectionStateRequest(1) assert.strictEqual(request.channelID, 1) assert.deepStrictEqual(request.hpaiControl, HPAI.NULLHPAI) }) it('should create a KNXConnectionStateRequest from buffer', () => { const hpai = new HPAI('192.168.1.1', 3671, KNX_CONSTANTS.IPV4_UDP) const buffer = Buffer.alloc(10) buffer.writeUInt8(1, 0) buffer.writeUInt8(0, 1) hpai.toBuffer().copy(buffer, 2) const request = KNXConnectionStateRequest.createFromBuffer(buffer) assert.strictEqual(request.channelID, 1) assert.deepStrictEqual(request.hpaiControl, hpai) }) it('should throw an error if buffer is too short', () => { const buffer = Buffer.alloc(1) // too small assert.throws(() => { KNXConnectionStateRequest.createFromBuffer(buffer) }, /offset 2 out of buffer range 1/) }) it('should handle buffer with exact required length', () => { const buffer = Buffer.alloc(10) buffer.writeUInt8(1, 0) // channelID buffer.writeUInt8(0, 1) // reserved const hpai = new HPAI('192.168.1.1', 3671, KNX_CONSTANTS.IPV4_UDP) hpai.toBuffer().copy(buffer, 2) const request = KNXConnectionStateRequest.createFromBuffer(buffer) assert.strictEqual(request.channelID, 1) assert.deepStrictEqual(request.hpaiControl, hpai) }) it('should convert KNXConnectionStateRequest to buffer', () => { const hpai = new HPAI('192.168.1.1', 3671, KNX_CONSTANTS.IPV4_UDP) const request = new KNXConnectionStateRequest(1, hpai) const resultBuffer = request.toBuffer() const expectedBuffer = Buffer.alloc(16) expectedBuffer.writeUInt8(6, 0) // Header length expectedBuffer.writeUInt8(16, 1) // Protocol version expectedBuffer.writeUInt16BE(KNX_CONSTANTS.CONNECTIONSTATE_REQUEST, 2) // Service type expectedBuffer.writeUInt16BE(16, 4) // Total length expectedBuffer.writeUInt8(1, 6) // channelID expectedBuffer.writeUInt8(0, 7) // reserved hpai.toBuffer().copy(expectedBuffer, 8) assert.deepStrictEqual(resultBuffer, expectedBuffer) }) it('should handle edge case channelID values', () => { const request1 = new KNXConnectionStateRequest(0) assert.strictEqual(request1.channelID, 0) const request2 = new KNXConnectionStateRequest(255) assert.strictEqual(request2.channelID, 255) }) })