generator_test.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. // Copyright (C) 2013-2018 by Maxim Bublis <b@codemonkey.ru>
  2. //
  3. // Permission is hereby granted, free of charge, to any person obtaining
  4. // a copy of this software and associated documentation files (the
  5. // "Software"), to deal in the Software without restriction, including
  6. // without limitation the rights to use, copy, modify, merge, publish,
  7. // distribute, sublicense, and/or sell copies of the Software, and to
  8. // permit persons to whom the Software is furnished to do so, subject to
  9. // the following conditions:
  10. //
  11. // The above copyright notice and this permission notice shall be
  12. // included in all copies or substantial portions of the Software.
  13. //
  14. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  15. // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  16. // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  17. // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  18. // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  19. // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  20. // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  21. package uuid
  22. import (
  23. . "gopkg.in/check.v1"
  24. )
  25. type genTestSuite struct{}
  26. var _ = Suite(&genTestSuite{})
  27. func (s *genTestSuite) TestNewV1(c *C) {
  28. u := NewV1()
  29. c.Assert(u.Version(), Equals, V1)
  30. c.Assert(u.Variant(), Equals, VariantRFC4122)
  31. u1 := NewV1()
  32. u2 := NewV1()
  33. c.Assert(u1, Not(Equals), u2)
  34. oldFunc := epochFunc
  35. epochFunc = func() uint64 { return 0 }
  36. u3 := NewV1()
  37. u4 := NewV1()
  38. c.Assert(u3, Not(Equals), u4)
  39. epochFunc = oldFunc
  40. }
  41. func (s *genTestSuite) BenchmarkNewV1(c *C) {
  42. for i := 0; i < c.N; i++ {
  43. NewV1()
  44. }
  45. }
  46. func (s *genTestSuite) TestNewV2(c *C) {
  47. u1 := NewV2(DomainPerson)
  48. c.Assert(u1.Version(), Equals, V2)
  49. c.Assert(u1.Variant(), Equals, VariantRFC4122)
  50. u2 := NewV2(DomainGroup)
  51. c.Assert(u2.Version(), Equals, V2)
  52. c.Assert(u2.Variant(), Equals, VariantRFC4122)
  53. }
  54. func (s *genTestSuite) BenchmarkNewV2(c *C) {
  55. for i := 0; i < c.N; i++ {
  56. NewV2(DomainPerson)
  57. }
  58. }
  59. func (s *genTestSuite) TestNewV3(c *C) {
  60. u := NewV3(NamespaceDNS, "www.example.com")
  61. c.Assert(u.Version(), Equals, V3)
  62. c.Assert(u.Variant(), Equals, VariantRFC4122)
  63. c.Assert(u.String(), Equals, "5df41881-3aed-3515-88a7-2f4a814cf09e")
  64. u = NewV3(NamespaceDNS, "python.org")
  65. c.Assert(u.String(), Equals, "6fa459ea-ee8a-3ca4-894e-db77e160355e")
  66. u1 := NewV3(NamespaceDNS, "golang.org")
  67. u2 := NewV3(NamespaceDNS, "golang.org")
  68. c.Assert(u1, Equals, u2)
  69. u3 := NewV3(NamespaceDNS, "example.com")
  70. c.Assert(u1, Not(Equals), u3)
  71. u4 := NewV3(NamespaceURL, "golang.org")
  72. c.Assert(u1, Not(Equals), u4)
  73. }
  74. func (s *genTestSuite) BenchmarkNewV3(c *C) {
  75. for i := 0; i < c.N; i++ {
  76. NewV3(NamespaceDNS, "www.example.com")
  77. }
  78. }
  79. func (s *genTestSuite) TestNewV4(c *C) {
  80. u := NewV4()
  81. c.Assert(u.Version(), Equals, V4)
  82. c.Assert(u.Variant(), Equals, VariantRFC4122)
  83. }
  84. func (s *genTestSuite) BenchmarkNewV4(c *C) {
  85. for i := 0; i < c.N; i++ {
  86. NewV4()
  87. }
  88. }
  89. func (s *genTestSuite) TestNewV5(c *C) {
  90. u := NewV5(NamespaceDNS, "www.example.com")
  91. c.Assert(u.Version(), Equals, V5)
  92. c.Assert(u.Variant(), Equals, VariantRFC4122)
  93. u = NewV5(NamespaceDNS, "python.org")
  94. c.Assert(u.String(), Equals, "886313e1-3b8a-5372-9b90-0c9aee199e5d")
  95. u1 := NewV5(NamespaceDNS, "golang.org")
  96. u2 := NewV5(NamespaceDNS, "golang.org")
  97. c.Assert(u1, Equals, u2)
  98. u3 := NewV5(NamespaceDNS, "example.com")
  99. c.Assert(u1, Not(Equals), u3)
  100. u4 := NewV5(NamespaceURL, "golang.org")
  101. c.Assert(u1, Not(Equals), u4)
  102. }
  103. func (s *genTestSuite) BenchmarkNewV5(c *C) {
  104. for i := 0; i < c.N; i++ {
  105. NewV5(NamespaceDNS, "www.example.com")
  106. }
  107. }