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  }