UNPKG

dlms-protocol

Version:

DLMS Protocol parser for JavaScript

106 lines (84 loc) 3.4 kB
import WriteResponse from "../src/messages/WriteResponse"; import DataAccessResult from "../src/enum/DataAccessResult"; describe("WriteResponse class", () => { beforeEach(() => { jest.clearAllMocks(); }); test("should initialize with default values when no bytes are provided", () => { const response = new WriteResponse(); expect(response.resultQty).toBe(0); expect(response.status).toBe(0); expect(response.dataAccessResult).toBeNull(); expect(response.value).toEqual([]); }); test("should correctly parse bytes with status = 0", () => { const bytes = [ 0x01, // Message type 0x01, // resultQty 0x00, // status ]; const response = new WriteResponse(bytes); expect(response.resultQty).toBe(0x01); expect(response.status).toBe(0x00); expect(response.dataAccessResult).toBeNull(); expect(response.value).toEqual(bytes); }); test("should correctly parse bytes with dataAccessResult", () => { const bytes = [ 0x0D, // Message type 0x01, // resultQty 0x01, // status (non-zero) 0x01 // dataAccessResult value ]; const response = new WriteResponse(bytes); expect(response.resultQty).toBe(0x01); expect(response.status).toBe(0x00); expect(response.dataAccessResult).toBe("HARDWARE_FAULT"); expect(response.value).toEqual(bytes); }); test("should return 'VALOR_INVALIDO' for an unknown dataAccessResult value", () => { const bytes = [ 0x0D, // Message type 0x01, // resultQty 0x01, // status (non-zero) 0xFF, // Unknown dataAccessResult value ]; const response = new WriteResponse(bytes); expect(response.resultQty).toBe(0x01); expect(response.status).toBe(0x00); expect(response.dataAccessResult).toBe("VALOR_INVALIDO"); expect(response.value).toEqual(bytes); }); test("should return the correct byte array with getBytes()", () => { const bytes = [ 0x0D, // Message type 0x01, // resultQty 0x01, // status (non-zero) 0x04, // dataAccessResult value ]; const response = new WriteResponse(bytes); const result = response.getBytes(); expect(result).toEqual(bytes); }); test("should return the correct hexadecimal string with getHexString()", () => { const bytes = [ 0x0D, // Message type 0x01, // resultQty 0x01, // status (non-zero) 0x04, // dataAccessResult value ]; const response = new WriteResponse(bytes); const hexString = response.getHexString(); const expectedHex = bytes .map(byte => byte.toString(16).toUpperCase().padStart(2, "0")) .join(" "); expect(hexString).toBe(expectedHex); }); test("should correctly return property name by value with getPropertyNameByValue()", () => { const response = new WriteResponse(); const result = response.getPropertyNameByValue(0x00); expect(result).toBe("SUCCESS"); const invalidResult = response.getPropertyNameByValue(0xFF); expect(invalidResult).toBe("VALOR_INVALIDO"); }); });