uuid_test.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. }
  39. func TestNewUUID(t *testing.T) {
  40. uuid := New()
  41. uuid2, err := ParseString(uuid.String())
  42. common.Must(err)
  43. if uuid.String() != uuid2.String() {
  44. t.Error("uuid string: ", uuid.String(), " != ", uuid2.String())
  45. }
  46. if r := cmp.Diff(uuid.Bytes(), uuid2.Bytes()); r != "" {
  47. t.Error(r)
  48. }
  49. }
  50. func TestRandom(t *testing.T) {
  51. uuid := New()
  52. uuid2 := New()
  53. if uuid.String() == uuid2.String() {
  54. t.Error("duplicated uuid")
  55. }
  56. }
  57. func TestEquals(t *testing.T) {
  58. var uuid *UUID
  59. var uuid2 *UUID
  60. if !uuid.Equals(uuid2) {
  61. t.Error("empty uuid should equal")
  62. }
  63. uuid3 := New()
  64. if uuid.Equals(&uuid3) {
  65. t.Error("nil uuid equals non-nil uuid")
  66. }
  67. }