mirror of
https://github.com/elyby/chrly.git
synced 2024-11-30 02:32:19 +05:30
76 lines
2.1 KiB
Go
76 lines
2.1 KiB
Go
|
package queue
|
||
|
|
||
|
import (
|
||
|
"github.com/elyby/chrly/api/mojang"
|
||
|
|
||
|
testify "github.com/stretchr/testify/assert"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestBroadcastMap_GetOrAppend(t *testing.T) {
|
||
|
t.Run("first call when username didn't exist before should return true", func(t *testing.T) {
|
||
|
assert := testify.New(t)
|
||
|
|
||
|
broadcaster := newBroadcaster()
|
||
|
channel := make(chan *mojang.SignedTexturesResponse)
|
||
|
isFirstListener := broadcaster.AddListener("mock", channel)
|
||
|
|
||
|
assert.True(isFirstListener)
|
||
|
listeners, ok := broadcaster.listeners["mock"]
|
||
|
assert.True(ok)
|
||
|
assert.Len(listeners, 1)
|
||
|
assert.Equal(channel, listeners[0])
|
||
|
})
|
||
|
|
||
|
t.Run("subsequent calls should return false", func(t *testing.T) {
|
||
|
assert := testify.New(t)
|
||
|
|
||
|
broadcaster := newBroadcaster()
|
||
|
channel1 := make(chan *mojang.SignedTexturesResponse)
|
||
|
isFirstListener := broadcaster.AddListener("mock", channel1)
|
||
|
|
||
|
assert.True(isFirstListener)
|
||
|
|
||
|
channel2 := make(chan *mojang.SignedTexturesResponse)
|
||
|
isFirstListener = broadcaster.AddListener("mock", channel2)
|
||
|
|
||
|
assert.False(isFirstListener)
|
||
|
|
||
|
channel3 := make(chan *mojang.SignedTexturesResponse)
|
||
|
isFirstListener = broadcaster.AddListener("mock", channel3)
|
||
|
|
||
|
assert.False(isFirstListener)
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestBroadcastMap_BroadcastAndRemove(t *testing.T) {
|
||
|
t.Run("should broadcast to all listeners and remove the key", func(t *testing.T) {
|
||
|
assert := testify.New(t)
|
||
|
|
||
|
broadcaster := newBroadcaster()
|
||
|
channel1 := make(chan *mojang.SignedTexturesResponse)
|
||
|
channel2 := make(chan *mojang.SignedTexturesResponse)
|
||
|
broadcaster.AddListener("mock", channel1)
|
||
|
broadcaster.AddListener("mock", channel2)
|
||
|
|
||
|
result := &mojang.SignedTexturesResponse{Id: "mockUuid"}
|
||
|
broadcaster.BroadcastAndRemove("mock", result)
|
||
|
|
||
|
assert.Equal(result, <-channel1)
|
||
|
assert.Equal(result, <-channel2)
|
||
|
|
||
|
channel3 := make(chan *mojang.SignedTexturesResponse)
|
||
|
isFirstListener := broadcaster.AddListener("mock", channel3)
|
||
|
assert.True(isFirstListener)
|
||
|
})
|
||
|
|
||
|
t.Run("call on not exists username", func(t *testing.T) {
|
||
|
assert := testify.New(t)
|
||
|
|
||
|
assert.NotPanics(func() {
|
||
|
broadcaster := newBroadcaster()
|
||
|
broadcaster.BroadcastAndRemove("mock", &mojang.SignedTexturesResponse{})
|
||
|
})
|
||
|
})
|
||
|
}
|