dlms-protocol
Version:
DLMS Protocol parser for JavaScript
106 lines (84 loc) • 3.4 kB
JavaScript
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");
});
});