UNPKG

dlms-protocol

Version:

DLMS Protocol parser for JavaScript

95 lines (77 loc) 3.45 kB
import UnconfirmedWriteRequest from "../src/messages/UnconfirmedWriteRequest"; import MessageType from "../src/enum/MessageType"; describe("UnconfirmedWriteRequest class", () => { const mockData = { rawValue: [0x12, 0x34, 0x56], }; beforeEach(() => { jest.clearAllMocks(); }); test("should initialize with default values when no parameters are provided", () => { const request = new UnconfirmedWriteRequest(); expect(request.variableAccessSpecificationQty).toBe(0x01); expect(request.variableAccessSpecification).toBe(0x02); expect(request.variableName).toBeNull(); expect(request.dataQty).toBe(0x00); expect(request.data).toBeNull(); expect(request.value).toEqual([]); expect(request.parameters).toEqual([]); expect(request.variableParameters).toEqual([]); }); test("should correctly initialize with data and variableName", () => { const request = new UnconfirmedWriteRequest(mockData, 256); expect(request.variableAccessSpecificationQty).toBe(0x01); expect(request.variableAccessSpecification).toBe(0x02); expect(request.variableName).toBe(256); expect(request.dataQty).toBe(0x01); expect(request.data).toEqual(mockData); expect(request.value).toEqual([]); expect(request.parameters).toEqual([]); expect(request.variableParameters).toEqual([]); }); test("should return the correct byte array with getBytes()", () => { const request = new UnconfirmedWriteRequest(mockData, 256); const result = request.getBytes(); expect(result).toEqual([ MessageType.UNCONFIRMED_WRITE_REQUEST, 0x01, // variableAccessSpecificationQty 0x02, // variableAccessSpecification 0x01, 0x00, // variableName (256) 0x01, // dataQty ...mockData.rawValue, // data.rawValue ]); }); test("should handle parameters correctly in getBytes()", () => { const request = new UnconfirmedWriteRequest(null, 256); request.parameters = [0x78, 0x9A]; const result = request.getBytes(); expect(result).toEqual([ MessageType.UNCONFIRMED_WRITE_REQUEST, 0x01, // variableAccessSpecificationQty 0x02, // variableAccessSpecification 0x01, 0x00, // variableName (256) 0x01, // dataQty 0x78, 0x9A, // parameters ]); }); test("should return the correct hexadecimal string with getHexString()", () => { const request = new UnconfirmedWriteRequest(mockData, 256); request.getBytes(); // Populate value const hexString = request.getHexString(); const expectedHex = [ MessageType.UNCONFIRMED_WRITE_REQUEST, 0x01, // variableAccessSpecificationQty 0x02, // variableAccessSpecification 0x01, 0x00, // variableName (256) 0x01, // dataQty ...mockData.rawValue, // data.rawValue ] .map(byte => byte.toString(16).toUpperCase().padStart(2, "0")) .join(" "); expect(hexString).toBe(expectedHex); }); test("should throw an error when calling insertData()", () => { const request = new UnconfirmedWriteRequest(); expect(() => request.insertData([])).toThrow("Method not implemented."); }); });