OSDN Git Service

new repo
[bytom/vapor.git] / protocol / bc / types / txoutput_test.go
1 package types
2
3 import (
4         "bytes"
5         "encoding/hex"
6         "strings"
7         "testing"
8
9         "github.com/davecgh/go-spew/spew"
10
11         "github.com/vapor/encoding/blockchain"
12         "github.com/vapor/testutil"
13 )
14
15 func TestSerializationTxOutput(t *testing.T) {
16         assetID := testutil.MustDecodeAsset("81756fdab39a17163b0ce582ee4ee256fb4d1e156c692b997d608a42ecb38d47")
17         txOutput := NewTxOutput(assetID, 254354, []byte("TestSerializationTxOutput"))
18
19         wantHex := strings.Join([]string{
20                 "01", // asset version
21                 "3e", // serialization length
22                 "81756fdab39a17163b0ce582ee4ee256fb4d1e156c692b997d608a42ecb38d47", // assetID
23                 "92c30f", // amount
24                 "01",     // version
25                 "19",     // control program length
26                 "5465737453657269616c697a6174696f6e54784f7574707574", // control program
27                 "00", // witness length
28         }, "")
29
30         // Test convert struct to hex
31         var buffer bytes.Buffer
32         if err := txOutput.writeTo(&buffer); err != nil {
33                 t.Fatal(err)
34         }
35
36         gotHex := hex.EncodeToString(buffer.Bytes())
37         if gotHex != wantHex {
38                 t.Errorf("serialization bytes = %s want %s", gotHex, wantHex)
39         }
40
41         // Test convert hex to struct
42         var gotTxOutput TxOutput
43         decodeHex, err := hex.DecodeString(wantHex)
44         if err != nil {
45                 t.Fatal(err)
46         }
47
48         if err := gotTxOutput.readFrom(blockchain.NewReader(decodeHex)); err != nil {
49                 t.Fatal(err)
50         }
51
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))
54         }
55 }