dlms-protocol
Version:
DLMS Protocol parser for JavaScript
79 lines (64 loc) • 3.04 kB
JavaScript
import DlmsEnum from "../src/typesDLMS/DlmsEnum";
import DlmsDataType from "../src/enum/DlmsDataType";
describe("DlmsEnum class", () => {
test("should initialize with default values when no data is provided", () => {
const dlmsEnum = new DlmsEnum();
expect(dlmsEnum.tag).toBe(DlmsDataType.ENUM);
expect(dlmsEnum.totalBytes).toBe(0);
expect(dlmsEnum.rawValue).toEqual([]);
expect(dlmsEnum.bodyBytes).toEqual([]);
expect(dlmsEnum.value).toBe(0);
});
test("should correctly initialize from a byte array", () => {
const data = [DlmsDataType.ENUM, 0x05]; // ENUM tag and value
const dlmsEnum = new DlmsEnum(data);
expect(dlmsEnum.tag).toBe(DlmsDataType.ENUM);
expect(dlmsEnum.totalBytes).toBe(2);
expect(dlmsEnum.rawValue).toEqual([DlmsDataType.ENUM, 0x05]);
expect(dlmsEnum.bodyBytes).toEqual([0x05]);
expect(dlmsEnum.value).toBe(0x05);
});
test("should throw an error if tag does not match when initializing from a byte array", () => {
const data = [0xFF, 0x05]; // Invalid tag
expect(() => new DlmsEnum(data)).toThrow("Tag mismatch.");
});
test("should correctly initialize from a numeric value", () => {
const dlmsEnum = new DlmsEnum(0x0A);
expect(dlmsEnum.tag).toBe(DlmsDataType.ENUM);
expect(dlmsEnum.totalBytes).toBe(2);
expect(dlmsEnum.rawValue).toEqual([DlmsDataType.ENUM, 0x0A]);
expect(dlmsEnum.bodyBytes).toEqual([0x0A]);
expect(dlmsEnum.value).toBe(0x0A);
});
test("should return the correct standard length", () => {
const dlmsEnum = new DlmsEnum();
expect(dlmsEnum.getStandardLength()).toBe(2);
});
test("should return the correct value with getValue()", () => {
const data = [DlmsDataType.ENUM, 0x03];
const dlmsEnum = new DlmsEnum(data);
expect(dlmsEnum.getValue()).toBe(0x03);
});
test("should correctly insert data from a byte array", () => {
const dlmsEnum = new DlmsEnum();
dlmsEnum.insertData([DlmsDataType.ENUM, 0x07]);
expect(dlmsEnum.tag).toBe(DlmsDataType.ENUM);
expect(dlmsEnum.totalBytes).toBe(2);
expect(dlmsEnum.rawValue).toEqual([DlmsDataType.ENUM, 0x07]);
expect(dlmsEnum.bodyBytes).toEqual([0x07]);
expect(dlmsEnum.value).toBe(0x07);
});
test("should throw an error if tag does not match when inserting data", () => {
const dlmsEnum = new DlmsEnum();
expect(() => dlmsEnum.insertData([0xFF, 0x07])).toThrow("Tag mismatch.");
});
test("should correctly insert data from an enum value", () => {
const dlmsEnum = new DlmsEnum();
dlmsEnum.insertDataFromEnum(0x09);
expect(dlmsEnum.tag).toBe(DlmsDataType.ENUM);
expect(dlmsEnum.totalBytes).toBe(2);
expect(dlmsEnum.rawValue).toEqual([DlmsDataType.ENUM, 0x09]);
expect(dlmsEnum.bodyBytes).toEqual([0x09]);
expect(dlmsEnum.value).toBe(0x09);
});
});