9 "github.com/davecgh/go-spew/spew"
11 "github.com/vapor/encoding/blockchain"
12 "github.com/vapor/testutil"
15 func TestSerializationSpend(t *testing.T) {
16 arguments := [][]byte{
20 spend := NewSpendInput(arguments, testutil.MustDecodeHash("fad5195a0c8e3b590b86a3c0a95e7529565888508aecca96e9aeda633002f409"), testutil.MustDecodeAsset("fe9791d71b67ee62515e08723c061b5ccb952a80d804417c8aeedf7f633c524a"), 254354, 3, []byte("spendProgram"))
22 wantHex := strings.Join([]string{
23 "01", // asset version
24 "54", // input commitment length
25 "01", // spend type flag
26 "52", // spend commitment length
27 "fad5195a0c8e3b590b86a3c0a95e7529565888508aecca96e9aeda633002f409", // source id
28 "fe9791d71b67ee62515e08723c061b5ccb952a80d804417c8aeedf7f633c524a", // assetID
30 "03", // source position
32 "0c", // spend program length
33 "7370656e6450726f6772616d", // spend program
34 "17", // witness length
35 "02", // argument array length
36 "0a", // first argument length
37 "617267756d656e747331", // first argument data
38 "0a", // second argument length
39 "617267756d656e747332", // second argument data
42 // Test convert struct to hex
43 var buffer bytes.Buffer
44 if err := spend.writeTo(&buffer); err != nil {
48 gotHex := hex.EncodeToString(buffer.Bytes())
49 if gotHex != wantHex {
50 t.Errorf("serialization bytes = %s want %s", gotHex, wantHex)
53 // Test convert hex to struct
55 decodeHex, err := hex.DecodeString(wantHex)
60 if err := gotSpend.readFrom(blockchain.NewReader(decodeHex)); err != nil {
64 if !testutil.DeepEqual(*spend, gotSpend) {
65 t.Errorf("expected marshaled/unmarshaled txinput to be:\n%sgot:\n%s", spew.Sdump(*spend), spew.Sdump(gotSpend))
69 func TestSerializationCoinbase(t *testing.T) {
70 coinbase := NewCoinbaseInput([]byte("arbitrary"))
71 wantHex := strings.Join([]string{
72 "01", // asset version
73 "0b", // input commitment length
74 "02", // coinbase type flag
75 "09", // arbitrary length
76 "617262697472617279", // arbitrary data
77 "00", // witness length
80 // Test convert struct to hex
81 var buffer bytes.Buffer
82 if err := coinbase.writeTo(&buffer); err != nil {
86 gotHex := hex.EncodeToString(buffer.Bytes())
87 if gotHex != wantHex {
88 t.Errorf("serialization bytes = %s want %s", gotHex, wantHex)
91 // Test convert hex to struct
92 var gotCoinbase TxInput
93 decodeHex, err := hex.DecodeString(wantHex)
98 if err := gotCoinbase.readFrom(blockchain.NewReader(decodeHex)); err != nil {
102 if !testutil.DeepEqual(*coinbase, gotCoinbase) {
103 t.Errorf("expected marshaled/unmarshaled txinput to be:\n%sgot:\n%s", spew.Sdump(*coinbase), spew.Sdump(gotCoinbase))