dlms-protocol
Version:
DLMS Protocol parser for JavaScript
61 lines (47 loc) • 2.53 kB
JavaScript
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.");
});
});