aboutsummaryrefslogtreecommitdiff
path: root/pw_hdlc/ts/encoder_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'pw_hdlc/ts/encoder_test.ts')
-rw-r--r--pw_hdlc/ts/encoder_test.ts33
1 files changed, 24 insertions, 9 deletions
diff --git a/pw_hdlc/ts/encoder_test.ts b/pw_hdlc/ts/encoder_test.ts
index 2780fa93e..23451bcfb 100644
--- a/pw_hdlc/ts/encoder_test.ts
+++ b/pw_hdlc/ts/encoder_test.ts
@@ -14,7 +14,7 @@
/* eslint-env browser */
-import {Encoder} from './encoder';
+import { Encoder } from './encoder';
import * as protocol from './protocol';
import * as util from './util';
@@ -40,34 +40,34 @@ describe('Encoder', () => {
it('creates frame for empty data', () => {
const data = textEncoder.encode('');
expect(encoder.uiFrame(0, data)).toEqual(
- withFlags(withFCS(new Uint8Array([0x01, 0x03])))
+ withFlags(withFCS(new Uint8Array([0x01, 0x03]))),
);
expect(encoder.uiFrame(0x1a, data)).toEqual(
- withFlags(withFCS(new Uint8Array([0x35, 0x03])))
+ withFlags(withFCS(new Uint8Array([0x35, 0x03]))),
);
expect(encoder.uiFrame(0x1a, data)).toEqual(
- withFlags(withFCS(textEncoder.encode('\x35\x03')))
+ withFlags(withFCS(textEncoder.encode('\x35\x03'))),
);
});
it('creates frame for one byte', () => {
const data = textEncoder.encode('A');
expect(encoder.uiFrame(0, data)).toEqual(
- withFlags(withFCS(textEncoder.encode('\x01\x03A')))
+ withFlags(withFCS(textEncoder.encode('\x01\x03A'))),
);
});
it('creates frame for multibyte data', () => {
const data = textEncoder.encode('123456789');
expect(encoder.uiFrame(0, data)).toEqual(
- withFlags(withFCS(textEncoder.encode('\x01\x03123456789')))
+ withFlags(withFCS(textEncoder.encode('\x01\x03123456789'))),
);
});
it('creates frame for multibyte data with address', () => {
const data = textEncoder.encode('123456789');
expect(encoder.uiFrame(128, data)).toEqual(
- withFlags(withFCS(textEncoder.encode('\x00\x03\x03123456789')))
+ withFlags(withFCS(textEncoder.encode('\x00\x03\x03123456789'))),
);
});
@@ -75,15 +75,30 @@ describe('Encoder', () => {
const data = textEncoder.encode('\x7d');
const expectedContent = util.concatenate(
textEncoder.encode('\x7d\x5d\x03\x7d\x5d'),
- protocol.frameCheckSequence(textEncoder.encode('\x7d\x03\x7d'))
+ protocol.frameCheckSequence(textEncoder.encode('\x7d\x03\x7d')),
);
expect(encoder.uiFrame(0x3e, data)).toEqual(withFlags(expectedContent));
const data2 = textEncoder.encode('A\x7e\x7dBC');
const expectedContent2 = util.concatenate(
textEncoder.encode('\x7d\x5d\x03A\x7d\x5e\x7d\x5dBC'),
- protocol.frameCheckSequence(textEncoder.encode('\x7d\x03A\x7e\x7dBC'))
+ protocol.frameCheckSequence(textEncoder.encode('\x7d\x03A\x7e\x7dBC')),
);
expect(encoder.uiFrame(0x3e, data2)).toEqual(withFlags(expectedContent2));
});
+
+ it('Computes frameCheckSequence correctly', () => {
+ expect(
+ protocol.frameCheckSequence(textEncoder.encode('\x7d\x03A\x7e\x7dBC')),
+ ).toEqual(new Uint8Array([195, 124, 135, 9]));
+ expect(
+ protocol.frameCheckSequence(textEncoder.encode('\x7d\x5d\x03\x7d\x5d')),
+ ).toEqual(new Uint8Array([183, 144, 10, 115]));
+ expect(
+ protocol.frameCheckSequence(textEncoder.encode('\x7d\x03\x7d')),
+ ).toEqual(new Uint8Array([83, 124, 241, 166]));
+ expect(
+ protocol.frameCheckSequence(textEncoder.encode('hello pigweed')),
+ ).toEqual(new Uint8Array([34, 22, 236, 2]));
+ });
});