@@ -5,7 +5,7 @@ package reflect_test
5
5
6
6
import (
7
7
"math"
8
- "reflect"
8
+ . "reflect"
9
9
"testing"
10
10
)
11
11
@@ -46,16 +46,16 @@ func TestOffsetLock(t *testing.T) {
46
46
}
47
47
48
48
func TestSelectOnInvalid (t * testing.T ) {
49
- reflect . Select ([]reflect. SelectCase {
49
+ Select ([]SelectCase {
50
50
{
51
- Dir : reflect . SelectRecv ,
52
- Chan : reflect. Value {},
51
+ Dir : SelectRecv ,
52
+ Chan : Value {},
53
53
}, {
54
- Dir : reflect . SelectSend ,
55
- Chan : reflect. Value {},
56
- Send : reflect . ValueOf (1 ),
54
+ Dir : SelectSend ,
55
+ Chan : Value {},
56
+ Send : ValueOf (1 ),
57
57
}, {
58
- Dir : reflect . SelectDefault ,
58
+ Dir : SelectDefault ,
59
59
},
60
60
})
61
61
}
@@ -144,7 +144,7 @@ var deepEqualTests = []DeepEqualTest{
144
144
145
145
// TODO: Fix this. See https://github.com/gopherjs/gopherjs/issues/763.
146
146
func TestIssue22073 (t * testing.T ) {
147
- m := reflect . ValueOf (NonExportedFirst (0 )).Method (0 )
147
+ m := ValueOf (NonExportedFirst (0 )).Method (0 )
148
148
149
149
if got := m .Type ().NumOut (); got != 0 {
150
150
t .Errorf ("NumOut: got %v, want 0" , got )
@@ -177,9 +177,40 @@ func TestConvertNaNs(t *testing.T) {
177
177
const qnan uint32 = 0x7fc00001 // Originally: 0x7f800001.
178
178
type myFloat32 float32
179
179
x := V (myFloat32 (math .Float32frombits (qnan )))
180
- y := x .Convert (reflect . TypeOf (float32 (0 )))
180
+ y := x .Convert (TypeOf (float32 (0 )))
181
181
z := y .Interface ().(float32 )
182
182
if got := math .Float32bits (z ); got != qnan {
183
183
t .Errorf ("quiet nan conversion got %x, want %x" , got , qnan )
184
184
}
185
185
}
186
+
187
+ func TestMapIterSet (t * testing.T ) {
188
+ m := make (map [string ]any , len (valueTests ))
189
+ for _ , tt := range valueTests {
190
+ m [tt .s ] = tt .i
191
+ }
192
+ v := ValueOf (m )
193
+
194
+ k := New (v .Type ().Key ()).Elem ()
195
+ e := New (v .Type ().Elem ()).Elem ()
196
+
197
+ iter := v .MapRange ()
198
+ for iter .Next () {
199
+ k .SetIterKey (iter )
200
+ e .SetIterValue (iter )
201
+ want := m [k .String ()]
202
+ got := e .Interface ()
203
+ if got != want {
204
+ t .Errorf ("%q: want (%T) %v, got (%T) %v" , k .String (), want , want , got , got )
205
+ }
206
+ if setkey , key := valueToString (k ), valueToString (iter .Key ()); setkey != key {
207
+ t .Errorf ("MapIter.Key() = %q, MapIter.SetKey() = %q" , key , setkey )
208
+ }
209
+ if setval , val := valueToString (e ), valueToString (iter .Value ()); setval != val {
210
+ t .Errorf ("MapIter.Value() = %q, MapIter.SetValue() = %q" , val , setval )
211
+ }
212
+ }
213
+
214
+ // Upstream test also tests allocations made by the iterator. GopherJS doesn't
215
+ // support runtime.ReadMemStats(), so we leave that part out.
216
+ }
0 commit comments