gobot.io/x/gobot/v2@v2.1.0/platforms/microbit/magnetometer_driver_test.go (about)

     1  package microbit
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  	"time"
     7  
     8  	"gobot.io/x/gobot/v2"
     9  	"gobot.io/x/gobot/v2/gobottest"
    10  )
    11  
    12  var _ gobot.Driver = (*MagnetometerDriver)(nil)
    13  
    14  func initTestMagnetometerDriver() *MagnetometerDriver {
    15  	d := NewMagnetometerDriver(NewBleTestAdaptor())
    16  	return d
    17  }
    18  
    19  func TestMagnetometerDriver(t *testing.T) {
    20  	d := initTestMagnetometerDriver()
    21  	gobottest.Assert(t, strings.HasPrefix(d.Name(), "Microbit Magnetometer"), true)
    22  	d.SetName("NewName")
    23  	gobottest.Assert(t, d.Name(), "NewName")
    24  }
    25  
    26  func TestMagnetometerDriverStartAndHalt(t *testing.T) {
    27  	d := initTestMagnetometerDriver()
    28  	gobottest.Assert(t, d.Start(), nil)
    29  	gobottest.Assert(t, d.Halt(), nil)
    30  }
    31  
    32  func TestMagnetometerDriverReadData(t *testing.T) {
    33  	sem := make(chan bool)
    34  	a := NewBleTestAdaptor()
    35  	d := NewMagnetometerDriver(a)
    36  	d.Start()
    37  	d.On(Magnetometer, func(data interface{}) {
    38  		gobottest.Assert(t, data.(*MagnetometerData).X, float32(8.738))
    39  		gobottest.Assert(t, data.(*MagnetometerData).Y, float32(8.995))
    40  		gobottest.Assert(t, data.(*MagnetometerData).Z, float32(9.252))
    41  		sem <- true
    42  	})
    43  
    44  	a.TestReceiveNotification([]byte{0x22, 0x22, 0x23, 0x23, 0x24, 0x24}, nil)
    45  
    46  	select {
    47  	case <-sem:
    48  	case <-time.After(100 * time.Millisecond):
    49  		t.Errorf("Microbit Event \"Magnetometer\" was not published")
    50  	}
    51  }