gobot.io/x/gobot@v1.16.0/drivers/gpio/rgb_led_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 = (*RgbLedDriver)(nil)
    13  
    14  func initTestRgbLedDriver() *RgbLedDriver {
    15  	a := newGpioTestAdaptor()
    16  	a.testAdaptorDigitalWrite = func(string, byte) (err error) {
    17  		return nil
    18  	}
    19  	a.testAdaptorPwmWrite = func(string, byte) (err error) {
    20  		return nil
    21  	}
    22  	return NewRgbLedDriver(a, "1", "2", "3")
    23  }
    24  
    25  func TestRgbLedDriver(t *testing.T) {
    26  	var err interface{}
    27  
    28  	a := newGpioTestAdaptor()
    29  	d := NewRgbLedDriver(a, "1", "2", "3")
    30  
    31  	gobottest.Assert(t, d.Pin(), "r=1, g=2, b=3")
    32  	gobottest.Assert(t, d.RedPin(), "1")
    33  	gobottest.Assert(t, d.GreenPin(), "2")
    34  	gobottest.Assert(t, d.BluePin(), "3")
    35  	gobottest.Refute(t, d.Connection(), nil)
    36  
    37  	a.testAdaptorDigitalWrite = func(string, byte) (err error) {
    38  		return errors.New("write error")
    39  	}
    40  	a.testAdaptorPwmWrite = func(string, byte) (err error) {
    41  		return errors.New("pwm error")
    42  	}
    43  
    44  	err = d.Command("Toggle")(nil)
    45  	gobottest.Assert(t, err.(error), errors.New("pwm error"))
    46  
    47  	err = d.Command("On")(nil)
    48  	gobottest.Assert(t, err.(error), errors.New("pwm error"))
    49  
    50  	err = d.Command("Off")(nil)
    51  	gobottest.Assert(t, err.(error), errors.New("pwm error"))
    52  
    53  	err = d.Command("SetRGB")(map[string]interface{}{"r": 0xff, "g": 0xff, "b": 0xff})
    54  	gobottest.Assert(t, err.(error), errors.New("pwm error"))
    55  }
    56  
    57  func TestRgbLedDriverStart(t *testing.T) {
    58  	d := initTestRgbLedDriver()
    59  	gobottest.Assert(t, d.Start(), nil)
    60  }
    61  
    62  func TestRgbLedDriverHalt(t *testing.T) {
    63  	d := initTestRgbLedDriver()
    64  	gobottest.Assert(t, d.Halt(), nil)
    65  }
    66  
    67  func TestRgbLedDriverToggle(t *testing.T) {
    68  	d := initTestRgbLedDriver()
    69  	d.Off()
    70  	d.Toggle()
    71  	gobottest.Assert(t, d.State(), true)
    72  	d.Toggle()
    73  	gobottest.Assert(t, d.State(), false)
    74  }
    75  
    76  func TestRgbLedDriverSetLevel(t *testing.T) {
    77  	a := newGpioTestAdaptor()
    78  	d := NewRgbLedDriver(a, "1", "2", "3")
    79  	gobottest.Assert(t, d.SetLevel("1", 150), nil)
    80  
    81  	d = NewRgbLedDriver(a, "1", "2", "3")
    82  	a.testAdaptorPwmWrite = func(string, byte) (err error) {
    83  		err = errors.New("pwm error")
    84  		return
    85  	}
    86  	gobottest.Assert(t, d.SetLevel("1", 150), errors.New("pwm error"))
    87  }
    88  
    89  func TestRgbLedDriverDefaultName(t *testing.T) {
    90  	a := newGpioTestAdaptor()
    91  	d := NewRgbLedDriver(a, "1", "2", "3")
    92  	gobottest.Assert(t, strings.HasPrefix(d.Name(), "RGB"), true)
    93  }
    94  
    95  func TestRgbLedDriverSetName(t *testing.T) {
    96  	a := newGpioTestAdaptor()
    97  	d := NewRgbLedDriver(a, "1", "2", "3")
    98  	d.SetName("mybot")
    99  	gobottest.Assert(t, d.Name(), "mybot")
   100  }