limit_test.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package util
  2. import (
  3. "bytes"
  4. "testing"
  5. )
  6. func TestLimiter_Add(t *testing.T) {
  7. l := NewLimiter(10)
  8. if err := l.Add(5); err != nil {
  9. t.Fatal(err)
  10. }
  11. if err := l.Add(5); err != nil {
  12. t.Fatal(err)
  13. }
  14. if err := l.Add(5); err != ErrLimitReached {
  15. t.Fatalf("expected ErrLimitReached, got %#v", err)
  16. }
  17. }
  18. func TestLimiter_AddSet(t *testing.T) {
  19. l := NewLimiter(10)
  20. l.Add(5)
  21. if l.Value() != 5 {
  22. t.Fatalf("expected value to be %d, got %d", 5, l.Value())
  23. }
  24. l.Set(7)
  25. if l.Value() != 7 {
  26. t.Fatalf("expected value to be %d, got %d", 7, l.Value())
  27. }
  28. }
  29. func TestLimitWriter_WriteNoLimiter(t *testing.T) {
  30. var buf bytes.Buffer
  31. lw := NewLimitWriter(&buf)
  32. if _, err := lw.Write(make([]byte, 10)); err != nil {
  33. t.Fatal(err)
  34. }
  35. if _, err := lw.Write(make([]byte, 1)); err != nil {
  36. t.Fatal(err)
  37. }
  38. if buf.Len() != 11 {
  39. t.Fatalf("expected buffer length to be %d, got %d", 11, buf.Len())
  40. }
  41. }
  42. func TestLimitWriter_WriteOneLimiter(t *testing.T) {
  43. var buf bytes.Buffer
  44. l := NewLimiter(10)
  45. lw := NewLimitWriter(&buf, l)
  46. if _, err := lw.Write(make([]byte, 10)); err != nil {
  47. t.Fatal(err)
  48. }
  49. if _, err := lw.Write(make([]byte, 1)); err != ErrLimitReached {
  50. t.Fatalf("expected ErrLimitReached, got %#v", err)
  51. }
  52. if buf.Len() != 10 {
  53. t.Fatalf("expected buffer length to be %d, got %d", 10, buf.Len())
  54. }
  55. if l.Value() != 10 {
  56. t.Fatalf("expected limiter value to be %d, got %d", 10, l.Value())
  57. }
  58. }
  59. func TestLimitWriter_WriteTwoLimiters(t *testing.T) {
  60. var buf bytes.Buffer
  61. l1 := NewLimiter(11)
  62. l2 := NewLimiter(9)
  63. lw := NewLimitWriter(&buf, l1, l2)
  64. if _, err := lw.Write(make([]byte, 8)); err != nil {
  65. t.Fatal(err)
  66. }
  67. if _, err := lw.Write(make([]byte, 2)); err != ErrLimitReached {
  68. t.Fatalf("expected ErrLimitReached, got %#v", err)
  69. }
  70. if buf.Len() != 8 {
  71. t.Fatalf("expected buffer length to be %d, got %d", 8, buf.Len())
  72. }
  73. if l1.Value() != 8 {
  74. t.Fatalf("expected limiter 1 value to be %d, got %d", 8, l1.Value())
  75. }
  76. if l2.Value() != 8 {
  77. t.Fatalf("expected limiter 2 value to be %d, got %d", 8, l2.Value())
  78. }
  79. }