MCPcopy
hub / github.com/tinylib/msgp / TestJSONNumberReplace

Function TestJSONNumberReplace

_generated/replace_test.go:297–363  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

295}
296
297func 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 {

Callers

nothing calls this directly

Calls 10

FlushMethod · 0.95
UnmarshalAsJSONFunction · 0.92
NewWriterFunction · 0.92
NewReaderFunction · 0.92
MarshalMsgMethod · 0.65
UnmarshalMsgMethod · 0.65
StringMethod · 0.65
EncodeMsgMethod · 0.65
DecodeMsgMethod · 0.65
ResetMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…