mirror of
https://github.com/hybridgroup/gobot.git
synced 2025-05-09 19:29:27 +08:00
139 lines
3.0 KiB
Go
139 lines
3.0 KiB
Go
package rockpi
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"gobot.io/x/gobot/v2/gobottest"
|
|
"gobot.io/x/gobot/v2/system"
|
|
)
|
|
|
|
func initTestAdaptorWithMockedFilesystem(mockPaths []string) (*Adaptor, *system.MockFilesystem) {
|
|
a := NewAdaptor()
|
|
fs := a.sys.UseMockFilesystem(mockPaths)
|
|
_ = a.Connect()
|
|
return a, fs
|
|
}
|
|
|
|
func TestDefaultI2cBus(t *testing.T) {
|
|
a, _ := initTestAdaptorWithMockedFilesystem([]string{})
|
|
gobottest.Assert(t, a.DefaultI2cBus(), 7)
|
|
}
|
|
|
|
func Test_getPinTranslatorFunction(t *testing.T) {
|
|
var cases = map[string]struct {
|
|
pin string
|
|
model string
|
|
expectedLine int
|
|
expectedErr error
|
|
}{
|
|
"Rock Pi 4 specific pin": {
|
|
pin: "12",
|
|
model: "Radxa ROCK 4",
|
|
expectedLine: 131,
|
|
expectedErr: nil,
|
|
},
|
|
"Rock Pi 4C+ specific pin": {
|
|
pin: "12",
|
|
model: "Radxa ROCK 4C+",
|
|
expectedLine: 91,
|
|
expectedErr: nil,
|
|
},
|
|
"Generic pin": {
|
|
pin: "3",
|
|
model: "whatever",
|
|
expectedLine: 71,
|
|
expectedErr: nil,
|
|
},
|
|
"Not a valid pin": {
|
|
pin: "666",
|
|
model: "whatever",
|
|
expectedLine: 0,
|
|
expectedErr: fmt.Errorf("Not a valid pin"),
|
|
},
|
|
}
|
|
|
|
for name, tc := range cases {
|
|
t.Run(name, func(t *testing.T) {
|
|
// arrange
|
|
a := NewAdaptor()
|
|
fn := a.getPinTranslatorFunction()
|
|
fs := a.sys.UseMockFilesystem([]string{procDeviceTreeModel})
|
|
fs.Files[procDeviceTreeModel].Contents = tc.model
|
|
// act
|
|
chip, line, err := fn(tc.pin)
|
|
// assert
|
|
gobottest.Assert(t, chip, "")
|
|
gobottest.Assert(t, err, tc.expectedErr)
|
|
gobottest.Assert(t, line, tc.expectedLine)
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_validateSpiBusNumber(t *testing.T) {
|
|
var cases = map[string]struct {
|
|
busNr int
|
|
expectedErr error
|
|
}{
|
|
"number_1_ok": {
|
|
busNr: 2,
|
|
},
|
|
"number_2_ok": {
|
|
busNr: 2,
|
|
},
|
|
"number_0_not_ok": {
|
|
busNr: 0,
|
|
expectedErr: fmt.Errorf("SPI Bus number 0 invalid: only 1, 2 supported by current Rockchip."),
|
|
},
|
|
"number_6_not_ok": {
|
|
busNr: 6,
|
|
expectedErr: fmt.Errorf("SPI Bus number 6 invalid: only 1, 2 supported by current Rockchip."),
|
|
},
|
|
}
|
|
for name, tc := range cases {
|
|
t.Run(name, func(t *testing.T) {
|
|
// arrange
|
|
a := NewAdaptor()
|
|
// act
|
|
err := a.validateSpiBusNumber(tc.busNr)
|
|
// assert
|
|
gobottest.Assert(t, err, tc.expectedErr)
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_validateI2cBusNumber(t *testing.T) {
|
|
var cases = map[string]struct {
|
|
busNr int
|
|
wantErr error
|
|
}{
|
|
"number_negative_error": {
|
|
busNr: -1,
|
|
wantErr: fmt.Errorf("I2C Bus number -1 invalid: only 2, 6, 7 supported by current Rockchip."),
|
|
},
|
|
"number_2_ok": {
|
|
busNr: 2,
|
|
},
|
|
"number_6_ok": {
|
|
busNr: 6,
|
|
},
|
|
"number_7_ok": {
|
|
busNr: 7,
|
|
},
|
|
"number_1_not_ok": {
|
|
busNr: 1,
|
|
wantErr: fmt.Errorf("I2C Bus number 1 invalid: only 2, 6, 7 supported by current Rockchip."),
|
|
},
|
|
}
|
|
for name, tc := range cases {
|
|
t.Run(name, func(t *testing.T) {
|
|
// arrange
|
|
a := NewAdaptor()
|
|
// act
|
|
err := a.validateI2cBusNumber(tc.busNr)
|
|
// assert
|
|
gobottest.Assert(t, err, tc.wantErr)
|
|
})
|
|
}
|
|
}
|