@@ -42,3 +42,77 @@ func TestGetTime(t *testing.T) {
42
42
})
43
43
}
44
44
}
45
+
46
+ func TestClockSequenceInitialization (t * testing.T ) {
47
+ // Backup and reset global state
48
+ timeMu .Lock ()
49
+ origSeq := clockSeq
50
+ clockSeq = 0 // Force initialization
51
+ timeMu .Unlock ()
52
+ defer func () {
53
+ timeMu .Lock ()
54
+ clockSeq = origSeq
55
+ timeMu .Unlock ()
56
+ }()
57
+
58
+ // First call initializes the sequence
59
+ seq := ClockSequence ()
60
+ if seq == 0 {
61
+ t .Error ("ClockSequence() should not return 0 after initialization" )
62
+ }
63
+
64
+ // Ensure the sequence is within 14-bit mask
65
+ if seq & 0xc000 != 0 {
66
+ t .Errorf ("ClockSequence() = %x, expected 14-bit value (mask 0x3fff)" , seq )
67
+ }
68
+
69
+ // Subsequent call should return the same sequence
70
+ seq2 := ClockSequence ()
71
+ if seq2 != seq {
72
+ t .Errorf ("Expected sequence %x, got %x" , seq , seq2 )
73
+ }
74
+ }
75
+
76
+ func TestTime (t * testing.T ) {
77
+ tests := []struct {
78
+ name string
79
+ uuid UUID
80
+ version int
81
+ want Time
82
+ }{
83
+ {
84
+ name : "Version 6" ,
85
+ uuid : UUID {0x12 , 0x34 , 0x56 , 0x78 , 0x9A , 0xBC , 0x6D , 0xEF , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 },
86
+ version : 6 ,
87
+ want : Time ((0x12345678 << 28 ) | (0x9ABC << 12 ) | 0xDEF ),
88
+ },
89
+ {
90
+ name : "Version 7" ,
91
+ uuid : UUID {0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x70 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 },
92
+ version : 7 ,
93
+ want : Time (g1582ns100 ),
94
+ },
95
+ {
96
+ name : "Default Version" ,
97
+ uuid : UUID {0x12 , 0x34 , 0x56 , 0x78 , 0x9A , 0xBC , 0x1D , 0xEF , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 },
98
+ version : 1 ,
99
+ want : Time (int64 (0x12345678 ) | (int64 (0x9ABC ) << 32 ) | (int64 (0xDEF ) << 48 )),
100
+ },
101
+ }
102
+
103
+ for _ , tt := range tests {
104
+ t .Run (tt .name , func (t * testing.T ) {
105
+ if got := tt .uuid .Time (); got != tt .want {
106
+ t .Errorf ("UUID.Time() = %v, want %v" , got , tt .want )
107
+ }
108
+ })
109
+ }
110
+ }
111
+
112
+ func TestClockSequence (t * testing.T ) {
113
+ uuid := UUID {0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x12 , 0x34 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 }
114
+ expected := 0x1234 & 0x3fff
115
+ if got := uuid .ClockSequence (); got != expected {
116
+ t .Errorf ("ClockSequence() = %x, want %x" , got , expected )
117
+ }
118
+ }
0 commit comments