114 lines
2.8 KiB
Go
114 lines
2.8 KiB
Go
package i2c
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
"testing"
|
|
|
|
"gobot.io/x/gobot"
|
|
"gobot.io/x/gobot/gobottest"
|
|
)
|
|
|
|
// ensure that MPU6050Driver fulfills Gobot Driver interface
|
|
var _ gobot.Driver = (*MPU6050Driver)(nil)
|
|
|
|
// --------- HELPERS
|
|
func initTestMPU6050Driver() (driver *MPU6050Driver) {
|
|
driver, _ = initTestMPU6050DriverWithStubbedAdaptor()
|
|
return
|
|
}
|
|
|
|
func initTestMPU6050DriverWithStubbedAdaptor() (*MPU6050Driver, *i2cTestAdaptor) {
|
|
adaptor := newI2cTestAdaptor()
|
|
return NewMPU6050Driver(adaptor), adaptor
|
|
}
|
|
|
|
// --------- TESTS
|
|
|
|
func TestNewMPU6050Driver(t *testing.T) {
|
|
// Does it return a pointer to an instance of MPU6050Driver?
|
|
var bm interface{} = NewMPU6050Driver(newI2cTestAdaptor())
|
|
_, ok := bm.(*MPU6050Driver)
|
|
if !ok {
|
|
t.Errorf("NewMPU6050Driver() should have returned a *MPU6050Driver")
|
|
}
|
|
}
|
|
|
|
func TestMPU6050DriverName(t *testing.T) {
|
|
mpu := initTestMPU6050Driver()
|
|
gobottest.Refute(t, mpu.Connection(), nil)
|
|
gobottest.Assert(t, strings.HasPrefix(mpu.Name(), "MPU6050"), true)
|
|
}
|
|
|
|
func TestMPU6050DriverOptions(t *testing.T) {
|
|
mpu := NewMPU6050Driver(newI2cTestAdaptor(), WithBus(2))
|
|
gobottest.Assert(t, mpu.GetBusOrDefault(1), 2)
|
|
}
|
|
|
|
// Methods
|
|
func TestMPU6050DriverStart(t *testing.T) {
|
|
mpu := initTestMPU6050Driver()
|
|
|
|
gobottest.Assert(t, mpu.Start(), nil)
|
|
}
|
|
|
|
func TestMPU6050StartConnectError(t *testing.T) {
|
|
d, adaptor := initTestMPU6050DriverWithStubbedAdaptor()
|
|
adaptor.Testi2cConnectErr(true)
|
|
gobottest.Assert(t, d.Start(), errors.New("Invalid i2c connection"))
|
|
}
|
|
|
|
func TestMPU6050DriverStartWriteError(t *testing.T) {
|
|
mpu, adaptor := initTestMPU6050DriverWithStubbedAdaptor()
|
|
adaptor.i2cWriteImpl = func([]byte) (int, error) {
|
|
return 0, errors.New("write error")
|
|
}
|
|
gobottest.Assert(t, mpu.Start(), errors.New("write error"))
|
|
}
|
|
|
|
func TestMPU6050DriverHalt(t *testing.T) {
|
|
mpu := initTestMPU6050Driver()
|
|
|
|
gobottest.Assert(t, mpu.Halt(), nil)
|
|
}
|
|
|
|
func TestMPU6050DriverReadData(t *testing.T) {
|
|
mpu, adaptor := initTestMPU6050DriverWithStubbedAdaptor()
|
|
|
|
adaptor.i2cReadImpl = func(b []byte) (int, error) {
|
|
copy(b, []byte{0x00, 0x01, 0x02, 0x04})
|
|
return 4, nil
|
|
}
|
|
mpu.Start()
|
|
mpu.GetData()
|
|
gobottest.Assert(t, mpu.Temperature, int16(36))
|
|
}
|
|
|
|
func TestMPU6050DriverGetDataReadError(t *testing.T) {
|
|
mpu, adaptor := initTestMPU6050DriverWithStubbedAdaptor()
|
|
mpu.Start()
|
|
|
|
adaptor.i2cReadImpl = func(b []byte) (int, error) {
|
|
return 0, errors.New("read error")
|
|
}
|
|
|
|
gobottest.Assert(t, mpu.GetData(), errors.New("read error"))
|
|
}
|
|
|
|
func TestMPU6050DriverGetDataWriteError(t *testing.T) {
|
|
mpu, adaptor := initTestMPU6050DriverWithStubbedAdaptor()
|
|
mpu.Start()
|
|
|
|
adaptor.i2cWriteImpl = func(b []byte) (int, error) {
|
|
return 0, errors.New("write error")
|
|
}
|
|
|
|
gobottest.Assert(t, mpu.GetData(), errors.New("write error"))
|
|
}
|
|
|
|
func TestMPU6050DriverSetName(t *testing.T) {
|
|
mpu := initTestMPU6050Driver()
|
|
mpu.SetName("TESTME")
|
|
gobottest.Assert(t, mpu.Name(), "TESTME")
|
|
}
|