@@ -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