server/test/live.test.ts
27 lines · 1686 bytes
1import assert from "node:assert/strict";
2import { test } from "node:test";
3import { activeEvent, ephemerisLimit, parseVectors } from "../src/live.ts";
4
5test("finds the event covering a time", () => {
6 assert.equal(activeEvent(new Date("2022-11-21T12:00:00Z"))?.id, "artemis-1");
7 assert.equal(activeEvent(new Date("2022-12-12T00:00:00Z")), undefined);
8 assert.equal(activeEvent(new Date("2026-10-18T00:00:00Z")), undefined);
9});
10
11test("parses a Horizons CSV vector table", () => {
12 // Excerpt of a Horizons VECTORS result for Artemis I, 2022-11-20, VEC_TABLE 1.
13 const result = `header\n$$SOE\n2459903.500000000, A.D. 2022-Nov-20 00:00:00.0000, -3.304975631098540E+05, -1.579881350142587E+05, 1.186979134120867E+04,\n2459903.750000000, A.D. 2022-Nov-20 06:00:00.0000, -3.342673908331381E+05, -1.637787996887478E+05, 1.148822953490770E+04,\n$$EOE\nfooter`;
14 const rows = parseVectors(result);
15 assert.equal(rows.length, 2);
16 assert.deepEqual(rows[0], [1668902400, -330497.563109854, -157988.1350142587, 11869.79134120867]);
17 assert.equal(rows[1][0] - rows[0][0], 6 * 3600);
18});
19
20test("reads the start of Horizons data from its error", () => {
21 const msg = 'No ephemeris for target "Artemis 1 (spacecraft)" prior to A.D. 2022-NOV-16 08:46:00.3328 TDB';
22 assert.equal(ephemerisLimit(msg, "prior to")?.toISOString(), "2022-11-16T08:46:00.000Z");
23 assert.equal(ephemerisLimit(msg, "after"), undefined);
24 const end = 'No ephemeris for target "Artemis 1 (spacecraft)" after A.D. 2022-DEC-11 17:21:01.8003 TDB';
25 assert.equal(ephemerisLimit(end, "after")?.toISOString(), "2022-12-11T17:21:00.000Z");
26 assert.equal(ephemerisLimit("$$SOE ... $$EOE", "prior to"), undefined);
27});