error_test.go raw
1 package blockchain
2
3 import (
4 "testing"
5 )
6
7 // TestErrorCodeStringer tests the stringized output for the ErrorCode type.
8 func TestErrorCodeStringer(t *testing.T) {
9 tests := []struct {
10 in ErrorCode
11 want string
12 }{
13 {ErrDuplicateBlock, "ErrDuplicateBlock"},
14 {ErrBlockTooBig, "ErrBlockTooBig"},
15 {ErrBlockWeightTooHigh, "ErrBlockWeightTooHigh"},
16 {ErrBlockVersionTooOld, "ErrBlockVersionTooOld"},
17 {ErrInvalidTime, "ErrInvalidTime"},
18 {ErrTimeTooOld, "ErrTimeTooOld"},
19 {ErrTimeTooNew, "ErrTimeTooNew"},
20 {ErrDifficultyTooLow, "ErrDifficultyTooLow"},
21 {ErrUnexpectedDifficulty, "ErrUnexpectedDifficulty"},
22 {ErrHighHash, "ErrHighHash"},
23 {ErrBadMerkleRoot, "ErrBadMerkleRoot"},
24 {ErrBadCheckpoint, "ErrBadCheckpoint"},
25 {ErrForkTooOld, "ErrForkTooOld"},
26 {ErrCheckpointTimeTooOld, "ErrCheckpointTimeTooOld"},
27 {ErrNoTransactions, "ErrNoTransactions"},
28 {ErrNoTxInputs, "ErrNoTxInputs"},
29 {ErrNoTxOutputs, "ErrNoTxOutputs"},
30 {ErrTxTooBig, "ErrTxTooBig"},
31 {ErrBadTxOutValue, "ErrBadTxOutValue"},
32 {ErrDuplicateTxInputs, "ErrDuplicateTxInputs"},
33 {ErrBadTxInput, "ErrBadTxInput"},
34 {ErrBadCheckpoint, "ErrBadCheckpoint"},
35 {ErrMissingTxOut, "ErrMissingTxOut"},
36 {ErrUnfinalizedTx, "ErrUnfinalizedTx"},
37 {ErrDuplicateTx, "ErrDuplicateTx"},
38 {ErrOverwriteTx, "ErrOverwriteTx"},
39 {ErrImmatureSpend, "ErrImmatureSpend"},
40 {ErrSpendTooHigh, "ErrSpendTooHigh"},
41 {ErrBadFees, "ErrBadFees"},
42 {ErrTooManySigOps, "ErrTooManySigOps"},
43 {ErrFirstTxNotCoinbase, "ErrFirstTxNotCoinbase"},
44 {ErrMultipleCoinbases, "ErrMultipleCoinbases"},
45 {ErrBadCoinbaseScriptLen, "ErrBadCoinbaseScriptLen"},
46 {ErrBadCoinbaseValue, "ErrBadCoinbaseValue"},
47 {ErrMissingCoinbaseHeight, "ErrMissingCoinbaseHeight"},
48 {ErrBadCoinbaseHeight, "ErrBadCoinbaseHeight"},
49 {ErrScriptMalformed, "ErrScriptMalformed"},
50 {ErrScriptValidation, "ErrScriptValidation"},
51 {ErrUnexpectedWitness, "ErrUnexpectedWitness"},
52 {ErrInvalidWitnessCommitment, "ErrInvalidWitnessCommitment"},
53 {ErrWitnessCommitmentMismatch, "ErrWitnessCommitmentMismatch"},
54 {ErrPreviousBlockUnknown, "ErrPreviousBlockUnknown"},
55 {ErrInvalidAncestorBlock, "ErrInvalidAncestorBlock"},
56 {ErrPrevBlockNotBest, "ErrPrevBlockNotBest"},
57 {0xffff, "Unknown ErrorCode (65535)"},
58 }
59 t.Logf("Running %d tests", len(tests))
60 for i, test := range tests {
61 result := test.in.String()
62 if result != test.want {
63 t.Errorf("String #%d\n got: %s want: %s", i, result,
64 test.want,
65 )
66 continue
67 }
68 }
69 }
70
71 // TestRuleError tests the error output for the RuleError type.
72 func TestRuleError(t *testing.T) {
73 tests := []struct {
74 in RuleError
75 want string
76 }{
77 {
78 RuleError{Description: "duplicate block"},
79 "duplicate block",
80 },
81 {
82 RuleError{Description: "human-readable error"},
83 "human-readable error",
84 },
85 }
86 t.Logf("Running %d tests", len(tests))
87 for i, test := range tests {
88 result := test.in.Error()
89 if result != test.want {
90 t.Errorf("Error #%d\n got: %s want: %s", i, result,
91 test.want,
92 )
93 continue
94 }
95 }
96 }
97
98 // TestDeploymentError tests the stringized output for the DeploymentError type.
99 func TestDeploymentError(t *testing.T) {
100 t.Parallel()
101 tests := []struct {
102 in DeploymentError
103 want string
104 }{
105 {
106 DeploymentError(0),
107 "deployment ID 0 does not exist",
108 },
109 {
110 DeploymentError(10),
111 "deployment ID 10 does not exist",
112 },
113 {
114 DeploymentError(123),
115 "deployment ID 123 does not exist",
116 },
117 }
118 t.Logf("Running %d tests", len(tests))
119 for i, test := range tests {
120 result := test.in.Error()
121 if result != test.want {
122 t.Errorf("Error #%d\n got: %s want: %s", i, result,
123 test.want,
124 )
125 continue
126 }
127 }
128 }
129