2023-01-05 19:04:32 +01:00
|
|
|
package spi
|
|
|
|
|
|
|
|
import (
|
|
|
|
"strings"
|
|
|
|
"testing"
|
|
|
|
|
2023-10-20 10:27:09 +02:00
|
|
|
"github.com/stretchr/testify/assert"
|
2023-11-12 14:17:02 +01:00
|
|
|
"github.com/stretchr/testify/require"
|
2023-11-15 20:51:52 +01:00
|
|
|
|
2023-05-20 14:25:21 +02:00
|
|
|
"gobot.io/x/gobot/v2"
|
2023-01-05 19:04:32 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
// this ensures that the implementation is based on spi.Driver, which implements the gobot.Driver
|
|
|
|
// and tests all implementations, so no further tests needed here for gobot.Driver interface
|
|
|
|
var _ gobot.Driver = (*MFRC522Driver)(nil)
|
|
|
|
|
|
|
|
func initTestMFRC522DriverWithStubbedAdaptor() (*MFRC522Driver, *spiTestAdaptor) {
|
|
|
|
a := newSpiTestAdaptor()
|
|
|
|
d := NewMFRC522Driver(a)
|
|
|
|
if err := d.Start(); err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
// reset the written bytes during Start()
|
|
|
|
a.spi.Reset()
|
|
|
|
return d, a
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNewMFRC522Driver(t *testing.T) {
|
|
|
|
var di interface{} = NewMFRC522Driver(newSpiTestAdaptor())
|
|
|
|
d, ok := di.(*MFRC522Driver)
|
|
|
|
if !ok {
|
2024-02-13 10:33:46 +01:00
|
|
|
require.Fail(t, "NewMFRC522Driver() should have returned a *MFRC522Driver")
|
2023-01-05 19:04:32 +01:00
|
|
|
}
|
2023-10-20 10:27:09 +02:00
|
|
|
assert.NotNil(t, d.Driver)
|
|
|
|
assert.True(t, strings.HasPrefix(d.Name(), "MFRC522"))
|
2023-01-05 19:04:32 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
func TestMFRC522WriteByteData(t *testing.T) {
|
|
|
|
// arrange
|
|
|
|
d, a := initTestMFRC522DriverWithStubbedAdaptor()
|
|
|
|
// act
|
|
|
|
err := d.connection.WriteByteData(0x00, 0x00)
|
|
|
|
// assert
|
2023-11-12 14:17:02 +01:00
|
|
|
require.NoError(t, err)
|
2023-10-20 10:27:09 +02:00
|
|
|
assert.Equal(t, []byte{0x00, 0x00}, a.spi.Written())
|
2023-01-05 19:04:32 +01:00
|
|
|
}
|