gitee.com/quant1x/gox@v1.7.6/fastjson/update_test.go (about) 1 package fastjson 2 3 import ( 4 "testing" 5 ) 6 7 func TestObjectDelSet(t *testing.T) { 8 var p Parser 9 v, err := p.Parse(`{"fo\no": "bar", "x": [1,2,3]}`) 10 if err != nil { 11 t.Fatalf("unexpected error during parse: %s", err) 12 } 13 o, err := v.Object() 14 if err != nil { 15 t.Fatalf("cannot obtain object: %s", err) 16 } 17 18 // Delete x 19 o.Del("x") 20 if o.Len() != 1 { 21 t.Fatalf("unexpected number of items left; got %d; want %d", o.Len(), 1) 22 } 23 24 // Try deleting non-existing value 25 o.Del("xxx") 26 if o.Len() != 1 { 27 t.Fatalf("unexpected number of items left; got %d; want %d", o.Len(), 1) 28 } 29 30 // Set new value 31 vNew := MustParse(`{"foo":[1,2,3]}`) 32 o.Set("new_key", vNew) 33 34 // Delete item with escaped key 35 o.Del("fo\no") 36 if o.Len() != 1 { 37 t.Fatalf("unexpected number of items left; got %d; want %d", o.Len(), 1) 38 } 39 40 str := o.String() 41 strExpected := `{"new_key":{"foo":[1,2,3]}}` 42 if str != strExpected { 43 t.Fatalf("unexpected string representation for o: got %q; want %q", str, strExpected) 44 } 45 } 46 47 func TestValueDelSet(t *testing.T) { 48 var p Parser 49 v, err := p.Parse(`{"xx": 123, "x": [1,2,3]}`) 50 if err != nil { 51 t.Fatalf("unexpected error during parse: %s", err) 52 } 53 54 // Delete xx 55 v.Del("xx") 56 n := v.GetObject().Len() 57 if n != 1 { 58 t.Fatalf("unexpected number of items left; got %d; want %d", n, 1) 59 } 60 61 // Try deleting non-existing value in the array 62 va := v.Get("x") 63 va.Del("foobar") 64 65 // Delete middle element in the array 66 va.Del("1") 67 a := v.GetArray("x") 68 if len(a) != 2 { 69 t.Fatalf("unexpected number of items left in the array; got %d; want %d", len(a), 2) 70 } 71 72 // Update the first element in the array 73 vNew := MustParse(`"foobar"`) 74 va.Set("0", vNew) 75 76 // Add third element to the array 77 vNew = MustParse(`[3]`) 78 va.Set("3", vNew) 79 80 str := v.String() 81 strExpected := `{"x":["foobar",3,null,[3]]}` 82 if str != strExpected { 83 t.Fatalf("unexpected string representation for o: got %q; want %q", str, strExpected) 84 } 85 }