gobot.io/x/gobot/v2@v2.1.0/drivers/gpio/stepper_driver_test.go (about) 1 package gpio 2 3 import ( 4 "errors" 5 "strings" 6 "testing" 7 "time" 8 9 "gobot.io/x/gobot/v2/gobottest" 10 ) 11 12 const ( 13 stepsInRev = 32 14 ) 15 16 func initStepperMotorDriver() *StepperDriver { 17 return NewStepperDriver(newGpioTestAdaptor(), [4]string{"7", "11", "13", "15"}, StepperModes.DualPhaseStepping, stepsInRev) 18 } 19 20 func TestStepperDriverRun(t *testing.T) { 21 d := initStepperMotorDriver() 22 d.Run() 23 gobottest.Assert(t, d.IsMoving(), true) 24 } 25 26 func TestStepperDriverHalt(t *testing.T) { 27 d := initStepperMotorDriver() 28 d.Run() 29 time.Sleep(200 * time.Millisecond) 30 d.Halt() 31 gobottest.Assert(t, d.IsMoving(), false) 32 } 33 34 func TestStepperDriverDefaultName(t *testing.T) { 35 d := initStepperMotorDriver() 36 gobottest.Assert(t, strings.HasPrefix(d.Name(), "Stepper"), true) 37 } 38 39 func TestStepperDriverSetName(t *testing.T) { 40 name := "SomeStepperSriver" 41 d := initStepperMotorDriver() 42 d.SetName(name) 43 gobottest.Assert(t, d.Name(), name) 44 } 45 46 func TestStepperDriverSetDirection(t *testing.T) { 47 dir := "backward" 48 d := initStepperMotorDriver() 49 d.SetDirection(dir) 50 gobottest.Assert(t, d.direction, dir) 51 } 52 53 func TestStepperDriverDefaultDirection(t *testing.T) { 54 d := initStepperMotorDriver() 55 gobottest.Assert(t, d.direction, "forward") 56 } 57 58 func TestStepperDriverInvalidDirection(t *testing.T) { 59 d := initStepperMotorDriver() 60 err := d.SetDirection("reverse") 61 gobottest.Assert(t, err, errors.New("Invalid direction. Value should be forward or backward")) 62 } 63 64 func TestStepperDriverMoveForward(t *testing.T) { 65 d := initStepperMotorDriver() 66 d.Move(1) 67 gobottest.Assert(t, d.GetCurrentStep(), 1) 68 69 d.Move(10) 70 gobottest.Assert(t, d.GetCurrentStep(), 11) 71 } 72 73 func TestStepperDriverMoveBackward(t *testing.T) { 74 d := initStepperMotorDriver() 75 d.Move(-1) 76 gobottest.Assert(t, d.GetCurrentStep(), stepsInRev-1) 77 78 d.Move(-10) 79 gobottest.Assert(t, d.GetCurrentStep(), stepsInRev-11) 80 } 81 82 func TestStepperDriverMoveFullRotation(t *testing.T) { 83 d := initStepperMotorDriver() 84 d.Move(stepsInRev) 85 gobottest.Assert(t, d.GetCurrentStep(), 0) 86 } 87 88 func TestStepperDriverMotorSetSpeedMoreThanMax(t *testing.T) { 89 d := initStepperMotorDriver() 90 m := d.GetMaxSpeed() 91 92 d.SetSpeed(m + 1) 93 gobottest.Assert(t, m, d.speed) 94 } 95 96 func TestStepperDriverMotorSetSpeedLessOrEqualMax(t *testing.T) { 97 d := initStepperMotorDriver() 98 m := d.GetMaxSpeed() 99 100 d.SetSpeed(m - 1) 101 gobottest.Assert(t, m-1, d.speed) 102 103 d.SetSpeed(m) 104 gobottest.Assert(t, m, d.speed) 105 }