feat: initial test for release hand

This commit is contained in:
efim 2023-11-09 06:23:57 +00:00
parent 480d007e6c
commit 89982d5c39
2 changed files with 81 additions and 0 deletions

View File

@ -2,6 +2,7 @@ package rooms
import (
"log"
"maps"
"slices"
)
@ -130,6 +131,22 @@ func (r *Room) gestureSearchStartIndex(gesture, curSpeakerGesture HandGesture) i
return indexFromWhichToStart
}
func (r *Room) Equal(other *Room) bool {
if r == other {
return true
}
if r.Name != other.Name || r.PasswordHash != other.PasswordHash || r.CurrentSpeaker != other.CurrentSpeaker {
return false
}
if !slices.Equal(r.AdminIds, other.AdminIds) || !slices.Equal(r.Paricipants, other.Paricipants) {
return false
}
if !maps.Equal(r.ParticipantHands, other.ParticipantHands) || !maps.Equal(r.Marks, other.Marks) {
return false
}
return true
}
// sooooooo. i need hand types. are there enums in go?
type HandGesture uint8

View File

@ -0,0 +1,64 @@
package rooms
import (
"testing"
)
type releaseHandTest struct {
room, expected Room
releasingParticipantId PersonId
}
var releaseHandTests = []releaseHandTest{
singleHandActive,
}
func TestRoomReleaseHand(t *testing.T) {
for _, test := range releaseHandTests {
test.room.InitMaps()
test.expected.InitMaps()
if test.room.ReleaseHand(test.releasingParticipantId); !test.room.Equal(&test.expected) {
t.Errorf("Output \n%+v \nnot equal to expected \n%+v", test.room, test.expected)
}
}
}
var p1Id = PersonId(1)
var p2Id = PersonId(2)
var singleHandActive releaseHandTest = releaseHandTest{
room : Room{
Name: "test",
CurrentSpeaker: p1Id,
Paricipants: []Person{
{
Id : p1Id,
Name: "p1",
},
{
Id : PersonId(2),
Name: "p2",
},
},
ParticipantHands: map[PersonId]HandGesture{
p1Id: Expand,
},
},
releasingParticipantId: p1Id,
expected: Room{
Name: "test",
CurrentSpeaker: PersonId(0),
Paricipants: []Person{
{
Id : p1Id,
Name: "p1",
},
{
Id : PersonId(2),
Name: "p2",
},
},
ParticipantHands: map[PersonId]HandGesture{
},
},
}