gobot.io/x/gobot/v2@v2.1.0/platforms/mavlink/mavlink_driver_test.go (about) 1 package mavlink 2 3 import ( 4 "io" 5 "strings" 6 "testing" 7 "time" 8 9 "gobot.io/x/gobot/v2" 10 "gobot.io/x/gobot/v2/gobottest" 11 common "gobot.io/x/gobot/v2/platforms/mavlink/common" 12 ) 13 14 var _ gobot.Driver = (*Driver)(nil) 15 16 func initTestMavlinkDriver() *Driver { 17 m := NewAdaptor("/dev/null") 18 m.connect = func(port string) (io.ReadWriteCloser, error) { return nil, nil } 19 m.sp = nullReadWriteCloser{} 20 return NewDriver(m) 21 } 22 23 func TestMavlinkDriver(t *testing.T) { 24 m := NewAdaptor("/dev/null") 25 m.sp = nullReadWriteCloser{} 26 m.connect = func(port string) (io.ReadWriteCloser, error) { return nil, nil } 27 28 d := NewDriver(m) 29 gobottest.Refute(t, d.Connection(), nil) 30 gobottest.Assert(t, d.interval, 10*time.Millisecond) 31 32 d = NewDriver(m, 100*time.Millisecond) 33 gobottest.Assert(t, d.interval, 100*time.Millisecond) 34 } 35 36 func TestMavlinkDriverName(t *testing.T) { 37 d := initTestMavlinkDriver() 38 gobottest.Assert(t, strings.HasPrefix(d.Name(), "Mavlink"), true) 39 d.SetName("NewName") 40 gobottest.Assert(t, d.Name(), "NewName") 41 } 42 43 func TestMavlinkDriverStart(t *testing.T) { 44 d := initTestMavlinkDriver() 45 err := make(chan error) 46 packet := make(chan *common.MAVLinkPacket) 47 message := make(chan common.MAVLinkMessage) 48 49 d.On(PacketEvent, func(data interface{}) { 50 packet <- data.(*common.MAVLinkPacket) 51 }) 52 d.On(MessageEvent, func(data interface{}) { 53 message <- data.(common.MAVLinkMessage) 54 }) 55 d.On(ErrorIOEvent, func(data interface{}) { 56 err <- data.(error) 57 }) 58 d.On(ErrorMAVLinkEvent, func(data interface{}) { 59 err <- data.(error) 60 }) 61 62 gobottest.Assert(t, d.Start(), nil) 63 64 select { 65 case p := <-packet: 66 gobottest.Assert(t, d.SendPacket(p), nil) 67 68 case <-time.After(100 * time.Millisecond): 69 t.Errorf("packet was not emitted") 70 } 71 select { 72 case <-message: 73 case <-time.After(100 * time.Millisecond): 74 t.Errorf("message was not emitted") 75 } 76 select { 77 case <-err: 78 case <-time.After(100 * time.Millisecond): 79 t.Errorf("error was not emitted") 80 } 81 } 82 83 func TestMavlinkDriverHalt(t *testing.T) { 84 d := initTestMavlinkDriver() 85 gobottest.Assert(t, d.Halt(), nil) 86 }