Skip to content

Commit eeb2ad8

Browse files
committed
chore: add more test for TypedValue
1 parent 71290b0 commit eeb2ad8

File tree

1 file changed

+106
-0
lines changed

1 file changed

+106
-0
lines changed

common/atomic/value_test.go

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,20 +44,126 @@ func TestTypedValue(t *testing.T) {
4444
}
4545
}
4646

47+
{
48+
e1, e2, e3 := io.EOF, &os.PathError{}, &os.PathError{}
49+
var v TypedValue[error]
50+
if v.CompareAndSwap(e1, e2) != false {
51+
t.Fatalf("CompareAndSwap = true, want false")
52+
}
53+
if value := v.Load(); value != nil {
54+
t.Fatalf("Load = (%v), want (%v)", value, nil)
55+
}
56+
if v.CompareAndSwap(nil, e1) != true {
57+
t.Fatalf("CompareAndSwap = false, want true")
58+
}
59+
if value := v.Load(); value != e1 {
60+
t.Fatalf("Load = (%v), want (%v)", value, e1)
61+
}
62+
if v.CompareAndSwap(e2, e3) != false {
63+
t.Fatalf("CompareAndSwap = true, want false")
64+
}
65+
if value := v.Load(); value != e1 {
66+
t.Fatalf("Load = (%v), want (%v)", value, e1)
67+
}
68+
if v.CompareAndSwap(e1, e2) != true {
69+
t.Fatalf("CompareAndSwap = false, want true")
70+
}
71+
if value := v.Load(); value != e2 {
72+
t.Fatalf("Load = (%v), want (%v)", value, e2)
73+
}
74+
if v.CompareAndSwap(e3, e2) != false {
75+
t.Fatalf("CompareAndSwap = true, want false")
76+
}
77+
if value := v.Load(); value != e2 {
78+
t.Fatalf("Load = (%v), want (%v)", value, e2)
79+
}
80+
if v.CompareAndSwap(nil, e3) != false {
81+
t.Fatalf("CompareAndSwap = true, want false")
82+
}
83+
if value := v.Load(); value != e2 {
84+
t.Fatalf("Load = (%v), want (%v)", value, e2)
85+
}
86+
}
87+
4788
{
4889
c1, c2, c3 := make(chan struct{}), make(chan struct{}), make(chan struct{})
4990
var v TypedValue[chan struct{}]
5091
if v.CompareAndSwap(c1, c2) != false {
5192
t.Fatalf("CompareAndSwap = true, want false")
5293
}
94+
if value := v.Load(); value != nil {
95+
t.Fatalf("Load = (%v), want (%v)", value, nil)
96+
}
5397
if v.CompareAndSwap(nil, c1) != true {
5498
t.Fatalf("CompareAndSwap = false, want true")
5599
}
100+
if value := v.Load(); value != c1 {
101+
t.Fatalf("Load = (%v), want (%v)", value, c1)
102+
}
56103
if v.CompareAndSwap(c2, c3) != false {
57104
t.Fatalf("CompareAndSwap = true, want false")
58105
}
106+
if value := v.Load(); value != c1 {
107+
t.Fatalf("Load = (%v), want (%v)", value, c1)
108+
}
59109
if v.CompareAndSwap(c1, c2) != true {
60110
t.Fatalf("CompareAndSwap = false, want true")
61111
}
112+
if value := v.Load(); value != c2 {
113+
t.Fatalf("Load = (%v), want (%v)", value, c2)
114+
}
115+
if v.CompareAndSwap(c3, c2) != false {
116+
t.Fatalf("CompareAndSwap = true, want false")
117+
}
118+
if value := v.Load(); value != c2 {
119+
t.Fatalf("Load = (%v), want (%v)", value, c2)
120+
}
121+
if v.CompareAndSwap(nil, c3) != false {
122+
t.Fatalf("CompareAndSwap = true, want false")
123+
}
124+
if value := v.Load(); value != c2 {
125+
t.Fatalf("Load = (%v), want (%v)", value, c2)
126+
}
127+
}
128+
129+
{
130+
c1, c2, c3 := &io.LimitedReader{}, &io.SectionReader{}, &io.SectionReader{}
131+
var v TypedValue[io.Reader]
132+
if v.CompareAndSwap(c1, c2) != false {
133+
t.Fatalf("CompareAndSwap = true, want false")
134+
}
135+
if value := v.Load(); value != nil {
136+
t.Fatalf("Load = (%v), want (%v)", value, nil)
137+
}
138+
if v.CompareAndSwap(nil, c1) != true {
139+
t.Fatalf("CompareAndSwap = false, want true")
140+
}
141+
if value := v.Load(); value != c1 {
142+
t.Fatalf("Load = (%v), want (%v)", value, c1)
143+
}
144+
if v.CompareAndSwap(c2, c3) != false {
145+
t.Fatalf("CompareAndSwap = true, want false")
146+
}
147+
if value := v.Load(); value != c1 {
148+
t.Fatalf("Load = (%v), want (%v)", value, c1)
149+
}
150+
if v.CompareAndSwap(c1, c2) != true {
151+
t.Fatalf("CompareAndSwap = false, want true")
152+
}
153+
if value := v.Load(); value != c2 {
154+
t.Fatalf("Load = (%v), want (%v)", value, c2)
155+
}
156+
if v.CompareAndSwap(c3, c2) != false {
157+
t.Fatalf("CompareAndSwap = true, want false")
158+
}
159+
if value := v.Load(); value != c2 {
160+
t.Fatalf("Load = (%v), want (%v)", value, c2)
161+
}
162+
if v.CompareAndSwap(nil, c3) != false {
163+
t.Fatalf("CompareAndSwap = true, want false")
164+
}
165+
if value := v.Load(); value != c2 {
166+
t.Fatalf("Load = (%v), want (%v)", value, c2)
167+
}
62168
}
63169
}

0 commit comments

Comments
 (0)