dlms-protocol
Version:
DLMS Protocol parser for JavaScript
95 lines (77 loc) • 3.45 kB
JavaScript
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.");
});
});