(t *testing.T)
| 295 | } |
| 296 | |
| 297 | func TestJSONNumberReplace(t *testing.T) { |
| 298 | test := NumberJSONSampleReplace{ |
| 299 | Single: "-42", |
| 300 | Array: []json.Number{"0", "-0", "1", "-1", "0.1", "-0.1", "1234", "-1234", "12.34", "-12.34", "12E0", "12E1", "12e34", "12E-0", "12e+1", "12e-34", "-12E0", "-12E1", "-12e34", "-12E-0", "-12e+1", "-12e-34", "1.2E0", "1.2E1", "1.2e34", "1.2E-0", "1.2e+1", "1.2e-34", "-1.2E0", "-1.2E1", "-1.2e34", "-1.2E-0", "-1.2e+1", "-1.2e-34", "0E0", "0E1", "0e34", "0E-0", "0e+1", "0e-34", "-0E0", "-0E1", "-0e34", "-0E-0", "-0e+1", "-0e-34"}, |
| 301 | Map: map[string]json.Number{ |
| 302 | "a": json.Number("50"), |
| 303 | }, |
| 304 | } |
| 305 | |
| 306 | encoded, err := test.MarshalMsg(nil) |
| 307 | if err != nil { |
| 308 | t.Errorf("%v", err) |
| 309 | } |
| 310 | var v NumberJSONSampleReplace |
| 311 | _, err = v.UnmarshalMsg(encoded) |
| 312 | if err != nil { |
| 313 | t.Errorf("%v", err) |
| 314 | } |
| 315 | // Symmetric since we store strings. |
| 316 | if !reflect.DeepEqual(v, test) { |
| 317 | t.Fatalf("want %v, got %v", test, v) |
| 318 | } |
| 319 | |
| 320 | var jsBuf bytes.Buffer |
| 321 | remain, err := msgp.UnmarshalAsJSON(&jsBuf, encoded) |
| 322 | if err != nil { |
| 323 | t.Errorf("%v", err) |
| 324 | } |
| 325 | if len(remain) != 0 { |
| 326 | t.Errorf("remain should be empty") |
| 327 | } |
| 328 | // Retains number formatting. Map order is random, though. |
| 329 | wantjs := `{"Single":"-42","Array":["0","-0","1","-1","0.1","-0.1","1234","-1234","12.34","-12.34","12E0","12E1","12e34","12E-0","12e+1","12e-34","-12E0","-12E1","-12e34","-12E-0","-12e+1","-12e-34","1.2E0","1.2E1","1.2e34","1.2E-0","1.2e+1","1.2e-34","-1.2E0","-1.2E1","-1.2e34","-1.2E-0","-1.2e+1","-1.2e-34","0E0","0E1","0e34","0E-0","0e+1","0e-34","-0E0","-0E1","-0e34","-0E-0","-0e+1","-0e-34"],"Map":{"a":"50"}}` |
| 330 | if jsBuf.String() != wantjs { |
| 331 | t.Errorf("jsBuf.String() = \n%s, want \n%s", jsBuf.String(), wantjs) |
| 332 | } |
| 333 | // Test encoding |
| 334 | var buf bytes.Buffer |
| 335 | en := msgp.NewWriter(&buf) |
| 336 | err = test.EncodeMsg(en) |
| 337 | if err != nil { |
| 338 | t.Errorf("%v", err) |
| 339 | } |
| 340 | en.Flush() |
| 341 | encoded = buf.Bytes() |
| 342 | |
| 343 | dc := msgp.NewReader(&buf) |
| 344 | err = v.DecodeMsg(dc) |
| 345 | if err != nil { |
| 346 | t.Errorf("%v", err) |
| 347 | } |
| 348 | if !reflect.DeepEqual(v, test) { |
| 349 | t.Fatalf("want %v, got %v", test, v) |
| 350 | } |
| 351 | |
| 352 | jsBuf.Reset() |
| 353 | remain, err = msgp.UnmarshalAsJSON(&jsBuf, encoded) |
| 354 | if err != nil { |
nothing calls this directly
no test coverage detected
searching dependent graphs…