Skip to content

Commit 5c01e11

Browse files
committed
update test case
1 parent de8a1a9 commit 5c01e11

File tree

1 file changed

+29
-29
lines changed

1 file changed

+29
-29
lines changed

src/encoding/gob/encoder_test.go

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1157,48 +1157,48 @@ func TestDecodeErrorMultipleTypes(t *testing.T) {
11571157

11581158
// Issue 24075
11591159
func TestMarshalFloatMap(t *testing.T) {
1160-
var m = map[float64]string{
1161-
math.NaN(): "a",
1162-
math.NaN(): "b",
1163-
math.NaN(): "c",
1160+
nan1 := math.NaN()
1161+
nan2 := math.Float64frombits(math.Float64bits(nan1) ^ 1) // A different NaN in the same class.
1162+
1163+
in := map[float64]string{
1164+
nan1: "a",
1165+
nan1: "b",
1166+
nan2: "c",
11641167
}
11651168

11661169
var b bytes.Buffer
11671170
enc := NewEncoder(&b)
1168-
err := enc.Encode(m)
1169-
if err != nil {
1170-
t.Errorf("Encode() error: %v", err)
1171+
if err := enc.Encode(in); err != nil {
1172+
t.Errorf("Encode : %v", err)
11711173
}
11721174

1173-
var result = map[float64]string{}
1175+
out := map[float64]string{}
11741176
dec := NewDecoder(&b)
1175-
err = dec.Decode(&result)
1176-
1177-
if err != nil {
1178-
t.Fatalf("decoder fail: %v", err)
1177+
if err := dec.Decode(&out); err != nil {
1178+
t.Fatalf("Decode : %v", err)
11791179
}
11801180

1181-
// NaN cannot compare
1182-
1183-
readMap := func(m map[float64]string) ([]uint64, []string) {
1184-
var (
1185-
mk = []uint64{}
1186-
mv = []string{}
1187-
)
1181+
type mapEntry struct {
1182+
keyBits uint64
1183+
value string
1184+
}
1185+
readMap := func(m map[float64]string) (entries []mapEntry) {
11881186
for k, v := range m {
1189-
mk = append(mk, math.Float64bits(k)) // conversion NaN to a uint64
1190-
mv = append(mv, v)
1187+
entries = append(entries, mapEntry{math.Float64bits(k), v})
11911188
}
1192-
sort.Slice(mk, func(i, j int) bool {
1193-
return mk[i] < mk[j]
1189+
sort.Slice(entries, func(i, j int) bool {
1190+
ei, ej := entries[i], entries[j]
1191+
if ei.keyBits != ej.keyBits {
1192+
return ei.keyBits < ej.keyBits
1193+
}
1194+
return ei.value < ej.value
11941195
})
1195-
sort.Strings(mv)
1196-
return mk, mv
1196+
return entries
11971197
}
1198-
mk, mv := readMap(m)
1199-
resultk, resultv := readMap(result)
12001198

1201-
if !reflect.DeepEqual(mk, resultk) || !reflect.DeepEqual(mv, resultv) {
1202-
t.Fatalf("decoder fail: \n %v %v \n %v %v", mk, mv, resultk, resultv)
1199+
got := readMap(out)
1200+
want := readMap(in)
1201+
if !reflect.DeepEqual(got, want) {
1202+
t.Fatalf("\nEncode: %v\nDecode: %v", want, got)
12031203
}
12041204
}

0 commit comments

Comments
 (0)