chunks_test.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package chunks
  2. import (
  3. "slices"
  4. "testing"
  5. )
  6. func TestOf(t *testing.T) {
  7. cases := []struct {
  8. total int64
  9. chunkSize int64
  10. want []Chunk
  11. }{
  12. {0, 1, nil},
  13. {1, 1, []Chunk{{0, 0}}},
  14. {1, 2, []Chunk{{0, 0}}},
  15. {2, 1, []Chunk{{0, 0}, {1, 1}}},
  16. {10, 9, []Chunk{{0, 8}, {9, 9}}},
  17. }
  18. for _, tt := range cases {
  19. got := slices.Collect(Of(tt.total, tt.chunkSize))
  20. if !slices.Equal(got, tt.want) {
  21. t.Errorf("[%d/%d]: got %v; want %v", tt.total, tt.chunkSize, got, tt.want)
  22. }
  23. }
  24. }
  25. func TestSize(t *testing.T) {
  26. cases := []struct {
  27. c Chunk
  28. want int64
  29. }{
  30. {Chunk{0, 0}, 1},
  31. {Chunk{0, 1}, 2},
  32. {Chunk{3, 4}, 2},
  33. }
  34. for _, tt := range cases {
  35. got := tt.c.Size()
  36. if got != tt.want {
  37. t.Errorf("%v: got %d; want %d", tt.c, got, tt.want)
  38. }
  39. }
  40. }
  41. func TestCount(t *testing.T) {
  42. cases := []struct {
  43. total int64
  44. chunkSize int64
  45. want int64
  46. }{
  47. {0, 1, 0},
  48. {1, 1, 1},
  49. {1, 2, 1},
  50. {2, 1, 2},
  51. {10, 9, 2},
  52. }
  53. for _, tt := range cases {
  54. got := Count(tt.total, tt.chunkSize)
  55. if got != tt.want {
  56. t.Errorf("[%d/%d]: got %d; want %d", tt.total, tt.chunkSize, got, tt.want)
  57. }
  58. }
  59. }