Skip to content

Commit 0265dd9

Browse files
committed
Modes basic test coverage
1 parent 2ba2bb7 commit 0265dd9

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed

src/converters.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export class Converters {
1+
export class Converters {
22
private static textEncoder = new TextEncoder();
33

44
static byteToHex(value: number): string {
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import {AsciiModeStrategy} from "./ascii-mode-strategy";
2+
import {Converters} from "../converters";
3+
import {ReportType} from "./mode-startegy";
4+
5+
describe('AsciiModeStrategy', () => {
6+
const validFrame = ':0401000A000DE4\r\n';
7+
8+
test('accept a valid frame', () => {
9+
const instance = new AsciiModeStrategy(jest.fn());
10+
11+
instance.receive(Converters.textAsUInt8Array(validFrame));
12+
13+
expect(instance.report).toHaveBeenCalledTimes(1);
14+
expect(instance.report).toHaveBeenCalledWith([0x04, 0x01, 0x00, 0x0A, 0x00, 0x0D], ReportType.valid);
15+
});
16+
17+
test('calculates the correct LRC on send', () => {
18+
const instance = new AsciiModeStrategy(jest.fn());
19+
20+
let result = instance.send([0x04, 0x01, 0x00, 0x0A, 0x00, 0x0D]);
21+
22+
expect(result).toEqual(Converters.textAsUInt8Array(validFrame));
23+
expect(instance.report).toHaveBeenCalledTimes(0);
24+
});
25+
});

src/mode/rtu-mode-strategy.test.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import {RtuModeStrategy} from "./rtu-mode-strategy";
2+
import {ReportType} from "./mode-startegy";
3+
4+
describe('RtuModeStrategy', () => {
5+
const validFrame = [0x04, 0x01, 0x00, 0x0A, 0x00, 0x0D, 0xdd, 0x98];
6+
7+
test('extract data from valid frame', () => {
8+
const instance = new RtuModeStrategy(jest.fn(), 1000);
9+
10+
instance.receive(new Uint8Array(validFrame));
11+
12+
expect(instance.report).toHaveBeenCalledTimes(1);
13+
expect(instance.report).toHaveBeenCalledWith(validFrame.slice(0, -2), ReportType.valid);
14+
});
15+
16+
test('prepares the right CRC on send', () => {
17+
const instance = new RtuModeStrategy(jest.fn(), 1000);
18+
19+
let result = instance.send(validFrame.slice(0, -2));
20+
21+
expect(result).toEqual(new Uint8Array(validFrame));
22+
expect(instance.report).toHaveBeenCalledTimes(0);
23+
});
24+
});

0 commit comments

Comments
 (0)