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  }