bytesize_test.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package units_test
  2. import (
  3. "testing"
  4. "github.com/xtls/xray-core/common/units"
  5. )
  6. func TestByteSizes(t *testing.T) {
  7. size := units.ByteSize(0)
  8. assertSizeString(t, size, "0")
  9. size++
  10. assertSizeValue(t,
  11. assertSizeString(t, size, "1.00B"),
  12. size,
  13. )
  14. size <<= 10
  15. assertSizeValue(t,
  16. assertSizeString(t, size, "1.00KB"),
  17. size,
  18. )
  19. size <<= 10
  20. assertSizeValue(t,
  21. assertSizeString(t, size, "1.00MB"),
  22. size,
  23. )
  24. size <<= 10
  25. assertSizeValue(t,
  26. assertSizeString(t, size, "1.00GB"),
  27. size,
  28. )
  29. size <<= 10
  30. assertSizeValue(t,
  31. assertSizeString(t, size, "1.00TB"),
  32. size,
  33. )
  34. size <<= 10
  35. assertSizeValue(t,
  36. assertSizeString(t, size, "1.00PB"),
  37. size,
  38. )
  39. size <<= 10
  40. assertSizeValue(t,
  41. assertSizeString(t, size, "1.00EB"),
  42. size,
  43. )
  44. }
  45. func assertSizeValue(t *testing.T, size string, expected units.ByteSize) {
  46. actual := units.ByteSize(0)
  47. err := actual.Parse(size)
  48. if err != nil {
  49. t.Error(err)
  50. }
  51. if actual != expected {
  52. t.Errorf("expect %s, but got %s", expected, actual)
  53. }
  54. }
  55. func assertSizeString(t *testing.T, size units.ByteSize, expected string) string {
  56. actual := size.String()
  57. if actual != expected {
  58. t.Errorf("expect %s, but got %s", expected, actual)
  59. }
  60. return expected
  61. }