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