response_test.go 862 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package stream
  2. import (
  3. "errors"
  4. "testing"
  5. "time"
  6. )
  7. func TestStreamGenerator(t *testing.T) {
  8. response := NewStreamResponse[int](512)
  9. go func() {
  10. for i := 0; i < 10000; i++ {
  11. response.Write(i)
  12. time.Sleep(time.Microsecond)
  13. }
  14. response.Close()
  15. }()
  16. msg := 0
  17. for response.Next() {
  18. _, err := response.Read()
  19. if err != nil {
  20. t.Error(err)
  21. }
  22. msg += 1
  23. }
  24. if msg != 10000 {
  25. t.Errorf("Expected 10000 messages, got %d", msg)
  26. }
  27. }
  28. func TestStreamGeneratorErrorMessage(t *testing.T) {
  29. response := NewStreamResponse[int](512)
  30. go func() {
  31. for i := 0; i < 10000; i++ {
  32. response.Write(i)
  33. time.Sleep(time.Microsecond)
  34. }
  35. response.WriteError(errors.New("test error"))
  36. response.Close()
  37. }()
  38. for response.Next() {
  39. _, err := response.Read()
  40. if err != nil {
  41. if err.Error() != "test error" {
  42. t.Error(err)
  43. }
  44. }
  45. }
  46. }