package uhf import ( "testing" "github.com/stretchr/testify/require" ) type gateReaderStub struct { opened byte closed byte } func (s *gateReaderStub) Connect() error { return nil } func (s *gateReaderStub) Disconnect() error { return nil } func (s *gateReaderStub) SendData([]byte) error { return nil } func (s *gateReaderStub) ReadData() ([]byte, error) { return nil, nil } func (s *gateReaderStub) IsConnected() bool { return true } func (s *gateReaderStub) ReleaseRelay1() error { return nil } func (s *gateReaderStub) ReleaseRelay2() error { return nil } func (s *gateReaderStub) CloseRelay1(validTime byte) error { s.opened = validTime; return nil } func (s *gateReaderStub) CloseRelay2(validTime byte) error { s.closed = validTime; return nil } func TestManagerControlsBothGateDirections(t *testing.T) { reader := &gateReaderStub{} manager := &Manager{devices: map[string]*DeviceHandler{ "GATE-01": {reader: reader}, }} require.True(t, manager.IsGateConnected("GATE-01")) require.NoError(t, manager.OpenGate("GATE-01", 2)) require.NoError(t, manager.CloseGate("GATE-01", 3)) require.Equal(t, byte(2), reader.opened) require.Equal(t, byte(3), reader.closed) require.Error(t, manager.OpenGate("MISSING", 2)) }