OSDN Git Service

Hulk did something
[bytom/vapor.git] / protocol / bc / types / spend_commitment_test.go
1 package types
2
3 import (
4         "bytes"
5         "encoding/hex"
6         "testing"
7
8         "github.com/vapor/encoding/blockchain"
9         "github.com/vapor/protocol/bc"
10         "github.com/vapor/testutil"
11 )
12
13 func TestReadWriteSpendCommitment(t *testing.T) {
14         btmAssetID := testutil.MustDecodeAsset("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
15         cases := []struct {
16                 sc           *SpendCommitment
17                 encodeString string
18         }{
19                 {
20                         sc: &SpendCommitment{
21                                 AssetAmount: bc.AssetAmount{
22                                         AssetId: &btmAssetID,
23                                         Amount:  100,
24                                 },
25                                 SourceID:       testutil.MustDecodeHash("3160fb24f97e06ad5a9717cd47fe2b65c7409903216b39120b10550282b20e99"),
26                                 SourcePosition: 0,
27                                 VMVersion:      1,
28                                 ControlProgram: testutil.MustDecodeHexString("0014d927424f4e8c242460b538f04c2676b97842e9a7"),
29                         },
30                         encodeString: "5a3160fb24f97e06ad5a9717cd47fe2b65c7409903216b39120b10550282b20e99ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff640001160014d927424f4e8c242460b538f04c2676b97842e9a7",
31                 },
32                 {
33                         sc: &SpendCommitment{
34                                 AssetAmount: bc.AssetAmount{
35                                         AssetId: &btmAssetID,
36                                         Amount:  999,
37                                 },
38                                 SourceID:       testutil.MustDecodeHash("4b5cb973f5bef4eadde4c89b92ee73312b940e84164da0594149554cc8a2adea"),
39                                 SourcePosition: 2,
40                                 VMVersion:      1,
41                                 ControlProgram: testutil.MustDecodeHexString("001418549d84daf53344d32563830c7cf979dc19d5c0"),
42                         },
43                         encodeString: "5b4b5cb973f5bef4eadde4c89b92ee73312b940e84164da0594149554cc8a2adeaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe707020116001418549d84daf53344d32563830c7cf979dc19d5c0",
44                 },
45         }
46
47         for _, c := range cases {
48                 buff := []byte{}
49                 buffer := bytes.NewBuffer(buff)
50                 if err := c.sc.writeExtensibleString(buffer, nil, 1); err != nil {
51                         t.Fatal(err)
52                 }
53
54                 got := hex.EncodeToString(buffer.Bytes())
55                 if got != c.encodeString {
56                         t.Errorf("test write spend commitment fail, got:%s, want:%s", got, c.encodeString)
57                 }
58
59                 sc := &SpendCommitment{}
60                 _, err := sc.readFrom(blockchain.NewReader(buffer.Bytes()), 1)
61                 if err != nil {
62                         t.Fatal(err)
63                 }
64
65                 if !testutil.DeepEqual(*sc, *c.sc) {
66                         t.Errorf("test read spend commitment fail, got:%v, want:%v", *sc, *c.sc)
67                 }
68         }
69 }