gobot.io/x/gobot/v2@v2.1.0/drivers/gpio/motor_driver_test.go (about) 1 package gpio 2 3 import ( 4 "strings" 5 "testing" 6 7 "gobot.io/x/gobot/v2" 8 "gobot.io/x/gobot/v2/gobottest" 9 ) 10 11 var _ gobot.Driver = (*MotorDriver)(nil) 12 13 func initTestMotorDriver() *MotorDriver { 14 return NewMotorDriver(newGpioTestAdaptor(), "1") 15 } 16 17 func TestMotorDriver(t *testing.T) { 18 d := NewMotorDriver(newGpioTestAdaptor(), "1") 19 gobottest.Refute(t, d.Connection(), nil) 20 21 } 22 func TestMotorDriverStart(t *testing.T) { 23 d := initTestMotorDriver() 24 gobottest.Assert(t, d.Start(), nil) 25 } 26 27 func TestMotorDriverHalt(t *testing.T) { 28 d := initTestMotorDriver() 29 gobottest.Assert(t, d.Halt(), nil) 30 } 31 32 func TestMotorDriverIsOn(t *testing.T) { 33 d := initTestMotorDriver() 34 d.CurrentMode = "digital" 35 d.CurrentState = 1 36 gobottest.Assert(t, d.IsOn(), true) 37 d.CurrentMode = "analog" 38 d.CurrentSpeed = 100 39 gobottest.Assert(t, d.IsOn(), true) 40 } 41 42 func TestMotorDriverIsOff(t *testing.T) { 43 d := initTestMotorDriver() 44 d.Off() 45 gobottest.Assert(t, d.IsOff(), true) 46 } 47 48 func TestMotorDriverOn(t *testing.T) { 49 d := initTestMotorDriver() 50 d.CurrentMode = "digital" 51 d.On() 52 gobottest.Assert(t, d.CurrentState, uint8(1)) 53 d.CurrentMode = "analog" 54 d.CurrentSpeed = 0 55 d.On() 56 gobottest.Assert(t, d.CurrentSpeed, uint8(255)) 57 } 58 59 func TestMotorDriverOff(t *testing.T) { 60 d := initTestMotorDriver() 61 d.CurrentMode = "digital" 62 d.Off() 63 gobottest.Assert(t, d.CurrentState, uint8(0)) 64 d.CurrentMode = "analog" 65 d.CurrentSpeed = 100 66 d.Off() 67 gobottest.Assert(t, d.CurrentSpeed, uint8(0)) 68 } 69 70 func TestMotorDriverToggle(t *testing.T) { 71 d := initTestMotorDriver() 72 d.Off() 73 d.Toggle() 74 gobottest.Assert(t, d.IsOn(), true) 75 d.Toggle() 76 gobottest.Assert(t, d.IsOn(), false) 77 } 78 79 func TestMotorDriverMin(t *testing.T) { 80 d := initTestMotorDriver() 81 d.Min() 82 } 83 84 func TestMotorDriverMax(t *testing.T) { 85 d := initTestMotorDriver() 86 d.Max() 87 } 88 89 func TestMotorDriverSpeed(t *testing.T) { 90 d := initTestMotorDriver() 91 d.Speed(100) 92 } 93 94 func TestMotorDriverForward(t *testing.T) { 95 d := initTestMotorDriver() 96 d.Forward(100) 97 gobottest.Assert(t, d.CurrentSpeed, uint8(100)) 98 gobottest.Assert(t, d.CurrentDirection, "forward") 99 } 100 101 func TestMotorDriverBackward(t *testing.T) { 102 d := initTestMotorDriver() 103 d.Backward(100) 104 gobottest.Assert(t, d.CurrentSpeed, uint8(100)) 105 gobottest.Assert(t, d.CurrentDirection, "backward") 106 } 107 108 func TestMotorDriverDirection(t *testing.T) { 109 d := initTestMotorDriver() 110 d.Direction("none") 111 d.DirectionPin = "2" 112 d.Direction("forward") 113 d.Direction("backward") 114 } 115 116 func TestMotorDriverDigital(t *testing.T) { 117 d := initTestMotorDriver() 118 d.SpeedPin = "" // Disable speed 119 d.CurrentMode = "digital" 120 d.ForwardPin = "2" 121 d.BackwardPin = "3" 122 123 d.On() 124 gobottest.Assert(t, d.CurrentState, uint8(1)) 125 d.Off() 126 gobottest.Assert(t, d.CurrentState, uint8(0)) 127 } 128 129 func TestMotorDriverDefaultName(t *testing.T) { 130 d := initTestMotorDriver() 131 gobottest.Assert(t, strings.HasPrefix(d.Name(), "Motor"), true) 132 } 133 134 func TestMotorDriverSetName(t *testing.T) { 135 d := initTestMotorDriver() 136 d.SetName("mybot") 137 gobottest.Assert(t, d.Name(), "mybot") 138 }