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  }