gobot.io/x/gobot/v2@v2.1.0/system/system_test.go (about) 1 package system 2 3 import ( 4 "testing" 5 6 "gobot.io/x/gobot/v2/gobottest" 7 ) 8 9 func TestNewAccesser(t *testing.T) { 10 // act 11 a := NewAccesser() 12 // assert 13 nativeSys := a.sys.(*nativeSyscall) 14 nativeFsSys := a.fs.(*nativeFilesystem) 15 perphioSpi := a.spiAccess.(*periphioSpiAccess) 16 gobottest.Refute(t, a, nil) 17 gobottest.Refute(t, nativeSys, nil) 18 gobottest.Refute(t, nativeFsSys, nil) 19 gobottest.Refute(t, perphioSpi, nil) 20 } 21 22 func TestNewAccesser_NewSpiDevice(t *testing.T) { 23 // arrange 24 25 const ( 26 busNum = 15 27 chipNum = 14 28 mode = 13 29 bits = 12 30 maxSpeed = int64(11) 31 ) 32 a := NewAccesser() 33 spi := a.UseMockSpi() 34 // act 35 con, err := a.NewSpiDevice(busNum, chipNum, mode, bits, maxSpeed) 36 // assert 37 gobottest.Assert(t, err, nil) 38 gobottest.Refute(t, con, nil) 39 gobottest.Assert(t, spi.busNum, busNum) 40 gobottest.Assert(t, spi.chipNum, chipNum) 41 gobottest.Assert(t, spi.mode, mode) 42 gobottest.Assert(t, spi.bits, bits) 43 gobottest.Assert(t, spi.maxSpeed, maxSpeed) 44 } 45 46 func TestNewAccesser_IsSysfsDigitalPinAccess(t *testing.T) { 47 var tests = map[string]struct { 48 gpiodAccesser bool 49 wantSys bool 50 }{ 51 "default_accesser_sysfs": { 52 wantSys: true, 53 }, 54 "accesser_sysfs": { 55 wantSys: true, 56 }, 57 "accesser_gpiod": { 58 gpiodAccesser: true, 59 wantSys: false, 60 }, 61 } 62 for name, tc := range tests { 63 t.Run(name, func(t *testing.T) { 64 // arrange 65 a := NewAccesser() 66 if tc.gpiodAccesser { 67 // there is no mock at this level, so if the system do not support 68 // character device gpio, we skip the test 69 dpa := &gpiodDigitalPinAccess{fs: &nativeFilesystem{}} 70 if !dpa.isSupported() { 71 t.Skip() 72 } 73 WithDigitalPinGpiodAccess()(a) 74 } 75 // act 76 got := a.IsSysfsDigitalPinAccess() 77 // assert 78 gobottest.Refute(t, a, nil) 79 if tc.wantSys { 80 gobottest.Assert(t, got, true) 81 dpaSys := a.digitalPinAccess.(*sysfsDigitalPinAccess) 82 gobottest.Refute(t, dpaSys, nil) 83 gobottest.Assert(t, dpaSys.fs, a.fs.(*nativeFilesystem)) 84 } else { 85 gobottest.Assert(t, got, false) 86 dpaGpiod := a.digitalPinAccess.(*gpiodDigitalPinAccess) 87 gobottest.Refute(t, dpaGpiod, nil) 88 gobottest.Assert(t, dpaGpiod.fs, a.fs.(*nativeFilesystem)) 89 } 90 }) 91 } 92 }