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  }