dlms-protocol
Version:
DLMS Protocol parser for JavaScript
83 lines (66 loc) • 3.16 kB
JavaScript
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);
});
});