Add Node utilities and tests

This commit is contained in:
Kiyomichi Kosaka
2025-06-15 00:00:56 +02:00
parent 14a8b553a4
commit 3c2d04d7b4
3 changed files with 220 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
const assert = require('node:assert');
const { parseCobiets, formatCobieTimestamp, toCobiets, fromCobiets, getTAIOffsetAt } = require('..');
const test = require('node:test');
test('parseCobiets basic values', () => {
assert.strictEqual(parseCobiets('0.0000'), 0);
assert.strictEqual(parseCobiets('1.0000'), 0x10000);
assert.strictEqual(parseCobiets('-1.0000'), -0x10000);
assert.strictEqual(parseCobiets('0.0001'), 1);
});
test('formatCobieTimestamp round trip', () => {
const str = '+1.0001';
const parsed = parseCobiets(str);
assert.strictEqual(formatCobieTimestamp(parsed), str);
});
test('getTAIOffsetAt known dates', () => {
assert.strictEqual(getTAIOffsetAt(new Date('1972-01-01T00:00:00Z')), 10);
assert.strictEqual(getTAIOffsetAt(new Date('1973-01-01T00:00:00Z')), 12);
assert.strictEqual(getTAIOffsetAt(new Date('2017-01-01T00:00:00Z')), 37);
});
test('toCobiets/fromCobiets round trip', () => {
const dates = [
new Date('1970-01-01T00:00:00Z'),
new Date('2017-01-01T00:00:00Z')
];
for (const d of dates) {
const cob = toCobiets(d);
const back = fromCobiets(cob);
assert.strictEqual(back.toISOString(), d.toISOString());
}
});