Commit 8a7497fe authored by hannahhoward's avatar hannahhoward Committed by Eric Myhre

fix(codec/raw): update for linksystem

parent 705307f1
......@@ -12,15 +12,20 @@ import (
"io/ioutil"
ipld "github.com/ipld/go-ipld-prime"
cidlink "github.com/ipld/go-ipld-prime/linking/cid"
"github.com/ipld/go-ipld-prime/multicodec"
)
// TODO(mvdan): make go-ipld-prime use go-multicodec soon
const rawMulticodec = 0x55
var (
_ ipld.Decoder = Decode
_ ipld.Encoder = Encode
)
func init() {
cidlink.RegisterMulticodecDecoder(rawMulticodec, Decode)
cidlink.RegisterMulticodecEncoder(rawMulticodec, Encode)
multicodec.RegisterEncoder(rawMulticodec, Encode)
multicodec.RegisterDecoder(rawMulticodec, Decode)
}
// Decode implements decoding of a node with the raw codec.
......
......@@ -2,7 +2,6 @@ package raw
import (
"bytes"
"context"
"fmt"
"io"
"testing"
......@@ -48,30 +47,30 @@ func TestRoundtrip(t *testing.T) {
func TestRoundtripCidlink(t *testing.T) {
t.Parallel()
lb := cidlink.LinkBuilder{Prefix: cid.Prefix{
lp := cidlink.LinkPrototype{Prefix: cid.Prefix{
Version: 1,
Codec: rawMulticodec,
MhType: 0x17,
MhType: 0x13,
MhLength: 4,
}}
node := basicnode.NewBytes([]byte("hello there"))
lsys := cidlink.DefaultLinkSystem()
buf := bytes.Buffer{}
lnk, err := lb.Build(context.Background(), ipld.LinkContext{}, node,
func(ipld.LinkContext) (io.Writer, ipld.StoreCommitter, error) {
return &buf, func(lnk ipld.Link) error { return nil }, nil
},
)
lsys.StorageWriteOpener = func(lnkCtx ipld.LinkContext) (io.Writer, ipld.BlockWriteCommitter, error) {
return &buf, func(lnk ipld.Link) error { return nil }, nil
}
lsys.StorageReadOpener = func(lnkCtx ipld.LinkContext, lnk ipld.Link) (io.Reader, error) {
return bytes.NewReader(buf.Bytes()), nil
}
lnk, err := lsys.Store(ipld.LinkContext{}, lp, node)
qt.Assert(t, err, qt.IsNil)
nb := basicnode.Prototype__Any{}.NewBuilder()
err = lnk.Load(context.Background(), ipld.LinkContext{}, nb,
func(lnk ipld.Link, _ ipld.LinkContext) (io.Reader, error) {
return bytes.NewReader(buf.Bytes()), nil
},
)
newNode, err := lsys.Load(ipld.LinkContext{}, lnk, basicnode.Prototype__Any{})
qt.Assert(t, err, qt.IsNil)
qt.Assert(t, nb.Build(), qt.DeepEquals, node)
qt.Assert(t, newNode, qt.DeepEquals, node)
}
// mustOnlyUseRead only exposes Read, hiding Bytes.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment