feat(js): m10 extensions (pause, restart, speed-up via Frame) with tests
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5.5
parent
25141ce86d
commit
fd7c5f2acf
@@ -1,8 +1,8 @@
|
||||
import test from 'node:test'
|
||||
import assert from 'node:assert/strict'
|
||||
import { states, classicActions, render, main, TICK_MS } from '../src/app.js'
|
||||
import { run } from '../src/stream.js'
|
||||
import { trace } from '../src/io.js'
|
||||
import { run, map as mapStream } from '../src/stream.js'
|
||||
import { trace, map as mapIO, randomSeed } from '../src/io.js'
|
||||
import { view } from '../src/view.js'
|
||||
import { newGame } from '../src/spawn.js'
|
||||
import { Action } from '../src/model.js'
|
||||
@@ -40,8 +40,10 @@ test('m09 main asks for a random seed, then builds the stream from it', () => {
|
||||
assert.deepStrictEqual(trace(outs[0], 0).ops, trace(render(newGame(42)), 0).ops)
|
||||
})
|
||||
|
||||
test('m09 main with seed 42 draws the new game first, then the ticked game after 150 ms', () => {
|
||||
const { result: stream } = trace(main, 42)
|
||||
// `main` itself switches to speedActions in m10, so the 150 ms behaviour is checked on the same program built from classicActions.
|
||||
test('m09 the program built from classicActions draws the new game first, then the ticked game after 150 ms', () => {
|
||||
const classicMain = mapIO(randomSeed, (seed) => mapStream(states(seed, classicActions), render))
|
||||
const { result: stream } = trace(classicMain, 42)
|
||||
const [first, next] = stream.step(time(0))
|
||||
const [second] = next.step(time(150))
|
||||
assert.deepStrictEqual(trace(first[0], 0).ops.map((o) => o.shape), view(newGame(42)))
|
||||
|
||||
Reference in New Issue
Block a user