Skip to content

Commit dceb033

Browse files
committed
Use math/rand/v2 for game winner calculation (#30)
1 parent b7bb4b4 commit dceb033

File tree

2 files changed

+25
-18
lines changed

2 files changed

+25
-18
lines changed

internal/legacy/usecases/faggot_game.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package usecases
33
import (
44
"encoding/json"
55
"fmt"
6-
"math/rand"
76
"os"
87
"regexp"
98
"sort"
@@ -131,7 +130,7 @@ func (flow *GameFlow) Play(message *legacy.Message, bot legacy.IBot) error {
131130
}
132131
}
133132

134-
winner := players[rand.Intn(len(players))]
133+
winner := players[flow.r.GetRand(len(players))]
135134

136135
if !bot.IsUserMemberOfChat(winner, message.Chat.ID) {
137136
_, err := bot.SendText(flow.t.I18n(message.Sender.LanguageCode, "faggot_winner_left"))
@@ -161,7 +160,7 @@ func (flow *GameFlow) Play(message *legacy.Message, bot legacy.IBot) error {
161160
templates = append(templates, key)
162161
}
163162
}
164-
template := templates[rand.Intn(len(templates))]
163+
template := templates[flow.r.GetRand(len(templates))]
165164
phrase := flow.t.I18n(message.Sender.LanguageCode, template)
166165

167166
if i == 3 {
@@ -179,7 +178,7 @@ func (flow *GameFlow) Play(message *legacy.Message, bot legacy.IBot) error {
179178
}
180179

181180
if os.Getenv("GO_ENV") != "testing" {
182-
r := rand.Intn(3) + 1
181+
r := flow.r.GetRand(3) + 1
183182
time.Sleep(time.Duration(r) * time.Second)
184183
}
185184
}

internal/legacy/usecases/faggot_game_test.go

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,14 @@ func Test_Play_RespondsWithCurrentGameResult(t *testing.T) {
9797
m1 := makeGameMessage(1, "")
9898
m2 := makeGameMessage(2, "")
9999
game, bot, storage := makeSUT(map[string]string{
100-
"faggot_game_0_0": "0",
101-
"faggot_game_1_0": "1",
102-
"faggot_game_2_0": "2",
100+
"faggot_game_0_0": "00",
101+
"faggot_game_0_1": "01",
102+
"faggot_game_1_0": "10",
103+
"faggot_game_1_1": "11",
104+
"faggot_game_2_0": "20",
105+
"faggot_game_2_1": "21",
103106
"faggot_game_3_0": "%s",
107+
"faggot_game_3_1": "%s",
104108
}, m1, m2)
105109
bot.ChatMembers[0] = []string{""}
106110

@@ -110,19 +114,23 @@ func Test_Play_RespondsWithCurrentGameResult(t *testing.T) {
110114

111115
winner := storage.rounds[0].Winner
112116
phrase := fmt.Sprintf(`<a href="tg://user?id=%d">%s %s</a>`, winner.ID, winner.FirstName, winner.LastName)
113-
assert.Equal(t, "0", bot.SentMessages[2])
114-
assert.Equal(t, "1", bot.SentMessages[3])
115-
assert.Equal(t, "2", bot.SentMessages[4])
117+
assert.Equal(t, "01", bot.SentMessages[2])
118+
assert.Equal(t, "11", bot.SentMessages[3])
119+
assert.Equal(t, "21", bot.SentMessages[4])
116120
assert.Equal(t, phrase, bot.SentMessages[5])
117121
}
118122
func Test_Play_RespondsWinnerAlreadyKnown(t *testing.T) {
119123
m1 := makeGameMessage(1, "Faggot1")
120124
m2 := makeGameMessage(2, "Faggot2")
121125
game, bot, storage := makeSUT(map[string]string{
122-
"faggot_game_0_0": "0",
123-
"faggot_game_1_0": "1",
124-
"faggot_game_2_0": "2",
125-
"faggot_game_3_0": "3 %s",
126+
"faggot_game_0_0": "00",
127+
"faggot_game_0_1": "01",
128+
"faggot_game_1_0": "10",
129+
"faggot_game_1_1": "11",
130+
"faggot_game_2_0": "20",
131+
"faggot_game_2_1": "21",
132+
"faggot_game_3_0": "30 %s",
133+
"faggot_game_3_1": "31 %s",
126134
"faggot_winner_known": "Winner already known %s",
127135
}, m1)
128136
bot.ChatMembers[0] = []string{"Faggot1", "Faggot2"}
@@ -132,10 +140,10 @@ func Test_Play_RespondsWinnerAlreadyKnown(t *testing.T) {
132140
game.Play(m1, bot)
133141

134142
winner := storage.rounds[0].Winner.Username
135-
assert.Equal(t, "0", bot.SentMessages[2])
136-
assert.Equal(t, "1", bot.SentMessages[3])
137-
assert.Equal(t, "2", bot.SentMessages[4])
138-
assert.Equal(t, fmt.Sprintf("3 @%s", winner), bot.SentMessages[5])
143+
assert.Equal(t, "01", bot.SentMessages[2])
144+
assert.Equal(t, "11", bot.SentMessages[3])
145+
assert.Equal(t, "21", bot.SentMessages[4])
146+
assert.Equal(t, fmt.Sprintf("31 @%s", winner), bot.SentMessages[5])
139147

140148
game.Play(m1, bot)
141149

0 commit comments

Comments
 (0)