dlms-protocol
Version:
DLMS Protocol parser for JavaScript
100 lines (78 loc) • 3.51 kB
JavaScript
import ReadRequest from "../src/messages/ReadRequest";
import MessageType from "../src/enum/MessageType";
describe("ReadRequest class", () => {
test("should initialize with default values when no parameters are provided", () => {
const readRequest = new ReadRequest();
expect(readRequest.qty).toBe(0);
expect(readRequest.variableNames).toEqual([]);
expect(readRequest.value).toEqual([]);
expect(readRequest.variableParameters).toEqual([]);
});
test("should initialize with variableNames array", () => {
const variableNames = [256, 512, 768]; // Example variable names
const readRequest = new ReadRequest(variableNames);
expect(readRequest.qty).toBe(3);
expect(readRequest.variableNames).toEqual(variableNames);
expect(readRequest.variableParameters).toEqual([]);
});
test("should initialize with variableNamesString", () => {
const variableNamesString = "123456";
const readRequest = new ReadRequest(null, variableNamesString);
expect(readRequest.qty).toBe(1);
expect(readRequest.variableNames).toEqual([]);
expect(readRequest.variableParameters).toEqual([0x12, 0x34, 0x56]);
});
test("should correctly insert data with insertData()", () => {
const variableNames = [1024, 2048];
const readRequest = new ReadRequest();
readRequest.insertData(variableNames);
expect(readRequest.qty).toBe(2);
expect(readRequest.variableNames).toEqual(variableNames);
expect(readRequest.variableParameters).toEqual([]);
});
test("should return the correct byte array with getBytes() (variableNames)", () => {
const variableNames = [256, 512];
const readRequest = new ReadRequest(variableNames);
const result = readRequest.getBytes();
expect(result).toEqual([
MessageType.READ_REQUEST,
2, // qty
0x02, // Indicator byte
0x01, 0x00, // Variable 256
0x02, 0x00, // Variable 512
]);
});
test("should return the correct byte array with getBytes() (variableNamesString)", () => {
const variableNamesString = "123456";
const readRequest = new ReadRequest(null, variableNamesString);
const result = readRequest.getBytes();
expect(result).toEqual([
MessageType.READ_REQUEST,
1, // qty
0x02, // Indicator byte
0x12, 0x34, 0x56, // Variable parameters
]);
});
test("should return the correct hexadecimal string with getHexString()", () => {
const variableNames = [256, 512];
const readRequest = new ReadRequest(variableNames);
readRequest.getBytes(); // Populate value
const hexString = readRequest.getHexString();
const expectedHex = [
MessageType.READ_REQUEST,
2, // qty
0x02, // Indicator byte
0x01, 0x00, // Variable 256
0x02, 0x00, // Variable 512
]
.map(byte => byte.toString(16).toUpperCase().padStart(2, "0"))
.join(" ");
expect(hexString).toBe(expectedHex);
});
test("should correctly convert hex string to byte array with _stringToBytes()", () => {
const readRequest = new ReadRequest();
const hexString = "123456";
const result = readRequest._stringToBytes(hexString);
expect(result).toEqual([0x12, 0x34, 0x56]);
});
});