gobot.io/x/gobot@v1.16.0/platforms/microbit/accelerometer_driver_test.go (about)

     1  package microbit
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  	"time"
     7  
     8  	"gobot.io/x/gobot"
     9  	"gobot.io/x/gobot/gobottest"
    10  )
    11  
    12  var _ gobot.Driver = (*AccelerometerDriver)(nil)
    13  
    14  func initTestAccelerometerDriver() *AccelerometerDriver {
    15  	d := NewAccelerometerDriver(NewBleTestAdaptor())
    16  	return d
    17  }
    18  
    19  func TestAccelerometerDriver(t *testing.T) {
    20  	d := initTestAccelerometerDriver()
    21  	gobottest.Assert(t, strings.HasPrefix(d.Name(), "Microbit Accelerometer"), true)
    22  	d.SetName("NewName")
    23  	gobottest.Assert(t, d.Name(), "NewName")
    24  }
    25  
    26  func TestAccelerometerDriverStartAndHalt(t *testing.T) {
    27  	d := initTestAccelerometerDriver()
    28  	gobottest.Assert(t, d.Start(), nil)
    29  	gobottest.Assert(t, d.Halt(), nil)
    30  }
    31  
    32  func TestAccelerometerDriverReadData(t *testing.T) {
    33  	sem := make(chan bool, 0)
    34  	a := NewBleTestAdaptor()
    35  	d := NewAccelerometerDriver(a)
    36  	d.Start()
    37  	d.On(Accelerometer, func(data interface{}) {
    38  		gobottest.Assert(t, data.(*AccelerometerData).X, float32(8.738))
    39  		gobottest.Assert(t, data.(*AccelerometerData).Y, float32(8.995))
    40  		gobottest.Assert(t, data.(*AccelerometerData).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 \"Accelerometer\" was not published")
    50  	}
    51  }