On this pageFunctions
Test
/** Sends a Message through update. Commands stay pending until resolve or resolveAll. */
<Message>(message_: NoInfer<Message>): (simulation: Simulation<Model, Message, OutMessage>) => Simulation<Model, Message, OutMessage>/** Resolves all listed Commands with their result Messages. Handles cascading resolution. */
(pairs: readonly Array<ResolverPair<string, unknown>>): (simulation: Simulation<Model, Message, OutMessage>) => Simulation<Model, Message, OutMessage>/** Runs a function for side effects (e.g. assertions) without breaking the pipe chain. */
<Model, Message, OutMessage = undefined>(f: (simulation: Simulation<Model, Message, OutMessage>) => void): (simulation: Simulation<Model, Message, OutMessage>) => Simulation<Model, Message, OutMessage>/** A Command in a test simulation, identified by name. */
type AnyCommand = Readonly<{
name: string
}>/** A Command definition paired with the result Message to resolve it with. */
type ResolverPair = readonly [CommandDefinition<Name, ResultMessage>, ResultMessage]/** An immutable test simulation of a Foldkit program. */
type Simulation = Readonly<{
commands: ReadonlyArray<AnyCommand>
message: Message | undefined
model: Model
outMessage: OutMessage
}>/** A single step in a test story — either a WithStep or a simulation transform. */
type StoryStep = WithStep<NoInfer<Model>> | (simulation: Simulation<Model, Message, OutMessage>) => Simulation<Model, Message, OutMessage>/** A callable step that sets the initial Model. Carries phantom type for compile-time validation. */
type WithStep = Readonly<{
_phantomModel: Model
}> & (simulation: Simulation<M, Message, OutMessage>) => Simulation<M, Message, OutMessage>/** Resolves a specific pending Command with the given result Message. */
const resolve: (definition: CommandDefinition<Name, ResultMessage>, resultMessage: ResultMessage) => (simulation: Simulation<Model, Message, OutMessage>) => Simulation<Model, Message, OutMessage>