-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix Crud feedback, Add some much needed basic tests, small linting fixes
- Loading branch information
1 parent
977be37
commit 9cb3837
Showing
18 changed files
with
473 additions
and
239 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
package game_engine | ||
|
||
import ( | ||
"log" | ||
"slices" | ||
) | ||
|
||
var leadId = "lead" | ||
var playerOneId = "playerOne" | ||
var playerTwoId = "playerTwo" | ||
var playerThreeId = "playerThree" | ||
|
||
func initTestCampaignPool() *testCampaignPool { | ||
lead := testCampaignClient{ | ||
Id: "lead", | ||
Lead: true, | ||
} | ||
playerOne := testCampaignClient{ | ||
Id: "playerOne", | ||
Lead: false, | ||
} | ||
playerTwo := testCampaignClient{ | ||
Id: "playerTwo", | ||
Lead: false, | ||
} | ||
playerThree := testCampaignClient{ | ||
Id: "playerThree", | ||
Lead: false, | ||
} | ||
|
||
testPool := testCampaignPool{ | ||
Id: 0, | ||
LeadId: "lead", | ||
Clients: make(map[*testCampaignClient]bool), | ||
Messages: make([]EventMessage, 0), | ||
} | ||
testPool.Engine = initTestGameEngine() | ||
testPool.Clients[&lead] = true | ||
testPool.Clients[&playerOne] = true | ||
testPool.Clients[&playerTwo] = true | ||
testPool.Clients[&playerThree] = false | ||
|
||
return &testPool | ||
} | ||
|
||
func initTestGameEngine() Engine { | ||
var baseEngine = baseEngine{} | ||
|
||
baseEngine.World = loadGame(SpaceGameTest) | ||
baseEngine.EventHandler = &baseEventMessageHandler{} | ||
|
||
return &baseEngine | ||
} | ||
|
||
type testCampaignPool struct { | ||
Id uint | ||
LeadId string | ||
Clients map[*testCampaignClient]bool | ||
Engine Engine | ||
Messages []EventMessage | ||
} | ||
|
||
type testCampaignClient struct { | ||
Id string | ||
Lead bool | ||
} | ||
|
||
func (c *testCampaignClient) GetId() string { | ||
return c.Id | ||
} | ||
|
||
func (c *testCampaignClient) IsLead() bool { | ||
return c.Lead | ||
} | ||
|
||
func (pool *testCampaignPool) GetId() uint { | ||
return pool.Id | ||
} | ||
|
||
func (pool *testCampaignPool) GetLeadId() string { | ||
return pool.LeadId | ||
} | ||
|
||
func (pool *testCampaignPool) GetEngine() Engine { | ||
return pool.Engine | ||
} | ||
|
||
func (pool *testCampaignPool) TransmitEventMessage(message EventMessage) { | ||
log.Printf("TEST Pool transmission Message: '%+v' Source: '%s' & Destination: '%v'", | ||
message.Id, message.Source, message.Destinations) | ||
pool.Messages = append(pool.Messages, message) | ||
} | ||
|
||
func (pool *testCampaignPool) GetAllClientIds(filterOut ...string) []string { | ||
userIds := make([]string, 0) | ||
for client := range pool.Clients { | ||
|
||
// Filter out if applicable | ||
if len(filterOut) > 0 && slices.Contains(filterOut, client.Id) { | ||
continue | ||
} | ||
userIds = append(userIds, client.Id) | ||
} | ||
return userIds | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
package game_engine | ||
|
||
import ( | ||
"github.com/stretchr/testify/assert" | ||
"testing" | ||
) | ||
|
||
// Minimal Regression ""Test"" | ||
func TestHandleEventMessageLoadFullGame(t *testing.T) { | ||
// Arrange | ||
t.Setenv("TEMPLATE_DIR", "../../web/templates/") | ||
testPool := initTestCampaignPool() | ||
baseEventMessageHandler := baseEventMessageHandler{} | ||
messageStartGame := NewEventMessage() | ||
messageStartGame.Type = TypeLoadFullGame | ||
messageStartGame.Source = playerOneId | ||
messageStartGame.ReloadDateTime() | ||
|
||
// Act | ||
result := baseEventMessageHandler.HandleEventMessage(messageStartGame, testPool) | ||
|
||
// Assert | ||
assert.Nil(t, result) // No Error | ||
assert.Equal(t, countEventMessageIf(testPool.Messages, func(m *EventMessage) bool { | ||
return m.Type == TypeLoadCharacters // (501) | ||
}), 1) | ||
assert.Equal(t, countEventMessageIf(testPool.Messages, func(m *EventMessage) bool { | ||
return m.Type == TypeLoadMap // (531) | ||
}), 1) | ||
assert.Equal(t, countEventMessageIf(testPool.Messages, func(m *EventMessage) bool { | ||
return m.Type == TypeLoadMapEntities // (532) | ||
}), 1) | ||
} | ||
|
||
func TestHandleEventMessageEmpty(t *testing.T) { | ||
// Arrange | ||
t.Setenv("TEMPLATE_DIR", "../../web/templates/") | ||
testPool := initTestCampaignPool() | ||
baseEventMessageHandler := baseEventMessageHandler{} | ||
messageStartGame := NewEventMessage() | ||
|
||
// Act | ||
result := baseEventMessageHandler.HandleEventMessage(messageStartGame, testPool) | ||
|
||
// Assert | ||
assert.Error(t, result) | ||
} | ||
|
||
func countEventMessageIf(list []EventMessage, fn func(m *EventMessage) bool) int { | ||
count := 0 | ||
for _, m := range list { | ||
if fn(&m) { | ||
count++ | ||
} | ||
} | ||
return count | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,6 +5,7 @@ import ( | |
"testing" | ||
) | ||
|
||
// Minimal Regression ""Test"" | ||
func TestLoadingGame(t *testing.T) { | ||
// Arrange | ||
|
||
|
Oops, something went wrong.