Files
dolt/enc/codec_test.go
T
Erik Arvidsson 2dec53453e NomDL: Add new serialization format
The new serialization format use "t " as in typed. The rest of the
message is a JSON array describing the typed data. The type is
described by types.TypeRef

Fixes #384
Issues #281, #304
2015-10-06 15:56:10 -07:00

63 lines
1.5 KiB
Go

package enc
import (
"bytes"
"io"
"testing"
"github.com/attic-labs/noms/Godeps/_workspace/src/github.com/stretchr/testify/assert"
"github.com/attic-labs/noms/d"
)
func TestEncode(t *testing.T) {
assert := assert.New(t)
// Encoding details for each codec are tested elsewhere.
// Here we just want to make sure codecs are selected correctly.
dst := &bytes.Buffer{}
Encode(dst, bytes.NewReader([]byte{0x00, 0x01, 0x02}))
assert.Equal([]byte{'b', ' ', 0x00, 0x01, 0x02}, dst.Bytes())
dst.Reset()
Encode(dst, "foo")
assert.Equal("j \"foo\"\n", string(dst.Bytes()))
dst.Reset()
Encode(dst, typedValueWrapper{[]interface{}{42}})
assert.Equal("t [42]\n", string(dst.Bytes()))
}
func TestInvalidDecode(t *testing.T) {
assert := assert.New(t)
d.IsUsageError(assert, func() {
Decode(bytes.NewReader([]byte{}))
})
d.IsUsageError(assert, func() {
Decode(bytes.NewReader([]byte{0xff}))
})
}
func TestSelectJSONDecoder(t *testing.T) {
assert := assert.New(t)
v := Decode(bytes.NewBufferString(`j "foo"`))
assert.EqualValues("foo", v)
}
func TestSelectBlobDecoder(t *testing.T) {
assert := assert.New(t)
decoded := Decode(bytes.NewReader([]byte{'b', ' ', 0x2B}))
out := &bytes.Buffer{}
_, err := io.Copy(out, decoded.(io.Reader))
assert.NoError(err)
assert.EqualValues([]byte{0x2B}, out.Bytes())
}
func TestSelectTypedDecoder(t *testing.T) {
v := Decode(bytes.NewBufferString(`t [42]`))
assert.Equal(t, typedValueWrapper{[]interface{}{float64(42)}}, v)
}