uuid_test.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package uuid_test
  2. import (
  3. "testing"
  4. "github.com/google/go-cmp/cmp"
  5. "github.com/xtls/xray-core/common"
  6. . "github.com/xtls/xray-core/common/uuid"
  7. )
  8. func TestParseBytes(t *testing.T) {
  9. str := "2418d087-648d-4990-86e8-19dca1d006d3"
  10. bytes := []byte{0x24, 0x18, 0xd0, 0x87, 0x64, 0x8d, 0x49, 0x90, 0x86, 0xe8, 0x19, 0xdc, 0xa1, 0xd0, 0x06, 0xd3}
  11. uuid, err := ParseBytes(bytes)
  12. common.Must(err)
  13. if diff := cmp.Diff(uuid.String(), str); diff != "" {
  14. t.Error(diff)
  15. }
  16. _, err = ParseBytes([]byte{1, 3, 2, 4})
  17. if err == nil {
  18. t.Fatal("Expect error but nil")
  19. }
  20. }
  21. func TestParseString(t *testing.T) {
  22. str := "2418d087-648d-4990-86e8-19dca1d006d3"
  23. expectedBytes := []byte{0x24, 0x18, 0xd0, 0x87, 0x64, 0x8d, 0x49, 0x90, 0x86, 0xe8, 0x19, 0xdc, 0xa1, 0xd0, 0x06, 0xd3}
  24. uuid, err := ParseString(str)
  25. common.Must(err)
  26. if r := cmp.Diff(expectedBytes, uuid.Bytes()); r != "" {
  27. t.Fatal(r)
  28. }
  29. u0, _ := ParseString("example")
  30. u5, _ := ParseString("feb54431-301b-52bb-a6dd-e1e93e81bb9e")
  31. if r := cmp.Diff(u0, u5); r != "" {
  32. t.Fatal(r)
  33. }
  34. _, err = ParseString("2418d087-648k-4990-86e8-19dca1d006d3")
  35. if err == nil {
  36. t.Fatal("Expect error but nil")
  37. }
  38. _, err = ParseString("2418d087-648d-4990-86e8-19dca1d0")
  39. if err == nil {
  40. t.Fatal("Expect error but nil")
  41. }
  42. }
  43. func TestNewUUID(t *testing.T) {
  44. uuid := New()
  45. uuid2, err := ParseString(uuid.String())
  46. common.Must(err)
  47. if uuid.String() != uuid2.String() {
  48. t.Error("uuid string: ", uuid.String(), " != ", uuid2.String())
  49. }
  50. if r := cmp.Diff(uuid.Bytes(), uuid2.Bytes()); r != "" {
  51. t.Error(r)
  52. }
  53. }
  54. func TestRandom(t *testing.T) {
  55. uuid := New()
  56. uuid2 := New()
  57. if uuid.String() == uuid2.String() {
  58. t.Error("duplicated uuid")
  59. }
  60. }
  61. func TestEquals(t *testing.T) {
  62. var uuid *UUID
  63. var uuid2 *UUID
  64. if !uuid.Equals(uuid2) {
  65. t.Error("empty uuid should equal")
  66. }
  67. uuid3 := New()
  68. if uuid.Equals(&uuid3) {
  69. t.Error("nil uuid equals non-nil uuid")
  70. }
  71. }