package gamemanager_test
import (
"gemif/pkg/gamemanager"
"testing"
"github.com/stretchr/testify/assert"
)
func TestConditionMet(t *testing.T) {
arrayTests := []struct {
name string
state gamemanager.GameState
condition string // input
expected bool // expected result
}{
{
"Not meet when condition missing",
gamemanager.GameState{
StoryID: "a",
CurrentRoom: "a",
Conditions: make([]string, 1),
},
"did_thing", false,
},
{
"Meet when condition exists",
gamemanager.GameState{
StoryID: "a",
CurrentRoom: "a",
Conditions: []string{"did_thing"},
},
"did_thing", true,
},
}
t.Parallel()
for _, tc := range arrayTests {
tc := tc
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
actual := tc.state.ConditionMet(tc.condition)
assert.True(t, assert.ObjectsAreEqualValues(tc.expected, actual))
})
}
}
func TestMeetCondition(t *testing.T) {
arrayTests := []struct {
name string
state gamemanager.GameState
condition string // input
expected []string // expected result
}{
{
"Meet condition for first time",
gamemanager.GameState{
StoryID: "a",
CurrentRoom: "a",
Conditions: []string{},
},
"did_thing",
[]string{"did_thing"},
},
{
"Meet condition that already exists",
gamemanager.GameState{
StoryID: "a",
CurrentRoom: "a",
Conditions: []string{"did_thing"},
},
"did_thing",
[]string{"did_thing"},
},
{
"Meet when other conditions already met",
gamemanager.GameState{
StoryID: "a",
CurrentRoom: "a",
Conditions: []string{"something_else"},
},
"did_thing",
[]string{"something_else", "did_thing"},
},
}
t.Parallel()
for _, tc := range arrayTests {
tc := tc
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
tc.state.MeetCondition(tc.condition)
assert.True(t, assert.ObjectsAreEqualValues(tc.expected, tc.state.Conditions))
})
}
}