github.com/ipld/go-ipld-prime@v0.21.0/fluent/fluentBuilder_test.go (about)

     1  package fluent_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	qt "github.com/frankban/quicktest"
     7  
     8  	"github.com/ipld/go-ipld-prime/datamodel"
     9  	"github.com/ipld/go-ipld-prime/fluent"
    10  	"github.com/ipld/go-ipld-prime/must"
    11  	"github.com/ipld/go-ipld-prime/node/basicnode"
    12  )
    13  
    14  func TestBuild(t *testing.T) {
    15  	t.Run("scalar build should work", func(t *testing.T) {
    16  		n := fluent.MustBuild(basicnode.Prototype__String{}, func(fna fluent.NodeAssembler) {
    17  			fna.AssignString("fine")
    18  		})
    19  		qt.Check(t, n.Kind(), qt.Equals, datamodel.Kind_String)
    20  		v2, err := n.AsString()
    21  		qt.Check(t, err, qt.IsNil)
    22  		qt.Check(t, v2, qt.Equals, "fine")
    23  	})
    24  	t.Run("map build should work", func(t *testing.T) {
    25  		n := fluent.MustBuild(basicnode.Prototype.Map, func(fna fluent.NodeAssembler) {
    26  			fna.CreateMap(3, func(fma fluent.MapAssembler) {
    27  				fma.AssembleEntry("k1").AssignString("fine")
    28  				fma.AssembleEntry("k2").AssignString("super")
    29  				fma.AssembleEntry("k3").CreateMap(3, func(fma fluent.MapAssembler) {
    30  					fma.AssembleEntry("k31").AssignString("thanks")
    31  					fma.AssembleEntry("k32").AssignString("for")
    32  					fma.AssembleEntry("k33").AssignString("asking")
    33  				})
    34  			})
    35  		})
    36  		qt.Check(t, n.Kind(), qt.Equals, datamodel.Kind_Map)
    37  		qt.Check(t, n.Length(), qt.Equals, int64(3))
    38  		qt.Check(t, must.String(must.Node(n.LookupByString("k1"))), qt.Equals, "fine")
    39  		qt.Check(t, must.String(must.Node(n.LookupByString("k2"))), qt.Equals, "super")
    40  		n = must.Node(n.LookupByString("k3"))
    41  		qt.Check(t, n.Length(), qt.Equals, int64(3))
    42  		qt.Check(t, must.String(must.Node(n.LookupByString("k31"))), qt.Equals, "thanks")
    43  		qt.Check(t, must.String(must.Node(n.LookupByString("k32"))), qt.Equals, "for")
    44  		qt.Check(t, must.String(must.Node(n.LookupByString("k33"))), qt.Equals, "asking")
    45  	})
    46  	t.Run("list build should work", func(t *testing.T) {
    47  		n := fluent.MustBuild(basicnode.Prototype.List, func(fna fluent.NodeAssembler) {
    48  			fna.CreateList(1, func(fla fluent.ListAssembler) {
    49  				fla.AssembleValue().CreateList(1, func(fla fluent.ListAssembler) {
    50  					fla.AssembleValue().CreateList(1, func(fla fluent.ListAssembler) {
    51  						fla.AssembleValue().CreateList(1, func(fla fluent.ListAssembler) {
    52  							fla.AssembleValue().AssignInt(2)
    53  						})
    54  					})
    55  				})
    56  			})
    57  		})
    58  		qt.Check(t, n.Kind(), qt.Equals, datamodel.Kind_List)
    59  		qt.Check(t, n.Length(), qt.Equals, int64(1))
    60  		n = must.Node(n.LookupByIndex(0))
    61  		qt.Check(t, n.Kind(), qt.Equals, datamodel.Kind_List)
    62  		qt.Check(t, n.Length(), qt.Equals, int64(1))
    63  		n = must.Node(n.LookupByIndex(0))
    64  		qt.Check(t, n.Kind(), qt.Equals, datamodel.Kind_List)
    65  		qt.Check(t, n.Length(), qt.Equals, int64(1))
    66  		n = must.Node(n.LookupByIndex(0))
    67  		qt.Check(t, n.Kind(), qt.Equals, datamodel.Kind_List)
    68  		qt.Check(t, n.Length(), qt.Equals, int64(1))
    69  		n = must.Node(n.LookupByIndex(0))
    70  		qt.Check(t, n.Kind(), qt.Equals, datamodel.Kind_Int)
    71  		qt.Check(t, must.Int(n), qt.Equals, int64(2))
    72  	})
    73  }