Files
yms-daemon/internal/transaction/state_test.go
T
2026-08-15 02:30:36 +08:00

35 lines
901 B
Go

package transaction
import "testing"
func TestStateTransitions(t *testing.T) {
t.Parallel()
forward := []State{
StateCreated,
StateValidating,
StatePrepared,
StateStarting,
StateSwitching,
StateVerifying,
StateDraining,
StateCommitted,
}
for index := 0; index < len(forward)-1; index++ {
if !forward[index].CanTransitionTo(forward[index+1]) {
t.Fatalf("expected transition %s -> %s", forward[index], forward[index+1])
}
}
if StateCreated.CanTransitionTo(StatePrepared) {
t.Fatal("state machine accepted a skipped forward state")
}
if !StateSwitching.CanTransitionTo(StateRollingBack) {
t.Fatal("state machine rejected rollback")
}
if !StateRollingBack.CanTransitionTo(StateRolledBack) {
t.Fatal("state machine rejected rollback completion")
}
if StateCommitted.CanTransitionTo(StateRollingBack) {
t.Fatal("terminal state accepted another transition")
}
}