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 }