gobot.io/x/gobot/v2@v2.1.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/v2" 9 "gobot.io/x/gobot/v2/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 }