返回 DeepSeek-Reasonix
plan_mode_idempotence_test.go
根目录 / internal / control / plan_mode_idempotence_test.go
1 package control
2
3 import (
4 "path/filepath"
5 "testing"
6
7 "reasonix/internal/session"
8 )
9
10 func TestSetPlanModeSameValueDoesNotAppendDomainState(t *testing.T) {
11 runner := &planModeCountingRunner{}
12 service, err := session.NewService("desktop", session.NewFilesystemPersistence(filepath.Join(t.TempDir(), "sessions-v4")))
13 if err != nil {
14 t.Fatal(err)
15 }
16 runtime, err := service.Create(t.Context(), session.CreateOptions{SessionID: "plan-idempotent"})
17 if err != nil {
18 t.Fatal(err)
19 }
20 c := newOwnedTestController(t, Options{Runner: runner, SessionService: service, SessionRuntime: runtime, ExclusiveSession: true})
21 _, runtime, ok := c.SessionBinding()
22 if !ok {
23 t.Fatal("controller has no canonical session binding")
24 }
25 before := runtime.StateSnapshot().Session.EventSequence
26 c.SetPlanMode(false)
27 if after := runtime.StateSnapshot().Session.EventSequence; after != before {
28 t.Fatalf("same plan mode advanced event sequence: before=%d after=%d", before, after)
29 }
30 if runner.calls != 1 || runner.last {
31 t.Fatalf("same plan mode propagation calls=%d last=%v, want 1/false", runner.calls, runner.last)
32 }
33 }
34
34 lines GO