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 }