Something went wrong on our end
-
Sydney Anne Erickson authoredSydney Anne Erickson authored
listener_test.go 3.75 KiB
///////////////////////////////////////////////////////////////////////////////
// Copyright © 2020 xx network SEZC //
// //
// Use of this source code is governed by a license that can be found in the //
// LICENSE file //
///////////////////////////////////////////////////////////////////////////////
package switchboard
import (
"gitlab.com/elixxir/client/interfaces/message"
"gitlab.com/xx_network/primitives/id"
"reflect"
"testing"
"time"
)
//verify func listener adheres to the listener interface
var _ Listener = &funcListener{}
//verify chan listener adheres to the listener interface
var _ Listener = &chanListener{}
//test listenerID returns the userID
func TestListenerID_GetUserID(t *testing.T) {
lid := ListenerID{
userID: id.NewIdFromUInt(42, id.User, t),
messageType: 42,
listener: nil,
}
if !lid.GetUserID().Cmp(lid.userID) {
t.Errorf("Returned userID does not match")
}
}
//test listenerID returns the messageType
func TestListenerID_GetMessageType(t *testing.T) {
lid := ListenerID{
userID: id.NewIdFromUInt(42, id.User, t),
messageType: 42,
listener: nil,
}
if lid.GetMessageType() != lid.messageType {
t.Errorf("Returned message type does not match")
}
}
//test listenerID returns the name
func TestListenerID_GetName(t *testing.T) {
name := "test"
lid := ListenerID{
userID: id.NewIdFromUInt(42, id.User, t),
messageType: 42,
listener: newFuncListener(nil, name),
}
if lid.GetName() != name {
t.Errorf("Returned name type does not match")
}
}
//tests new function listener creates the funcListener properly
func TestNewFuncListener(t *testing.T) {
f := func(item message.Receive) {}
name := "test"
listener := newFuncListener(f, name)
if listener.listener == nil {
t.Errorf("function is wrong")
}
if listener.name != name {
t.Errorf("name is wrong")
}
}
//tests FuncListener Hear works
func TestFuncListener_Hear(t *testing.T) {
m := message.Receive{
Payload: []byte{0, 1, 2, 3},
Sender: id.NewIdFromUInt(42, id.User, t),
MessageType: 69,
}
heard := make(chan message.Receive, 1)
f := func(item message.Receive) {
heard <- item
}
listener := newFuncListener(f, "test")
listener.Hear(m)
select {
case item := <-heard:
if !reflect.DeepEqual(item, m) {
t.Errorf("Heard message did not match")
}
case <-time.After(5 * time.Millisecond):
t.Errorf("Did not hear")
}
}
// Test FuncListener returns the correct name
func TestFuncListener_Name(t *testing.T) {
name := "test"
listener := newFuncListener(nil, name)
if listener.Name() != name {
t.Errorf("Name did not match")
}
}
//tests new chan listener creates the chanListener properly
func TestNewChanListener(t *testing.T) {
c := make(chan message.Receive)
name := "test"
listener := newChanListener(c, name)
if listener.listener == nil {
t.Errorf("function is wrong")
}
if listener.name != name {
t.Errorf("name is wrong")
}
}
//tests ChanListener Hear works
func TestChanListener_Hear(t *testing.T) {
m := message.Receive{
Payload: []byte{0, 1, 2, 3},
Sender: id.NewIdFromUInt(42, id.User, t),
MessageType: 69,
}
heard := make(chan message.Receive, 1)
listener := newChanListener(heard, "test")
listener.Hear(m)
select {
case item := <-heard:
if !reflect.DeepEqual(item, m) {
t.Errorf("Heard message did not match")
}
case <-time.After(5 * time.Millisecond):
t.Errorf("Did not hear")
}
}
// Test FuncListener returns the correct name
func TestChanListener_Name(t *testing.T) {
name := "test"
listener := newChanListener(nil, name)
if listener.Name() != name {
t.Errorf("Name did not match")
}
}