9 "github.com/davecgh/go-spew/spew"
11 "github.com/vapor/encoding/blockchain"
12 "github.com/vapor/testutil"
15 func TestSerializationTxOutput(t *testing.T) {
16 assetID := testutil.MustDecodeAsset("81756fdab39a17163b0ce582ee4ee256fb4d1e156c692b997d608a42ecb38d47")
17 txOutput := NewTxOutput(assetID, 254354, []byte("TestSerializationTxOutput"))
19 wantHex := strings.Join([]string{
20 "01", // asset version
21 "3e", // serialization length
22 "81756fdab39a17163b0ce582ee4ee256fb4d1e156c692b997d608a42ecb38d47", // assetID
25 "19", // control program length
26 "5465737453657269616c697a6174696f6e54784f7574707574", // control program
27 "00", // witness length
30 // Test convert struct to hex
31 var buffer bytes.Buffer
32 if err := txOutput.writeTo(&buffer); err != nil {
36 gotHex := hex.EncodeToString(buffer.Bytes())
37 if gotHex != wantHex {
38 t.Errorf("serialization bytes = %s want %s", gotHex, wantHex)
41 // Test convert hex to struct
42 var gotTxOutput TxOutput
43 decodeHex, err := hex.DecodeString(wantHex)
48 if err := gotTxOutput.readFrom(blockchain.NewReader(decodeHex)); err != nil {
52 if !testutil.DeepEqual(*txOutput, gotTxOutput) {
53 t.Errorf("expected marshaled/unmarshaled txoutput to be:\n%sgot:\n%s", spew.Sdump(*txOutput), spew.Sdump(gotTxOutput))