UNPKG

dlms-protocol

Version:

DLMS Protocol parser for JavaScript

78 lines (62 loc) 3.1 kB
import DlmsDataType from "../src/enum/DlmsDataType"; import DlmsDatas from "../src/typesDLMS/DlmsDatas"; import DlmsArrayStruct from "../src/typesDLMS/DlmsArrayStruct"; jest.mock("../src/typesDLMS/DlmsDatas"); // Mock da classe DlmsDatas describe("DlmsArrayStruct class", () => { beforeEach(() => { DlmsDatas.factory.mockClear(); }); test("should initialize with default values when no data is provided", () => { const dlmsStruct = new DlmsArrayStruct(); expect(dlmsStruct.tag).toBe(DlmsDataType.STRUCT); expect(dlmsStruct.totalBytes).toBe(0); expect(dlmsStruct.rawValue).toEqual([]); expect(dlmsStruct.bodyBytes).toEqual([]); expect(dlmsStruct.size).toBe(0); expect(dlmsStruct.value).toEqual([]); }); test("should throw an error if tag does not match when inserting data", () => { const data = [0xFF, 2]; // Tag inválida const dlmsStruct = new DlmsArrayStruct(); expect(() => dlmsStruct.insertData(data)).toThrow("Tag mismatch."); }); test("should correctly parse data with insertData()", () => { // Mockando um item de DlmsDatas const mockDlmsData = { totalBytes: 2, rawValue: [0x02, 0x01], insertData: jest.fn(), }; DlmsDatas.factory.mockReturnValueOnce(mockDlmsData); const data = [DlmsDataType.STRUCT, 1, 0x02, 0x01]; const dlmsStruct = new DlmsArrayStruct(); dlmsStruct.insertData(data); expect(dlmsStruct.size).toBe(1); expect(dlmsStruct.bodyBytes).toEqual([0x02, 0x01]); expect(dlmsStruct.value.length).toBe(1); expect(dlmsStruct.value[0]).toBe(mockDlmsData); expect(dlmsStruct.rawValue).toEqual([DlmsDataType.STRUCT, 1, 0x02, 0x01]); expect(dlmsStruct.totalBytes).toBe(4); expect(mockDlmsData.insertData).toHaveBeenCalledWith([0x02, 0x01]); }); test("should correctly insert data from a list of DlmsDatas with insertDataFromList()", () => { const mockDlmsData1 = { rawValue: [0x02, 0x01] }; const mockDlmsData2 = { rawValue: [0x03, 0x04] }; const dlmsStruct = new DlmsArrayStruct(); dlmsStruct.insertDataFromList([mockDlmsData1, mockDlmsData2]); expect(dlmsStruct.size).toBe(2); expect(dlmsStruct.bodyBytes).toEqual([0x02, 0x01, 0x03, 0x04]); expect(dlmsStruct.value).toEqual([mockDlmsData1, mockDlmsData2]); expect(dlmsStruct.rawValue).toEqual([DlmsDataType.STRUCT, 2, 0x02, 0x01, 0x03, 0x04]); expect(dlmsStruct.totalBytes).toBe(6); }); test("should return the correct value with getValue()", () => { const mockDlmsData = { rawValue: [0x02, 0x01] }; const dlmsStruct = new DlmsArrayStruct(null, [mockDlmsData]); expect(dlmsStruct.getValue()).toEqual([mockDlmsData]); }); test("should throw an error if getStandardLength() is called", () => { const dlmsStruct = new DlmsArrayStruct(); expect(() => dlmsStruct.getStandardLength()).toThrow("Method not implemented."); }); });