+++ /dev/null
-package data_test
-
-import (
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- data "github.com/tendermint/go-wire/data"
-)
-
-// Key
-type Key interface{}
-
-// implementations
-type Cool struct{ data.Bytes }
-type Lame struct{ data.Bytes }
-
-var keyMapper data.Mapper
-
-// register both private key types with go-wire/data (and thus go-wire)
-func init() {
- keyMapper = data.NewMapper(KeyS{}).
- RegisterImplementation(Cool{}, "cool", 1).
- RegisterImplementation(Lame{}, "lame", 88)
-}
-
-// KeyS adds json serialization to Key
-type KeyS struct {
- Key
-}
-
-func (p KeyS) MarshalJSON() ([]byte, error) {
- return keyMapper.ToJSON(p.Key)
-}
-
-func (p *KeyS) UnmarshalJSON(data []byte) (err error) {
- parsed, err := keyMapper.FromJSON(data)
- if err == nil {
- p.Key = parsed.(Key)
- }
- return
-}
-
-func TestSimpleText(t *testing.T) {
- assert, require := assert.New(t), require.New(t)
-
- data.Encoder = data.HexEncoder
- cases := []struct {
- key Key
- expected string
- }{
- {key: Cool{data.Bytes{0x42, 0x69}}, expected: "cool:4269"},
- {key: Lame{data.Bytes{0x70, 0xA3, 0x1e}}, expected: "lame:70A31E"},
- }
-
- for _, tc := range cases {
- wrap := KeyS{tc.key}
- // check json
- _, err := data.ToJSON(wrap)
- require.Nil(err, "%+v", err)
- // check text
- text, err := data.ToText(wrap)
- require.Nil(err, "%+v", err)
- assert.Equal(tc.expected, text)
- }
-}
-
-func TestBytesTest(t *testing.T) {
- assert, require := assert.New(t), require.New(t)
-
- data.Encoder = data.HexEncoder
- cases := []struct {
- bytes data.Bytes
- expected string
- }{
- {data.Bytes{0x34, 0x54}, "3454"},
- {data.Bytes{}, ""},
- {data.Bytes{0xde, 0xad, 0xbe, 0x66}, "DEADBE66"},
- }
-
- for _, tc := range cases {
- text, err := data.ToText(tc.bytes)
- require.Nil(err, "%+v", err)
- assert.Equal(tc.expected, text)
- }
-}