connection_status_test.go 1022 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package uhf
  2. import (
  3. "testing"
  4. "time"
  5. )
  6. func TestTCPReaderIsConnectedDoesNotWaitForIOLock(t *testing.T) {
  7. reader := NewTCPReader("127.0.0.1", 9000)
  8. reader.connected.Store(true)
  9. reader.ioMu.Lock()
  10. defer reader.ioMu.Unlock()
  11. done := make(chan bool, 1)
  12. go func() { done <- reader.IsConnected() }()
  13. select {
  14. case connected := <-done:
  15. if !connected {
  16. t.Fatal("expected TCP reader to report connected")
  17. }
  18. case <-time.After(100 * time.Millisecond):
  19. t.Fatal("TCP connection status waited for the I/O lock")
  20. }
  21. }
  22. func TestSerialReaderIsConnectedDoesNotWaitForIOLock(t *testing.T) {
  23. reader := NewSerialReader("COM1", 115200)
  24. reader.connected.Store(true)
  25. reader.ioMu.Lock()
  26. defer reader.ioMu.Unlock()
  27. done := make(chan bool, 1)
  28. go func() { done <- reader.IsConnected() }()
  29. select {
  30. case connected := <-done:
  31. if !connected {
  32. t.Fatal("expected serial reader to report connected")
  33. }
  34. case <-time.After(100 * time.Millisecond):
  35. t.Fatal("serial connection status waited for the I/O lock")
  36. }
  37. }