UNPKG

dlms-protocol

Version:

DLMS Protocol parser for JavaScript

83 lines (66 loc) 3.16 kB
import DlmsInt8 from "../src/typesDLMS/DlmsInt8"; import DlmsDataType from "../src/enum/DlmsDataType"; describe("DlmsInt8 class", () => { test("should initialize with default values when no data is provided", () => { const dlmsInt8 = new DlmsInt8(); expect(dlmsInt8.tag).toBe(DlmsDataType.INT8); expect(dlmsInt8.totalBytes).toBe(0); expect(dlmsInt8.rawValue).toEqual([]); expect(dlmsInt8.bodyBytes).toEqual([]); expect(dlmsInt8.value).toBe(0); }); test("should correctly initialize from a byte array", () => { const data = [DlmsDataType.INT8, 0x7F]; // INT8 tag and value (127) const dlmsInt8 = new DlmsInt8(data); expect(dlmsInt8.tag).toBe(DlmsDataType.INT8); expect(dlmsInt8.totalBytes).toBe(2); expect(dlmsInt8.rawValue).toEqual([DlmsDataType.INT8, 0x7F]); expect(dlmsInt8.bodyBytes).toEqual([0x7F]); expect(dlmsInt8.value).toBe(127); }); test("should correctly handle negative values in a byte array", () => { const data = [DlmsDataType.INT8, 0x80]; // INT8 tag and value (-128) const dlmsInt8 = new DlmsInt8(data); expect(dlmsInt8.value).toBe(-128); }); test("should throw an error if tag does not match when inserting data", () => { const data = [0xFF, 0x7F]; // Invalid tag const dlmsInt8 = new DlmsInt8(); expect(() => dlmsInt8.insertData(data)).toThrow("Tag mismatch."); }); test("should correctly initialize from a numeric value", () => { const dlmsInt8 = new DlmsInt8(-5); expect(dlmsInt8.tag).toBe(DlmsDataType.INT8); expect(dlmsInt8.totalBytes).toBe(2); expect(dlmsInt8.rawValue).toEqual([DlmsDataType.INT8, 0xFB]); // -5 in signed byte: 0xFB expect(dlmsInt8.bodyBytes).toEqual([0xFB]); expect(dlmsInt8.value).toBe(-5); }); test("should return the correct standard length", () => { const dlmsInt8 = new DlmsInt8(); expect(dlmsInt8.getStandardLength()).toBe(2); }); test("should return the correct value with getValue()", () => { const data = [DlmsDataType.INT8, 0x05]; const dlmsInt8 = new DlmsInt8(data); expect(dlmsInt8.getValue()).toBe(5); }); test("should correctly insert data from a byte array", () => { const dlmsInt8 = new DlmsInt8(); dlmsInt8.insertData([DlmsDataType.INT8, 0x03]); expect(dlmsInt8.tag).toBe(DlmsDataType.INT8); expect(dlmsInt8.totalBytes).toBe(2); expect(dlmsInt8.rawValue).toEqual([DlmsDataType.INT8, 0x03]); expect(dlmsInt8.bodyBytes).toEqual([0x03]); expect(dlmsInt8.value).toBe(3); }); test("should correctly insert data from a numeric value", () => { const dlmsInt8 = new DlmsInt8(); dlmsInt8.insertDataFromValue(-10); expect(dlmsInt8.tag).toBe(DlmsDataType.INT8); expect(dlmsInt8.totalBytes).toBe(2); expect(dlmsInt8.rawValue).toEqual([DlmsDataType.INT8, 0xF6]); // -10 in signed byte: 0xF6 expect(dlmsInt8.bodyBytes).toEqual([0xF6]); expect(dlmsInt8.value).toBe(-10); }); });