gobot.io/x/gobot@v1.16.0/drivers/gpio/servo_driver_test.go (about)

     1  package gpio
     2  
     3  import (
     4  	"errors"
     5  	"strings"
     6  	"testing"
     7  
     8  	"gobot.io/x/gobot"
     9  	"gobot.io/x/gobot/gobottest"
    10  )
    11  
    12  var _ gobot.Driver = (*ServoDriver)(nil)
    13  
    14  func initTestServoDriver() *ServoDriver {
    15  	return NewServoDriver(newGpioTestAdaptor(), "1")
    16  }
    17  
    18  func TestServoDriver(t *testing.T) {
    19  	var err interface{}
    20  
    21  	a := newGpioTestAdaptor()
    22  	d := NewServoDriver(a, "1")
    23  
    24  	gobottest.Assert(t, d.Pin(), "1")
    25  	gobottest.Refute(t, d.Connection(), nil)
    26  
    27  	a.testAdaptorServoWrite = func(string, byte) (err error) {
    28  		return errors.New("pwm error")
    29  	}
    30  
    31  	err = d.Command("Min")(nil)
    32  	gobottest.Assert(t, err.(error), errors.New("pwm error"))
    33  
    34  	err = d.Command("Center")(nil)
    35  	gobottest.Assert(t, err.(error), errors.New("pwm error"))
    36  
    37  	err = d.Command("Max")(nil)
    38  	gobottest.Assert(t, err.(error), errors.New("pwm error"))
    39  
    40  	err = d.Command("Move")(map[string]interface{}{"angle": 100.0})
    41  	gobottest.Assert(t, err.(error), errors.New("pwm error"))
    42  }
    43  
    44  func TestServoDriverStart(t *testing.T) {
    45  	d := initTestServoDriver()
    46  	gobottest.Assert(t, d.Start(), nil)
    47  }
    48  
    49  func TestServoDriverHalt(t *testing.T) {
    50  	d := initTestServoDriver()
    51  	gobottest.Assert(t, d.Halt(), nil)
    52  }
    53  
    54  func TestServoDriverMove(t *testing.T) {
    55  	d := initTestServoDriver()
    56  	d.Move(100)
    57  	gobottest.Assert(t, d.CurrentAngle, uint8(100))
    58  	err := d.Move(200)
    59  	gobottest.Assert(t, err, ErrServoOutOfRange)
    60  }
    61  
    62  func TestServoDriverMin(t *testing.T) {
    63  	d := initTestServoDriver()
    64  	d.Min()
    65  	gobottest.Assert(t, d.CurrentAngle, uint8(0))
    66  }
    67  
    68  func TestServoDriverMax(t *testing.T) {
    69  	d := initTestServoDriver()
    70  	d.Max()
    71  	gobottest.Assert(t, d.CurrentAngle, uint8(180))
    72  }
    73  
    74  func TestServoDriverCenter(t *testing.T) {
    75  	d := initTestServoDriver()
    76  	d.Center()
    77  	gobottest.Assert(t, d.CurrentAngle, uint8(90))
    78  }
    79  
    80  func TestServoDriverDefaultName(t *testing.T) {
    81  	d := initTestServoDriver()
    82  	gobottest.Assert(t, strings.HasPrefix(d.Name(), "Servo"), true)
    83  }
    84  
    85  func TestServoDriverSetName(t *testing.T) {
    86  	d := initTestServoDriver()
    87  	d.SetName("mybot")
    88  	gobottest.Assert(t, d.Name(), "mybot")
    89  }