gobot.io/x/gobot/v2@v2.1.0/platforms/rockpi/rockpi_adaptor_test.go (about) 1 package rockpi 2 3 import ( 4 "fmt" 5 "testing" 6 7 "gobot.io/x/gobot/v2/gobottest" 8 "gobot.io/x/gobot/v2/system" 9 ) 10 11 func initTestAdaptorWithMockedFilesystem(mockPaths []string) (*Adaptor, *system.MockFilesystem) { 12 a := NewAdaptor() 13 fs := a.sys.UseMockFilesystem(mockPaths) 14 a.Connect() 15 return a, fs 16 } 17 18 func TestDefaultI2cBus(t *testing.T) { 19 a, _ := initTestAdaptorWithMockedFilesystem([]string{}) 20 gobottest.Assert(t, a.DefaultI2cBus(), 7) 21 } 22 23 func Test_getPinTranslatorFunction(t *testing.T) { 24 var cases = map[string]struct { 25 pin string 26 model string 27 expectedLine int 28 expectedErr error 29 }{ 30 "Rock Pi 4 specific pin": { 31 pin: "12", 32 model: "Radxa ROCK 4", 33 expectedLine: 131, 34 expectedErr: nil, 35 }, 36 "Rock Pi 4C+ specific pin": { 37 pin: "12", 38 model: "Radxa ROCK 4C+", 39 expectedLine: 91, 40 expectedErr: nil, 41 }, 42 "Generic pin": { 43 pin: "3", 44 model: "whatever", 45 expectedLine: 71, 46 expectedErr: nil, 47 }, 48 "Not a valid pin": { 49 pin: "666", 50 model: "whatever", 51 expectedLine: 0, 52 expectedErr: fmt.Errorf("Not a valid pin"), 53 }, 54 } 55 56 for name, tc := range cases { 57 t.Run(name, func(t *testing.T) { 58 // arrange 59 a := NewAdaptor() 60 fn := a.getPinTranslatorFunction() 61 fs := a.sys.UseMockFilesystem([]string{procDeviceTreeModel}) 62 fs.Files[procDeviceTreeModel].Contents = tc.model 63 // act 64 chip, line, err := fn(tc.pin) 65 // assert 66 gobottest.Assert(t, chip, "") 67 gobottest.Assert(t, err, tc.expectedErr) 68 gobottest.Assert(t, line, tc.expectedLine) 69 }) 70 } 71 } 72 73 func Test_validateSpiBusNumber(t *testing.T) { 74 var cases = map[string]struct { 75 busNr int 76 expectedErr error 77 }{ 78 "number_1_ok": { 79 busNr: 2, 80 }, 81 "number_2_ok": { 82 busNr: 2, 83 }, 84 "number_0_not_ok": { 85 busNr: 0, 86 expectedErr: fmt.Errorf("SPI Bus number 0 invalid: only 1, 2 supported by current Rockchip."), 87 }, 88 "number_6_not_ok": { 89 busNr: 6, 90 expectedErr: fmt.Errorf("SPI Bus number 6 invalid: only 1, 2 supported by current Rockchip."), 91 }, 92 } 93 for name, tc := range cases { 94 t.Run(name, func(t *testing.T) { 95 // arrange 96 a := NewAdaptor() 97 // act 98 err := a.validateSpiBusNumber(tc.busNr) 99 // assert 100 gobottest.Assert(t, err, tc.expectedErr) 101 }) 102 } 103 } 104 105 func Test_validateI2cBusNumber(t *testing.T) { 106 var cases = map[string]struct { 107 busNr int 108 wantErr error 109 }{ 110 "number_negative_error": { 111 busNr: -1, 112 wantErr: fmt.Errorf("I2C Bus number -1 invalid: only 2, 6, 7 supported by current Rockchip."), 113 }, 114 "number_2_ok": { 115 busNr: 2, 116 }, 117 "number_6_ok": { 118 busNr: 6, 119 }, 120 "number_7_ok": { 121 busNr: 7, 122 }, 123 "number_1_not_ok": { 124 busNr: 1, 125 wantErr: fmt.Errorf("I2C Bus number 1 invalid: only 2, 6, 7 supported by current Rockchip."), 126 }, 127 } 128 for name, tc := range cases { 129 t.Run(name, func(t *testing.T) { 130 // arrange 131 a := NewAdaptor() 132 // act 133 err := a.validateI2cBusNumber(tc.busNr) 134 // assert 135 gobottest.Assert(t, err, tc.wantErr) 136 }) 137 } 138 }