input_test.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // +build !windows
  2. package liner
  3. import (
  4. "bufio"
  5. "bytes"
  6. "testing"
  7. )
  8. func (s *State) expectRune(t *testing.T, r rune) {
  9. item, err := s.readNext()
  10. if err != nil {
  11. t.Fatalf("Expected rune '%c', got error %s\n", r, err)
  12. }
  13. if v, ok := item.(rune); !ok {
  14. t.Fatalf("Expected rune '%c', got non-rune %v\n", r, v)
  15. } else {
  16. if v != r {
  17. t.Fatalf("Expected rune '%c', got rune '%c'\n", r, v)
  18. }
  19. }
  20. }
  21. func (s *State) expectAction(t *testing.T, a action) {
  22. item, err := s.readNext()
  23. if err != nil {
  24. t.Fatalf("Expected Action %d, got error %s\n", a, err)
  25. }
  26. if v, ok := item.(action); !ok {
  27. t.Fatalf("Expected Action %d, got non-Action %v\n", a, v)
  28. } else {
  29. if v != a {
  30. t.Fatalf("Expected Action %d, got Action %d\n", a, v)
  31. }
  32. }
  33. }
  34. func TestTypes(t *testing.T) {
  35. input := []byte{'A', 27, 'B', 27, 91, 68, 27, '[', '1', ';', '5', 'D', 'e'}
  36. var s State
  37. s.r = bufio.NewReader(bytes.NewBuffer(input))
  38. next := make(chan nexter)
  39. go func() {
  40. for {
  41. var n nexter
  42. n.r, _, n.err = s.r.ReadRune()
  43. next <- n
  44. }
  45. }()
  46. s.next = next
  47. s.expectRune(t, 'A')
  48. s.expectRune(t, 27)
  49. s.expectRune(t, 'B')
  50. s.expectAction(t, left)
  51. s.expectAction(t, wordLeft)
  52. s.expectRune(t, 'e')
  53. }