OSDN Git Service

feat: add processIssuing (#152)
[bytom/vapor.git] / vendor / github.com / bytom / protocol / bc / types / spend_commitment_test.go
diff --git a/vendor/github.com/bytom/protocol/bc/types/spend_commitment_test.go b/vendor/github.com/bytom/protocol/bc/types/spend_commitment_test.go
new file mode 100644 (file)
index 0000000..73cf114
--- /dev/null
@@ -0,0 +1,69 @@
+package types
+
+import (
+       "bytes"
+       "encoding/hex"
+       "testing"
+
+       "github.com/bytom/encoding/blockchain"
+       "github.com/bytom/protocol/bc"
+       "github.com/bytom/testutil"
+)
+
+func TestReadWriteSpendCommitment(t *testing.T) {
+       btmAssetID := testutil.MustDecodeAsset("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
+       cases := []struct {
+               sc           *SpendCommitment
+               encodeString string
+       }{
+               {
+                       sc: &SpendCommitment{
+                               AssetAmount: bc.AssetAmount{
+                                       AssetId: &btmAssetID,
+                                       Amount:  100,
+                               },
+                               SourceID:       testutil.MustDecodeHash("3160fb24f97e06ad5a9717cd47fe2b65c7409903216b39120b10550282b20e99"),
+                               SourcePosition: 0,
+                               VMVersion:      1,
+                               ControlProgram: testutil.MustDecodeHexString("0014d927424f4e8c242460b538f04c2676b97842e9a7"),
+                       },
+                       encodeString: "5a3160fb24f97e06ad5a9717cd47fe2b65c7409903216b39120b10550282b20e99ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff640001160014d927424f4e8c242460b538f04c2676b97842e9a7",
+               },
+               {
+                       sc: &SpendCommitment{
+                               AssetAmount: bc.AssetAmount{
+                                       AssetId: &btmAssetID,
+                                       Amount:  999,
+                               },
+                               SourceID:       testutil.MustDecodeHash("4b5cb973f5bef4eadde4c89b92ee73312b940e84164da0594149554cc8a2adea"),
+                               SourcePosition: 2,
+                               VMVersion:      1,
+                               ControlProgram: testutil.MustDecodeHexString("001418549d84daf53344d32563830c7cf979dc19d5c0"),
+                       },
+                       encodeString: "5b4b5cb973f5bef4eadde4c89b92ee73312b940e84164da0594149554cc8a2adeaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe707020116001418549d84daf53344d32563830c7cf979dc19d5c0",
+               },
+       }
+
+       for _, c := range cases {
+               buff := []byte{}
+               buffer := bytes.NewBuffer(buff)
+               if err := c.sc.writeExtensibleString(buffer, nil, 1); err != nil {
+                       t.Fatal(err)
+               }
+
+               got := hex.EncodeToString(buffer.Bytes())
+               if got != c.encodeString {
+                       t.Errorf("test write spend commitment fail, got:%s, want:%s", got, c.encodeString)
+               }
+
+               sc := &SpendCommitment{}
+               _, err := sc.readFrom(blockchain.NewReader(buffer.Bytes()), 1)
+               if err != nil {
+                       t.Fatal(err)
+               }
+
+               if !testutil.DeepEqual(*sc, *c.sc) {
+                       t.Errorf("test read spend commitment fail, got:%v, want:%v", *sc, *c.sc)
+               }
+       }
+}