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 }