diff --git a/platforms/neurosky/neurosky_adaptor_test.go b/platforms/neurosky/neurosky_adaptor_test.go index 6492f85c..f40be4b1 100644 --- a/platforms/neurosky/neurosky_adaptor_test.go +++ b/platforms/neurosky/neurosky_adaptor_test.go @@ -3,6 +3,7 @@ package neurosky import ( "errors" "io" + "sync" "testing" "gobot.io/x/gobot" @@ -11,22 +12,44 @@ import ( var _ gobot.Adaptor = (*Adaptor)(nil) -type NullReadWriteCloser struct{} +type NullReadWriteCloser struct { + mtx sync.Mutex + readError error + closeError error +} -func (NullReadWriteCloser) Write(p []byte) (int, error) { +// func NewNullReadWriteCloser() *NullReadWriteCloser { +// return NullReadWriteCloser{ +// +// } +// } + +func (n *NullReadWriteCloser) ReadError(e error) { + n.mtx.Lock() + defer n.mtx.Unlock() + n.readError = e +} + +func (n *NullReadWriteCloser) CloseError(e error) { + n.mtx.Lock() + defer n.mtx.Unlock() + n.closeError = e +} + +func (n *NullReadWriteCloser) Write(p []byte) (int, error) { return len(p), nil } -var readError error = nil - -func (NullReadWriteCloser) Read(b []byte) (int, error) { - return len(b), readError +func (n *NullReadWriteCloser) Read(b []byte) (int, error) { + n.mtx.Lock() + defer n.mtx.Unlock() + return len(b), n.readError } -var closeError error - -func (NullReadWriteCloser) Close() error { - return closeError +func (n *NullReadWriteCloser) Close() error { + n.mtx.Lock() + defer n.mtx.Unlock() + return n.closeError } func initTestNeuroskyAdaptor() *Adaptor { @@ -53,11 +76,15 @@ func TestNeuroskyAdaptorConnect(t *testing.T) { } func TestNeuroskyAdaptorFinalize(t *testing.T) { - a := initTestNeuroskyAdaptor() + rwc := &NullReadWriteCloser{} + a := NewAdaptor("/dev/null") + a.connect = func(n *Adaptor) (io.ReadWriteCloser, error) { + return rwc, nil + } a.Connect() gobottest.Assert(t, a.Finalize(), nil) - closeError = errors.New("close error") + rwc.CloseError(errors.New("close error")) a.Connect() gobottest.Assert(t, a.Finalize(), errors.New("close error")) } diff --git a/platforms/neurosky/neurosky_driver_test.go b/platforms/neurosky/neurosky_driver_test.go index 72fab322..30181bd5 100644 --- a/platforms/neurosky/neurosky_driver_test.go +++ b/platforms/neurosky/neurosky_driver_test.go @@ -28,16 +28,25 @@ func TestNeuroskyDriver(t *testing.T) { } func TestNeuroskyDriverStart(t *testing.T) { sem := make(chan bool, 0) - d := initTestNeuroskyDriver() + + rwc := &NullReadWriteCloser{} + a := NewAdaptor("/dev/null") + a.connect = func(n *Adaptor) (io.ReadWriteCloser, error) { + return rwc, nil + } + a.Connect() + + d := NewDriver(a) + e := errors.New("read error") d.Once(d.Event(Error), func(data interface{}) { - gobottest.Assert(t, data.(error), errors.New("read error")) + gobottest.Assert(t, data.(error), e) sem <- true }) gobottest.Assert(t, d.Start(), nil) time.Sleep(50 * time.Millisecond) - readError = errors.New("read error") + rwc.ReadError(e) select { case <-sem: