gobot.io/x/gobot/v2@v2.1.0/drivers/gpio/led_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 = (*LedDriver)(nil)
    13  
    14  func initTestLedDriver() *LedDriver {
    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 NewLedDriver(a, "1")
    23  }
    24  
    25  func TestLedDriver(t *testing.T) {
    26  	var err interface{}
    27  	a := newGpioTestAdaptor()
    28  	d := NewLedDriver(a, "1")
    29  
    30  	gobottest.Assert(t, d.Pin(), "1")
    31  	gobottest.Refute(t, d.Connection(), nil)
    32  
    33  	a.testAdaptorDigitalWrite = func(string, byte) (err error) {
    34  		return errors.New("write error")
    35  	}
    36  	a.testAdaptorPwmWrite = func(string, byte) (err error) {
    37  		return errors.New("pwm error")
    38  	}
    39  
    40  	err = d.Command("Toggle")(nil)
    41  	gobottest.Assert(t, err.(error), errors.New("write error"))
    42  
    43  	err = d.Command("On")(nil)
    44  	gobottest.Assert(t, err.(error), errors.New("write error"))
    45  
    46  	err = d.Command("Off")(nil)
    47  	gobottest.Assert(t, err.(error), errors.New("write error"))
    48  
    49  	err = d.Command("Brightness")(map[string]interface{}{"level": 100.0})
    50  	gobottest.Assert(t, err.(error), errors.New("pwm error"))
    51  
    52  }
    53  
    54  func TestLedDriverStart(t *testing.T) {
    55  	d := initTestLedDriver()
    56  	gobottest.Assert(t, d.Start(), nil)
    57  }
    58  
    59  func TestLedDriverHalt(t *testing.T) {
    60  	d := initTestLedDriver()
    61  	gobottest.Assert(t, d.Halt(), nil)
    62  }
    63  
    64  func TestLedDriverToggle(t *testing.T) {
    65  	d := initTestLedDriver()
    66  	d.Off()
    67  	d.Toggle()
    68  	gobottest.Assert(t, d.State(), true)
    69  	d.Toggle()
    70  	gobottest.Assert(t, d.State(), false)
    71  }
    72  
    73  func TestLedDriverBrightness(t *testing.T) {
    74  	a := newGpioTestAdaptor()
    75  	d := NewLedDriver(a, "1")
    76  	a.testAdaptorPwmWrite = func(string, byte) (err error) {
    77  		err = errors.New("pwm error")
    78  		return
    79  	}
    80  	gobottest.Assert(t, d.Brightness(150), errors.New("pwm error"))
    81  }
    82  
    83  func TestLEDDriverDefaultName(t *testing.T) {
    84  	a := newGpioTestAdaptor()
    85  	d := NewLedDriver(a, "1")
    86  	gobottest.Assert(t, strings.HasPrefix(d.Name(), "LED"), true)
    87  }
    88  
    89  func TestLEDDriverSetName(t *testing.T) {
    90  	a := newGpioTestAdaptor()
    91  	d := NewLedDriver(a, "1")
    92  	d.SetName("mybot")
    93  	gobottest.Assert(t, d.Name(), "mybot")
    94  }