-
Notifications
You must be signed in to change notification settings - Fork 145
Expand file tree
/
Copy pathroom_test.go
More file actions
88 lines (74 loc) · 2.57 KB
/
room_test.go
File metadata and controls
88 lines (74 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package lksdk
import (
"testing"
"github.com/livekit/protocol/livekit"
"github.com/stretchr/testify/require"
)
func TestOnSpeakersChanged(t *testing.T) {
room := NewRoom(nil)
// Set up the local participant with a SID.
room.LocalParticipant.updateInfo(&livekit.ParticipantInfo{
Sid: "local",
Identity: "local-identity",
})
// Add three remote participants.
room.addRemoteParticipant(&livekit.ParticipantInfo{
Sid: "remote-1",
Identity: "remote-1-identity",
}, false)
room.addRemoteParticipant(&livekit.ParticipantInfo{
Sid: "remote-2",
Identity: "remote-2-identity",
}, false)
room.addRemoteParticipant(&livekit.ParticipantInfo{
Sid: "remote-3",
Identity: "remote-3-identity",
}, false)
t.Run("active speakers sorted by audio level descending", func(t *testing.T) {
room.OnSpeakersChanged([]*livekit.SpeakerInfo{
{Sid: "remote-2", Level: 0.8, Active: true},
{Sid: "local", Level: 0.5, Active: true},
{Sid: "remote-1", Level: 0.2, Active: true},
{Sid: "remote-3", Level: 0.9, Active: true},
})
speakers := room.ActiveSpeakers()
require.Len(t, speakers, 4)
require.Equal(t, float32(0.9), speakers[0].AudioLevel())
require.Equal(t, float32(0.8), speakers[1].AudioLevel())
require.Equal(t, float32(0.5), speakers[2].AudioLevel())
require.Equal(t, float32(0.2), speakers[3].AudioLevel())
require.Equal(t, "remote-3", speakers[0].SID())
require.Equal(t, "remote-2", speakers[1].SID())
require.Equal(t, "local", speakers[2].SID())
require.Equal(t, "remote-1", speakers[3].SID())
})
t.Run("inactive speaker removed from list", func(t *testing.T) {
room.OnSpeakersChanged([]*livekit.SpeakerInfo{
{Sid: "remote-2", Level: 0, Active: false},
})
speakers := room.ActiveSpeakers()
require.Len(t, speakers, 3)
for _, s := range speakers {
require.NotEqual(t, "remote-2", s.SID())
}
})
t.Run("updated levels re-sort speakers", func(t *testing.T) {
// remote-1 was 0.2, now bump it to 1.0 so it becomes the loudest.
room.OnSpeakersChanged([]*livekit.SpeakerInfo{
{Sid: "remote-1", Level: 1.0, Active: true},
})
speakers := room.ActiveSpeakers()
require.Len(t, speakers, 3)
require.Equal(t, "remote-1", speakers[0].SID())
require.Equal(t, "remote-3", speakers[1].SID())
require.Equal(t, "local", speakers[2].SID())
})
t.Run("unknown participant is ignored", func(t *testing.T) {
room.OnSpeakersChanged([]*livekit.SpeakerInfo{
{Sid: "unknown", Level: 0.5, Active: true},
})
// List should be unchanged from the previous subtest.
speakers := room.ActiveSpeakers()
require.Len(t, speakers, 3)
})
}