github.com/ipld/go-ipld-prime@v0.21.0/codec/dagjson/nongreedy_test.go (about) 1 package dagjson 2 3 import ( 4 "bytes" 5 "testing" 6 7 "github.com/ipld/go-ipld-prime/datamodel" 8 "github.com/ipld/go-ipld-prime/node/basicnode" 9 ) 10 11 func TestNonGreedy(t *testing.T) { 12 buf := bytes.NewBufferString(`{"a": 1}{"b": 2}`) 13 opts := DecodeOptions{ 14 ParseLinks: false, 15 ParseBytes: false, 16 DontParseBeyondEnd: true, 17 } 18 nb1 := basicnode.Prototype.Map.NewBuilder() 19 err := opts.Decode(nb1, buf) 20 if err != nil { 21 t.Fatalf("first decode (%v)", err) 22 } 23 n1 := nb1.Build() 24 if n1.Kind() != datamodel.Kind_Map { 25 t.Errorf("expecting a map") 26 } 27 if _, err := n1.LookupByString("a"); err != nil { 28 t.Fatalf("missing fist key") 29 } 30 nb2 := basicnode.Prototype.Map.NewBuilder() 31 err = opts.Decode(nb2, buf) 32 if err != nil { 33 t.Fatalf("second decode (%v)", err) 34 } 35 n2 := nb2.Build() 36 if n2.Kind() != datamodel.Kind_Map { 37 t.Errorf("expecting a map") 38 } 39 if _, err := n2.LookupByString("b"); err != nil { 40 t.Fatalf("missing second key") 41 } 42 }