6 "github.com/davecgh/go-spew/spew"
12 var wantEvents = []LANPeerEvent{
13 {IP: []net.IP{net.IPv4(1, 2, 3, 4)}, Port: 1024},
14 {IP: []net.IP{net.IPv4(1, 2, 3, 4), net.IPv4(5, 6, 7, 8)}, Port: 1024},
17 type mockProtocol struct {
18 entries chan *LANPeerEvent
21 func newMockProtocol() *mockProtocol {
23 entries: make(chan *LANPeerEvent, 1024),
26 func (m *mockProtocol) registerService(port int) error {
30 func (m *mockProtocol) registerResolver(event chan LANPeerEvent) error {
31 for _, peerEvent := range wantEvents {
37 func (m *mockProtocol) stopService() {
41 func (m *mockProtocol) stopResolver() {
45 func TestLanDiscover(t *testing.T) {
46 lanDiscv := NewLANDiscover(newMockProtocol(), 12345)
49 lanPeerMsgSub, err := lanDiscv.Subscribe()
51 t.Fatal("subscribe lan peer msg err")
54 var gotevents = []LANPeerEvent{}
55 timeout := time.After(1 * time.Second)
58 case obj, ok := <-lanPeerMsgSub.Chan():
60 t.Fatal("subscription channel closed")
64 ev, ok := obj.Data.(LANPeerEvent)
66 t.Fatal("event type error")
69 gotevents = append(gotevents, ev)
71 if !reflect.DeepEqual(gotevents, wantEvents) {
72 t.Fatalf("mismatch for test lan discover got %s want %s", spew.Sdump(gotevents), spew.Sdump(wantEvents))