OSDN Git Service

Merge pull request #201 from Bytom/v0.1
[bytom/vapor.git] / proposal / proposal_test.go
diff --git a/proposal/proposal_test.go b/proposal/proposal_test.go
new file mode 100644 (file)
index 0000000..02777db
--- /dev/null
@@ -0,0 +1,57 @@
+package proposal
+
+import (
+       "testing"
+
+       "github.com/vapor/consensus"
+)
+
+func TestCreateCoinbaseTx(t *testing.T) {
+       consensus.ActiveNetParams = consensus.Params{
+               ProducerSubsidys: []consensus.ProducerSubsidy{
+                       {BeginBlock: 0, EndBlock: 0, Subsidy: 24},
+                       {BeginBlock: 1, EndBlock: 840000, Subsidy: 24},
+                       {BeginBlock: 840001, EndBlock: 1680000, Subsidy: 12},
+                       {BeginBlock: 1680001, EndBlock: 3360000, Subsidy: 6},
+               },
+       }
+       reductionInterval := uint64(840000)
+       cases := []struct {
+               height  uint64
+               txFee   uint64
+               subsidy uint64
+       }{
+               {
+                       height:  reductionInterval - 1,
+                       txFee:   100000000,
+                       subsidy: 24 + 100000000,
+               },
+               {
+                       height:  reductionInterval,
+                       txFee:   2000000000,
+                       subsidy: 24 + 2000000000,
+               },
+               {
+                       height:  reductionInterval + 1,
+                       txFee:   0,
+                       subsidy: 12,
+               },
+               {
+                       height:  reductionInterval * 2,
+                       txFee:   100000000,
+                       subsidy: 12 + 100000000,
+               },
+       }
+
+       for index, c := range cases {
+               coinbaseTx, err := createCoinbaseTx(nil, c.txFee, c.height)
+               if err != nil {
+                       t.Fatal(err)
+               }
+
+               outputAmount := coinbaseTx.Outputs[0].OutputCommitment().Amount
+               if outputAmount != c.subsidy {
+                       t.Fatalf("index:%d,coinbase tx reward dismatch, expected: %d, have: %d", index, c.subsidy, outputAmount)
+               }
+       }
+}