diff options
Diffstat (limited to 'extra/cluedo_test.go')
-rw-r--r-- | extra/cluedo_test.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/extra/cluedo_test.go b/extra/cluedo_test.go new file mode 100644 index 0000000..e7a53b1 --- /dev/null +++ b/extra/cluedo_test.go @@ -0,0 +1,50 @@ +package extra + +import ( + "testing" +) + +func TestPrepCards(t *testing.T) { + // Run the function to get the murder combination and player cards + roundInfo := CluedoPrepCards([]string{"{{user}}", "{{char}}", "{{char2}}"}) + // Create a map to track all distributed cards + distributedCards := make(map[string]bool) + // Check that the murder combination cards are not distributed to players + murderCards := []string{roundInfo.Answer.Murderer, roundInfo.Answer.Weapon, roundInfo.Answer.Room} + for _, card := range murderCards { + if distributedCards[card] { + t.Errorf("Murder card %s was distributed to a player", card) + } + } + // Check each player's cards + for player, cards := range roundInfo.PlayersCards { + for _, card := range cards { + // Ensure the card is not part of the murder combination + for _, murderCard := range murderCards { + if card == murderCard { + t.Errorf("Player %s has a murder card: %s", player, card) + } + } + // Ensure the card is unique and not already distributed + if distributedCards[card] { + t.Errorf("Card %s is duplicated in player %s's hand", card, player) + } + distributedCards[card] = true + } + } + // Verify that all non-murder cards are distributed + allCards := append(append([]string{}, rooms...), weapons...) + allCards = append(allCards, people...) + for _, card := range allCards { + isMurderCard := false + for _, murderCard := range murderCards { + if card == murderCard { + isMurderCard = true + break + } + } + if !isMurderCard && !distributedCards[card] { + t.Errorf("Card %s was not distributed to any player", card) + } + } +} |