test: F3 acceptance — the classroom classics on FILIUS' examples against Java

A web page by its DNS name (internetwork_komplett), an e-mail between two
networks through NAT and MX relay (Internet_Komplett_..._DE), a file found
and fetched with Gnutella across a router (zwei_rechnernetze_komplett):
ExampleRun records frames, tables, program lines and end states; the core
plays the same calls and matches card by card. Equal RIP ties take Java's
choice, RIP beacons are left out, the search's two connections compared
flow by flow. Also: a core test that an equal RIP route from another router
neither replaces nor refreshes the route, and nine stale type errors in
core tests fixed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-03 08:01:32 +00:00
co-authored by Claude Opus 5.5
parent ce5b10c1f3
commit 49b8fe715e
16 changed files with 159639 additions and 46 deletions
+2 -1
View File
@@ -542,6 +542,7 @@ describe('the command line on the network beyond the stories', () => {
return [router(number), [...back, ...on]];
}),
),
steps: [],
};
const engine = watchedEngine(chain, withSnapshot(snapshotOf(chain), { language: 'de', terminalNodeIds: new Set([client]) })).engine;
engine.terminal(client)!.enter(`traceroute 10.${ROUTERS + 1}.0.10`);
@@ -563,7 +564,7 @@ describe('the command line on the network beyond the stories', () => {
const scenario = JSON.parse(readFileSync(join(scenarioDirectory, 'terminal-net.scenario.json'), 'utf8')) as Scenario;
// The first frame comes about 110 ms after 3 s: at a time of day with two digits of milliseconds (Java pads to three).
const base = new Date(2026, 9, 2, 10, 37, 6, 900).getTime();
const engine = new NetworkRuntimeEngine(scenario.seed, undefined, { wallClock: () => base + engine.state.currentTimeMilliseconds });
const engine: NetworkRuntimeEngine = new NetworkRuntimeEngine(scenario.seed, undefined, { wallClock: () => base + engine.state.currentTimeMilliseconds });
engine.handle({
type: 'start',
snapshot: withSnapshot(snapshotOf(scenario), { language: 'de', terminalNodeIds: new Set(HOSTS) }),