minitouch_test.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package main
  2. import (
  3. "bytes"
  4. "net"
  5. "testing"
  6. "time"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. type MockConn struct {
  10. buffer *bytes.Buffer
  11. }
  12. func (c *MockConn) Read(b []byte) (n int, err error) {
  13. return c.buffer.Read(b)
  14. }
  15. func (c *MockConn) Write(b []byte) (n int, err error) {
  16. return c.buffer.Write(b)
  17. }
  18. func (c *MockConn) Close() error { return nil }
  19. func (c *MockConn) LocalAddr() net.Addr { return nil }
  20. func (c *MockConn) RemoteAddr() net.Addr { return nil }
  21. func (c *MockConn) SetDeadline(t time.Time) error { return nil }
  22. func (c *MockConn) SetReadDeadline(t time.Time) error { return nil }
  23. func (c *MockConn) SetWriteDeadline(t time.Time) error { return nil }
  24. func TestDrainTouchRequests(t *testing.T) {
  25. reqC := make(chan TouchRequest, 0)
  26. conn := &MockConn{
  27. buffer: bytes.NewBuffer(nil),
  28. }
  29. err := drainTouchRequests(conn, reqC)
  30. assert.Error(t, err)
  31. conn = &MockConn{
  32. buffer: bytes.NewBufferString(`v 1
  33. ^ 10 1080 1920 255
  34. $ 25654`),
  35. }
  36. reqC = make(chan TouchRequest, 4)
  37. reqC <- TouchRequest{
  38. Operation: "d",
  39. Index: 1,
  40. PercentX: 1.0,
  41. PercentY: 1.0,
  42. Pressure: 1,
  43. }
  44. reqC <- TouchRequest{
  45. Operation: "c",
  46. }
  47. reqC <- TouchRequest{
  48. Operation: "m",
  49. Index: 3,
  50. PercentX: 0.5,
  51. PercentY: 0.5,
  52. Pressure: 1,
  53. }
  54. reqC <- TouchRequest{
  55. Operation: "u",
  56. Index: 4,
  57. }
  58. close(reqC)
  59. drainTouchRequests(conn, reqC)
  60. output := conn.buffer.String()
  61. assert.Equal(t, "d 1 1080 1920 255\nc\nm 3 540 960 255\nu 4\n", output)
  62. }