gobot.io/x/gobot/v2@v2.1.0/platforms/microbit/temperature_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 = (*TemperatureDriver)(nil)
    13  
    14  func initTestTemperatureDriver() *TemperatureDriver {
    15  	d := NewTemperatureDriver(NewBleTestAdaptor())
    16  	return d
    17  }
    18  
    19  func TestTemperatureDriver(t *testing.T) {
    20  	d := initTestTemperatureDriver()
    21  	gobottest.Assert(t, strings.HasPrefix(d.Name(), "Microbit Temperature"), true)
    22  	d.SetName("NewName")
    23  	gobottest.Assert(t, d.Name(), "NewName")
    24  }
    25  
    26  func TestTemperatureDriverStartAndHalt(t *testing.T) {
    27  	d := initTestTemperatureDriver()
    28  	gobottest.Assert(t, d.Start(), nil)
    29  	gobottest.Assert(t, d.Halt(), nil)
    30  }
    31  
    32  func TestTemperatureDriverReadData(t *testing.T) {
    33  	sem := make(chan bool)
    34  	a := NewBleTestAdaptor()
    35  	d := NewTemperatureDriver(a)
    36  	d.Start()
    37  	d.On(Temperature, func(data interface{}) {
    38  		gobottest.Assert(t, data, int8(0x22))
    39  		sem <- true
    40  	})
    41  
    42  	a.TestReceiveNotification([]byte{0x22}, nil)
    43  
    44  	select {
    45  	case <-sem:
    46  	case <-time.After(100 * time.Millisecond):
    47  		t.Errorf("Microbit Event \"Temperature\" was not published")
    48  	}
    49  }