mirror of
https://github.com/jwetzell/rttrp-js.git
synced 2026-07-26 10:28:48 +00:00
136 lines
4.8 KiB
JavaScript
136 lines
4.8 KiB
JavaScript
const { deepEqual, throws } = require('assert');
|
|
const { describe, it } = require('node:test');
|
|
const { Encoders } = require('@jwetzell/rttrp');
|
|
|
|
const goodTests = [
|
|
{
|
|
description: 'Centroid Position',
|
|
expected: new Uint8Array([
|
|
0x02, 0x00, 0x1d, 0x00, 0x10, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
]),
|
|
bytes: () => {
|
|
return Encoders.CentroidPosition(16, 1, 2, 3);
|
|
},
|
|
},
|
|
{
|
|
description: 'Tracked Point Position',
|
|
expected: new Uint8Array([
|
|
0x06, 0x00, 0x1e, 0x00, 0x10, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
|
]),
|
|
bytes: () => {
|
|
return Encoders.TrackedPointPosition(16, 1, 2, 3, 1);
|
|
},
|
|
},
|
|
{
|
|
description: 'Orientation (Quaternion)',
|
|
expected: new Uint8Array([
|
|
0x03, 0x00, 37, 0x00, 0x10, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
]),
|
|
bytes: () => {
|
|
return Encoders.OrientationQuaternion(16, 1, 2, 3, 4);
|
|
},
|
|
},
|
|
{
|
|
description: 'Orientation (Euler)',
|
|
expected: new Uint8Array([
|
|
0x04, 0x00, 31, 0x00, 0x10, 0x01, 0x23, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
]),
|
|
bytes: () => {
|
|
return Encoders.OrientationEuler(16, 0x0123, 1, 2, 3);
|
|
},
|
|
},
|
|
{
|
|
description: 'Centroid Acceleration and Velocity',
|
|
expected: new Uint8Array([
|
|
0x20, 0x00, 51, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x40, 0xa0, 0x00, 0x00, 0x40, 0xc0, 0x00,
|
|
0x00, 0x40, 0xe0, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x41, 0x10, 0x00, 0x00,
|
|
]),
|
|
bytes: () => {
|
|
return Encoders.CentroidAccelVelocity(1, 2, 3, 4, 5, 6, 7, 8, 9);
|
|
},
|
|
},
|
|
{
|
|
description: 'Tracked Point Acceleration and Velocity',
|
|
expected: new Uint8Array([
|
|
0x21, 0x00, 52, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x40, 0xa0, 0x00, 0x00, 0x40, 0xc0, 0x00,
|
|
0x00, 0x40, 0xe0, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x41, 0x10, 0x00, 0x00, 0x01,
|
|
]),
|
|
bytes: () => {
|
|
return Encoders.TrackedPointAccelVelocity(1, 2, 3, 4, 5, 6, 7, 8, 9, 1);
|
|
},
|
|
},
|
|
{
|
|
description: 'Zone Collision Detection',
|
|
expected: new Uint8Array([
|
|
0x22, 0x00, 0x14, 0x02, 0x08, 0x06, 0x7a, 0x6f, 0x6e, 0x65, 0x20, 0x31, 0x08, 0x06, 0x7a, 0x6f, 0x6e, 0x65, 0x20,
|
|
0x32,
|
|
]),
|
|
bytes: () => {
|
|
return Encoders.ZoneCollisionDetection([Encoders.ZoneObject('zone 1'), Encoders.ZoneObject('zone 2')]);
|
|
},
|
|
},
|
|
{
|
|
description: 'Zone Object',
|
|
expected: new Uint8Array([0x08, 0x06, 0x7a, 0x6f, 0x6e, 0x65, 0x20, 0x31]),
|
|
bytes: () => {
|
|
return Encoders.ZoneObject('zone 1');
|
|
},
|
|
},
|
|
{
|
|
description: 'Trackable (with Timestamp) + Centroid Position Module',
|
|
expected: new Uint8Array([
|
|
81, 0, 42, 4, 84, 101, 115, 116, 103, 213, 152, 27, 1, 2, 0, 29, 0, 100, 63, 240, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
|
|
0, 0, 0, 0, 64, 8, 0, 0, 0, 0, 0, 0,
|
|
]),
|
|
bytes: () => {
|
|
return Encoders.Trackable('Test', [Encoders.CentroidPosition(100, 1, 2, 3)], 1742051355);
|
|
},
|
|
},
|
|
{
|
|
description: 'Trackable (with Timestamp) + Tracked Point Position Module',
|
|
expected: new Uint8Array([
|
|
81, 0, 43, 4, 84, 101, 115, 116, 103, 213, 152, 27, 1, 6, 0, 30, 0, 100, 63, 240, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
|
|
0, 0, 0, 0, 64, 8, 0, 0, 0, 0, 0, 0, 1,
|
|
]),
|
|
bytes: () => {
|
|
return Encoders.Trackable('Test', [Encoders.TrackedPointPosition(100, 1, 2, 3, 1)], 1742051355);
|
|
},
|
|
},
|
|
{
|
|
description: 'RTTrPM + Empty Trackable',
|
|
expected: new Uint8Array([
|
|
65, 84, 67, 52, 0, 2, 0, 0, 0, 1, 0, 0, 27, 18, 52, 86, 120, 1, 1, 0, 9, 4, 84, 101, 115, 116, 0,
|
|
]),
|
|
bytes: () => {
|
|
return Encoders.RTTrPM(1, 0x12345678, [Encoders.Trackable('Test', [])]);
|
|
},
|
|
},
|
|
];
|
|
|
|
describe('RTTrPM Message Encoding', () => {
|
|
goodTests.forEach((messageTest) => {
|
|
it(messageTest.description, () => {
|
|
const actual = messageTest.bytes();
|
|
deepEqual(actual, messageTest.expected);
|
|
});
|
|
});
|
|
});
|
|
|
|
//TODO(jwetzell): add tests that handle errors
|
|
const badTests = [];
|
|
|
|
describe('RTTrPM Message Encoding Throws', () => {
|
|
badTests.forEach((messageTest) => {
|
|
it(messageTest.description, () => {
|
|
messageTest.bytes();
|
|
throws(() => {}, messageTest.throwsMessage);
|
|
});
|
|
});
|
|
});
|