gobot.io/x/gobot@v1.16.0/drivers/spi/ssd1306_driver_test.go (about)

     1  package spi
     2  
     3  import (
     4  	"errors"
     5  	"image"
     6  	"sync"
     7  	"testing"
     8  
     9  	"gobot.io/x/gobot"
    10  	"gobot.io/x/gobot/gobottest"
    11  )
    12  
    13  var _ gobot.Driver = (*SSD1306Driver)(nil)
    14  
    15  func initTestSSDDriver() *SSD1306Driver {
    16  	return NewSSD1306Driver(newGpioTestAdaptor())
    17  }
    18  
    19  func TestDriverSSDStart(t *testing.T) {
    20  	d := initTestSSDDriver()
    21  	gobottest.Assert(t, d.Start(), nil)
    22  }
    23  
    24  func TestDriverSSDHalt(t *testing.T) {
    25  	d := initTestSSDDriver()
    26  	d.Start()
    27  	gobottest.Assert(t, d.Halt(), nil)
    28  }
    29  
    30  func TestDriverSSDDisplay(t *testing.T) {
    31  	d := initTestSSDDriver()
    32  	d.Start()
    33  	gobottest.Assert(t, d.Display(), nil)
    34  }
    35  
    36  func TestSSD1306DriverShowImage(t *testing.T) {
    37  	d := initTestSSDDriver()
    38  	d.Start()
    39  	img := image.NewRGBA(image.Rect(0, 0, 640, 480))
    40  	gobottest.Assert(t, d.ShowImage(img), errors.New("Image must match the display width and height"))
    41  
    42  	img = image.NewRGBA(image.Rect(0, 0, 128, 64))
    43  	gobottest.Assert(t, d.ShowImage(img), nil)
    44  }
    45  
    46  type gpioTestAdaptor struct {
    47  	name string
    48  	port string
    49  	mtx  sync.Mutex
    50  	Connector
    51  	testAdaptorDigitalWrite func() (err error)
    52  	testAdaptorServoWrite   func() (err error)
    53  	testAdaptorPwmWrite     func() (err error)
    54  	testAdaptorAnalogRead   func() (val int, err error)
    55  	testAdaptorDigitalRead  func() (val int, err error)
    56  }
    57  
    58  func (t *gpioTestAdaptor) TestAdaptorDigitalWrite(f func() (err error)) {
    59  	t.mtx.Lock()
    60  	defer t.mtx.Unlock()
    61  	t.testAdaptorDigitalWrite = f
    62  }
    63  func (t *gpioTestAdaptor) TestAdaptorServoWrite(f func() (err error)) {
    64  	t.mtx.Lock()
    65  	defer t.mtx.Unlock()
    66  	t.testAdaptorServoWrite = f
    67  }
    68  func (t *gpioTestAdaptor) TestAdaptorPwmWrite(f func() (err error)) {
    69  	t.mtx.Lock()
    70  	defer t.mtx.Unlock()
    71  	t.testAdaptorPwmWrite = f
    72  }
    73  func (t *gpioTestAdaptor) TestAdaptorAnalogRead(f func() (val int, err error)) {
    74  	t.mtx.Lock()
    75  	defer t.mtx.Unlock()
    76  	t.testAdaptorAnalogRead = f
    77  }
    78  func (t *gpioTestAdaptor) TestAdaptorDigitalRead(f func() (val int, err error)) {
    79  	t.mtx.Lock()
    80  	defer t.mtx.Unlock()
    81  	t.testAdaptorDigitalRead = f
    82  }
    83  
    84  func (t *gpioTestAdaptor) ServoWrite(string, byte) (err error) {
    85  	t.mtx.Lock()
    86  	defer t.mtx.Unlock()
    87  	return t.testAdaptorServoWrite()
    88  }
    89  func (t *gpioTestAdaptor) PwmWrite(string, byte) (err error) {
    90  	t.mtx.Lock()
    91  	defer t.mtx.Unlock()
    92  	return t.testAdaptorPwmWrite()
    93  }
    94  func (t *gpioTestAdaptor) AnalogRead(string) (val int, err error) {
    95  	t.mtx.Lock()
    96  	defer t.mtx.Unlock()
    97  	return t.testAdaptorAnalogRead()
    98  }
    99  func (t *gpioTestAdaptor) DigitalRead(string) (val int, err error) {
   100  	t.mtx.Lock()
   101  	defer t.mtx.Unlock()
   102  	return t.testAdaptorDigitalRead()
   103  }
   104  func (t *gpioTestAdaptor) DigitalWrite(string, byte) (err error) {
   105  	t.mtx.Lock()
   106  	defer t.mtx.Unlock()
   107  	return t.testAdaptorDigitalWrite()
   108  }
   109  func (t *gpioTestAdaptor) Connect() (err error)  { return }
   110  func (t *gpioTestAdaptor) Finalize() (err error) { return }
   111  func (t *gpioTestAdaptor) Name() string          { return t.name }
   112  func (t *gpioTestAdaptor) SetName(n string)      { t.name = n }
   113  func (t *gpioTestAdaptor) Port() string          { return t.port }
   114  
   115  func newGpioTestAdaptor() *gpioTestAdaptor {
   116  	return &gpioTestAdaptor{
   117  		port: "/dev/null",
   118  		testAdaptorDigitalWrite: func() (err error) {
   119  			return nil
   120  		},
   121  		testAdaptorServoWrite: func() (err error) {
   122  			return nil
   123  		},
   124  		testAdaptorPwmWrite: func() (err error) {
   125  			return nil
   126  		},
   127  		testAdaptorAnalogRead: func() (val int, err error) {
   128  			return 99, nil
   129  		},
   130  		testAdaptorDigitalRead: func() (val int, err error) {
   131  			return 1, nil
   132  		},
   133  		Connector: &TestConnector{},
   134  	}
   135  }