5 changed files with 1628 additions and 2 deletions
File diff suppressed because it is too large
@ -0,0 +1,13 @@ |
|||
export type SceneState = "idle" | "loading"; |
|||
|
|||
export class SceneStateMachine { |
|||
private state: SceneState = "idle"; |
|||
|
|||
getState(): SceneState { |
|||
return this.state; |
|||
} |
|||
|
|||
transitionTo(nextState: SceneState): void { |
|||
this.state = nextState; |
|||
} |
|||
} |
|||
@ -0,0 +1,13 @@ |
|||
import { describe, expect, it } from "vitest"; |
|||
import { SceneStateMachine } from "@/scene/SceneStateMachine"; |
|||
|
|||
describe("SceneStateMachine", () => { |
|||
it("starts in idle state and supports transitioning", () => { |
|||
const machine = new SceneStateMachine(); |
|||
|
|||
expect(machine.getState()).toBe("idle"); |
|||
|
|||
machine.transitionTo("loading"); |
|||
expect(machine.getState()).toBe("loading"); |
|||
}); |
|||
}); |
|||
@ -0,0 +1,14 @@ |
|||
import path from "node:path"; |
|||
import { defineConfig } from "vitest/config"; |
|||
|
|||
export default defineConfig({ |
|||
test: { |
|||
environment: "node", |
|||
include: ["tests/**/*.test.ts"], |
|||
}, |
|||
resolve: { |
|||
alias: { |
|||
"@": path.resolve(__dirname, "src"), |
|||
}, |
|||
}, |
|||
}); |
|||
Loading…
Reference in new issue