UNPKG

dlms-protocol

Version:

DLMS Protocol parser for JavaScript

61 lines (47 loc) 2.53 kB
import DlmsDataType from "../src/enum/DlmsDataType"; import DlmsBitstring from "../src/typesDLMS/DlmsBitstring"; describe("DlmsBitstring class", () => { test("should initialize with default values when no data is provided", () => { const dlmsBitstring = new DlmsBitstring(); expect(dlmsBitstring.tag).toBe(DlmsDataType.BITSTRING); expect(dlmsBitstring.totalBytes).toBe(0); expect(dlmsBitstring.rawValue).toEqual([]); expect(dlmsBitstring.bodyBytes).toEqual([]); expect(dlmsBitstring.value).toBe(""); expect(dlmsBitstring.size).toBe(0); }); test("should throw an error if tag does not match when inserting data", () => { const data = [0xFF, 8, 0xFF]; // Tag inválida const dlmsBitstring = new DlmsBitstring(); expect(() => dlmsBitstring.insertData(data)).toThrow("Tag mismatch."); }); test("should correctly parse a bitstring with insertData()", () => { const data = [DlmsDataType.BITSTRING, 8, 0b10101010]; const dlmsBitstring = new DlmsBitstring(); dlmsBitstring.insertData(data); expect(dlmsBitstring.size).toBe(8); expect(dlmsBitstring.bodyBytes).toEqual([0b10101010]); expect(dlmsBitstring.value).toBe("10101010"); expect(dlmsBitstring.rawValue).toEqual([DlmsDataType.BITSTRING, 8, 0b10101010]); expect(dlmsBitstring.totalBytes).toBe(3); }); test("should correctly handle a bitstring of non-multiple-of-8 size", () => { const data = [DlmsDataType.BITSTRING, 10, 0b10101010, 0b11000000]; const dlmsBitstring = new DlmsBitstring(); dlmsBitstring.insertData(data); expect(dlmsBitstring.size).toBe(10); expect(dlmsBitstring.bodyBytes).toEqual([0b10101010, 0b11000000]); expect(dlmsBitstring.value).toBe("1010101011"); // Trimmed to the first 10 bits expect(dlmsBitstring.rawValue).toEqual([DlmsDataType.BITSTRING, 10, 0b10101010, 0b11000000]); expect(dlmsBitstring.totalBytes).toBe(4); }); test("should return the correct value with getValue()", () => { const data = [DlmsDataType.BITSTRING, 8, 0b11110000]; const dlmsBitstring = new DlmsBitstring(data); expect(dlmsBitstring.getValue()).toBe("11110000"); }); test("should throw an error if getStandardLength() is called", () => { const dlmsBitstring = new DlmsBitstring(); expect(() => dlmsBitstring.getStandardLength()).toThrow("Method not implemented."); }); });