-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathavsm_test.go
77 lines (49 loc) · 2.16 KB
/
avsm_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package avsm
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
// "github.com/stretchr/testify/require"
)
func TestHappyJourney(t *testing.T) {
v:=Vehicle{}
v.SetStateTransitionRules()
assert.Equal(t,string(v.CurrentState()), "Ready")
v.StateTransition(Riding,Hunter)
assert.Equal(t,string(v.CurrentState()), "Riding")
v.StateTransition(Ready,EndUser)
assert.Equal(t,string(v.CurrentState()), "Ready")
v.StateTransition(Bounty,Automatic)
assert.Equal(t,string(v.CurrentState()), "Bounty")
v.StateTransition(Collected,Hunter)
assert.Equal(t,string(v.CurrentState()), "Collected")
v.StateTransition(Dropped,Hunter)
assert.Equal(t,string(v.CurrentState()), "Dropped")
v.StateTransition(Ready,Hunter)
assert.Equal(t,string(v.CurrentState()), "Ready")
v.StateTransition(Unknown,Automatic)
assert.Equal(t,string(v.CurrentState()), "Unknown")
v.StateTransition(Terminated,Admin)
assert.Equal(t,string(v.CurrentState()), "Terminated")
v.StateTransition(ServiceMode,Admin)
assert.Equal(t,string(v.CurrentState()), "ServiceMode")
}
func TestPanicStateTransitionValidation(t *testing.T) {
v:=Vehicle{}
v.SetStateTransitionRules()
err := v.StateTransition(Collected,Hunter)
assert.Equal(t,err, newErrorStruct(fmt.Sprintf("transition from state %s to %s is not permitted", Ready, Collected),ErrorTransitionNotPermitted))
v.StateTransition(Riding,Hunter)
err1 := v.StateTransition(Dropped,Hunter)
assert.Equal(t,err1, newErrorStruct(fmt.Sprintf("transition from state %s to %s is not permitted", Riding, Dropped),ErrorTransitionNotPermitted))
}
func TestPanicStateRolePermission(t *testing.T) {
v:=Vehicle{}
v.SetStateTransitionRules()
v.StateTransition(Riding,EndUser)
err := v.StateTransition(BatteryLow,Hunter)
assert.Equal(t,err, newErrorStruct(fmt.Sprintf("Invalid permission transition from state %s to %s for a role %s", Riding, BatteryLow,Hunter),ErrorRolePermissionDenied))
v.StateTransition(BatteryLow,Automatic)
err1 := v.StateTransition(Bounty,EndUser)
assert.Equal(t,err1, newErrorStruct(fmt.Sprintf("Invalid permission transition from state %s to %s for a role %s", BatteryLow, Bounty,EndUser),ErrorRolePermissionDenied))
}