UNPKG

knxultimate

Version:

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

92 lines (80 loc) 2.23 kB
/** * Validates KNX Data Point Type 232 conversions. * * Written in Italy with love, sun and passion, by Massimo Saccani. * * Released under the MIT License. * Use at your own risk; the author assumes no liability for damages. */ import { describe, test } from 'node:test' import assert from 'node:assert/strict' import DPT232 from '../../src/dptlib/dpt232' describe('DPT232 (3-byte RGB color array)', () => { describe('formatAPDU', () => { test('should format valid RGB values correctly', () => { // Test pure red assert.deepEqual( DPT232.formatAPDU({ red: 255, green: 0, blue: 0 }), Buffer.from([255, 0, 0]), ) // Test pure green assert.deepEqual( DPT232.formatAPDU({ red: 0, green: 255, blue: 0 }), Buffer.from([0, 255, 0]), ) // Test pure blue assert.deepEqual( DPT232.formatAPDU({ red: 0, green: 0, blue: 255 }), Buffer.from([0, 0, 255]), ) // Test mixed color assert.deepEqual( DPT232.formatAPDU({ red: 128, green: 64, blue: 32 }), Buffer.from([128, 64, 32]), ) }) test('should handle floating point values by flooring them', () => { assert.deepEqual( DPT232.formatAPDU({ red: 128.7, green: 64.2, blue: 32.9 }), Buffer.from([128, 64, 32]), ) }) }) describe('fromBuffer', () => { test('should parse valid buffers correctly', () => { // Test pure colors assert.deepEqual(DPT232.fromBuffer(Buffer.from([255, 0, 0])), { red: 255, green: 0, blue: 0, }) assert.deepEqual(DPT232.fromBuffer(Buffer.from([0, 255, 0])), { red: 0, green: 255, blue: 0, }) assert.deepEqual(DPT232.fromBuffer(Buffer.from([0, 0, 255])), { red: 0, green: 0, blue: 255, }) // Test mixed color assert.deepEqual(DPT232.fromBuffer(Buffer.from([128, 64, 32])), { red: 128, green: 64, blue: 32, }) }) test('should handle invalid buffer lengths', () => { // Test empty buffer assert.strictEqual(DPT232.fromBuffer(Buffer.from([])), null) // Test buffer too short assert.strictEqual(DPT232.fromBuffer(Buffer.from([255, 0])), null) // Test buffer too long assert.strictEqual( DPT232.fromBuffer(Buffer.from([255, 0, 0, 0])), null, ) }) }) })