github.com/ipld/go-ipld-prime@v0.21.0/codec/dagcbor/roundtripCidlink_test.go (about)

     1  package dagcbor
     2  
     3  import (
     4  	"bytes"
     5  	"io"
     6  	"testing"
     7  
     8  	qt "github.com/frankban/quicktest"
     9  
    10  	cid "github.com/ipfs/go-cid"
    11  	"github.com/ipld/go-ipld-prime/datamodel"
    12  	"github.com/ipld/go-ipld-prime/linking"
    13  	cidlink "github.com/ipld/go-ipld-prime/linking/cid"
    14  	"github.com/ipld/go-ipld-prime/node/basicnode"
    15  	nodetests "github.com/ipld/go-ipld-prime/node/tests"
    16  )
    17  
    18  func TestRoundtripCidlink(t *testing.T) {
    19  	lp := cidlink.LinkPrototype{Prefix: cid.Prefix{
    20  		Version:  1,
    21  		Codec:    0x71,
    22  		MhType:   0x13,
    23  		MhLength: 4,
    24  	}}
    25  	lsys := cidlink.DefaultLinkSystem()
    26  
    27  	buf := bytes.Buffer{}
    28  	lsys.StorageWriteOpener = func(lnkCtx linking.LinkContext) (io.Writer, linking.BlockWriteCommitter, error) {
    29  		return &buf, func(lnk datamodel.Link) error { return nil }, nil
    30  	}
    31  	lsys.StorageReadOpener = func(lnkCtx linking.LinkContext, lnk datamodel.Link) (io.Reader, error) {
    32  		return bytes.NewReader(buf.Bytes()), nil
    33  	}
    34  
    35  	lnk, err := lsys.Store(linking.LinkContext{}, lp, n)
    36  	qt.Assert(t, err, qt.IsNil)
    37  
    38  	n2, err := lsys.Load(linking.LinkContext{}, lnk, basicnode.Prototype.Any)
    39  	qt.Assert(t, err, qt.IsNil)
    40  	qt.Check(t, n2, nodetests.NodeContentEquals, nSorted)
    41  }