Skip to content

Commit 6667b07

Browse files
error handling in go tests
1 parent d2aa948 commit 6667b07

5 files changed

Lines changed: 108 additions & 12 deletions

File tree

packages/kos-go/demo/main.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,20 @@ func main() {
2424

2525
rawTx := "0100000002afa8838dbaa03cd3e4fee38bdcb6a428965559ae941dca5a8f91999cfd6d8b0d0100000000ffffffffdb6d60d4a93a95738e72f641bcdd166c94f6e1f439dfe695e40583997284463c0100000000ffffffff0240420f00000000001976a91434bf902df5d66f0e9b89d0f83fbcad638ad19ae988acea970700000000001976a9145bb0ba5ba58cdab459f27f2d29f40e1dd5db238188ac00000000"
2626

27-
prevScript, _ := hex.DecodeString("76a9145bb0ba5ba58cdab459f27f2d29f40e1dd5db238188ac")
27+
prevScript, err := hex.DecodeString("76a9145bb0ba5ba58cdab459f27f2d29f40e1dd5db238188ac")
28+
if err != nil {
29+
fmt.Printf("failed to decode prevScript: %v\n", err)
30+
return
31+
}
2832
options := kosgo.TransactionChainOptionsBtc{
2933
PrevScripts: [][]byte{prevScript, prevScript},
3034
InputAmounts: []uint64{498870, 1001016},
3135
}
3236

3337
transaction, err := kosgo.SignTransaction(account, rawTx, options)
3438
if err != nil {
35-
fmt.Printf("failed to sign transaction: %v", err)
39+
fmt.Printf("failed to sign transaction: %v\n", err)
40+
return
3641
}
3742

3843
expectedRaw :=

packages/kos-go/number.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,16 @@ func NewBigNumberZero() *BigNumber {
3131
}
3232

3333
func (b *BigNumber) String() string {
34+
if b == nil {
35+
return ""
36+
}
3437
return kos_mobile.BigNumberString(b.inner)
3538
}
3639

3740
func Add(lhs, rhs *BigNumber) (*BigNumber, error) {
41+
if lhs == nil || rhs == nil {
42+
return nil, fmt.Errorf("nil BigNumber operand")
43+
}
3844
result, err := kos_mobile.BigNumberAdd(lhs.inner, rhs.inner)
3945
if err != nil {
4046
return nil, err
@@ -43,6 +49,9 @@ func Add(lhs, rhs *BigNumber) (*BigNumber, error) {
4349
}
4450

4551
func Sub(lhs, rhs *BigNumber) (*BigNumber, error) {
52+
if lhs == nil || rhs == nil {
53+
return nil, fmt.Errorf("nil BigNumber operand")
54+
}
4655
result, err := kos_mobile.BigNumberSubtract(lhs.inner, rhs.inner)
4756
if err != nil {
4857
return nil, err
@@ -51,6 +60,9 @@ func Sub(lhs, rhs *BigNumber) (*BigNumber, error) {
5160
}
5261

5362
func Mul(lhs, rhs *BigNumber) (*BigNumber, error) {
63+
if lhs == nil || rhs == nil {
64+
return nil, fmt.Errorf("nil BigNumber operand")
65+
}
5466
result, err := kos_mobile.BigNumberMultiply(lhs.inner, rhs.inner)
5567
if err != nil {
5668
return nil, err
@@ -59,6 +71,9 @@ func Mul(lhs, rhs *BigNumber) (*BigNumber, error) {
5971
}
6072

6173
func Div(lhs, rhs *BigNumber) (*BigNumber, error) {
74+
if lhs == nil || rhs == nil {
75+
return nil, fmt.Errorf("nil BigNumber operand")
76+
}
6277
result, err := kos_mobile.BigNumberDivide(lhs.inner, rhs.inner)
6378
if err != nil {
6479
return nil, err
@@ -67,6 +82,9 @@ func Div(lhs, rhs *BigNumber) (*BigNumber, error) {
6782
}
6883

6984
func Pow(base, exp *BigNumber) (*BigNumber, error) {
85+
if base == nil || exp == nil {
86+
return nil, fmt.Errorf("nil BigNumber operand")
87+
}
7088
result, err := kos_mobile.BigNumberPow(base.inner, exp.inner)
7189
if err != nil {
7290
return nil, err
@@ -75,26 +93,44 @@ func Pow(base, exp *BigNumber) (*BigNumber, error) {
7593
}
7694

7795
func IsEqual(lhs, rhs *BigNumber) bool {
96+
if lhs == nil || rhs == nil {
97+
return false
98+
}
7899
return kos_mobile.BigNumberIsEqual(lhs.inner, rhs.inner)
79100
}
80101

81102
func IsGt(lhs, rhs *BigNumber) bool {
103+
if lhs == nil || rhs == nil {
104+
return false
105+
}
82106
return kos_mobile.BigNumberIsGt(lhs.inner, rhs.inner)
83107
}
84108

85109
func IsGte(lhs, rhs *BigNumber) bool {
110+
if lhs == nil || rhs == nil {
111+
return false
112+
}
86113
return kos_mobile.BigNumberIsGte(lhs.inner, rhs.inner)
87114
}
88115

89116
func IsLt(lhs, rhs *BigNumber) bool {
117+
if lhs == nil || rhs == nil {
118+
return false
119+
}
90120
return kos_mobile.BigNumberIsLt(lhs.inner, rhs.inner)
91121
}
92122

93123
func IsLte(lhs, rhs *BigNumber) bool {
124+
if lhs == nil || rhs == nil {
125+
return false
126+
}
94127
return kos_mobile.BigNumberIsLte(lhs.inner, rhs.inner)
95128
}
96129

97130
func Abs(b *BigNumber) (*BigNumber, error) {
131+
if b == nil {
132+
return nil, fmt.Errorf("nil BigNumber operand")
133+
}
98134
result, err := kos_mobile.BigNumberAbsolute(b.inner)
99135
if err != nil {
100136
return nil, err
@@ -103,10 +139,16 @@ func Abs(b *BigNumber) (*BigNumber, error) {
103139
}
104140

105141
func IsZero(b *BigNumber) bool {
142+
if b == nil {
143+
return false
144+
}
106145
return kos_mobile.BigNumberIsZero(b.inner)
107146
}
108147

109148
func Increment(b *BigNumber) (*BigNumber, error) {
149+
if b == nil {
150+
return nil, fmt.Errorf("nil BigNumber operand")
151+
}
110152
result, err := kos_mobile.BigNumberIncrement(b.inner)
111153
if err != nil {
112154
return nil, err
@@ -115,6 +157,9 @@ func Increment(b *BigNumber) (*BigNumber, error) {
115157
}
116158

117159
func Decrement(b *BigNumber) (*BigNumber, error) {
160+
if b == nil {
161+
return nil, fmt.Errorf("nil BigNumber operand")
162+
}
118163
result, err := kos_mobile.BigNumberDecrement(b.inner)
119164
if err != nil {
120165
return nil, err
@@ -123,9 +168,15 @@ func Decrement(b *BigNumber) (*BigNumber, error) {
123168
}
124169

125170
func IsPositive(b *BigNumber) bool {
171+
if b == nil {
172+
return false
173+
}
126174
return kos_mobile.BigNumberIsPositive(b.inner)
127175
}
128176

129177
func IsNegative(b *BigNumber) bool {
178+
if b == nil {
179+
return false
180+
}
130181
return kos_mobile.BigNumberIsNegative(b.inner)
131182
}

packages/kos-go/signer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import kos_mobile "github.com/klever-io/kos-rs/packages/kos-go/kos_mobile"
44

55
type LdError = kos_mobile.LdError
66
type LdErrorMnemonicError = kos_mobile.LdErrorMnemonicError
7-
type LdErrorIntanceError = kos_mobile.LdErrorIntanceError
7+
type LdErrorInstanceError = kos_mobile.LdErrorIntanceError
88
type LdErrorSignerError = kos_mobile.LdErrorSignerError
99
type LdErrorGeneric = kos_mobile.LdErrorGeneric
1010
type LdErrorDerivationError = kos_mobile.LdErrorDerivationError

packages/kos-go/wallet.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package kosgo
22

3-
import kos_mobile "github.com/klever-io/kos-rs/packages/kos-go/kos_mobile"
3+
import (
4+
"fmt"
5+
6+
kos_mobile "github.com/klever-io/kos-rs/packages/kos-go/kos_mobile"
7+
)
48

59
type KosAccount = kos_mobile.KosAccount
610
type KosTransaction = kos_mobile.KosTransaction
@@ -61,12 +65,24 @@ func SignTransaction(account KosAccount, raw string, options TransactionChainOpt
6165
var actualOpts TransactionChainOptions
6266
switch v := options.(type) {
6367
case *TransactionChainOptionsBtc:
68+
if v == nil {
69+
return KosTransaction{}, fmt.Errorf("SignTransaction: nil *TransactionChainOptionsBtc")
70+
}
6471
actualOpts = *v
6572
case *TransactionChainOptionsSubstrate:
73+
if v == nil {
74+
return KosTransaction{}, fmt.Errorf("SignTransaction: nil *TransactionChainOptionsSubstrate")
75+
}
6676
actualOpts = *v
6777
case *TransactionChainOptionsEvm:
78+
if v == nil {
79+
return KosTransaction{}, fmt.Errorf("SignTransaction: nil *TransactionChainOptionsEvm")
80+
}
6881
actualOpts = *v
6982
case *TransactionChainOptionsCosmos:
83+
if v == nil {
84+
return KosTransaction{}, fmt.Errorf("SignTransaction: nil *TransactionChainOptionsCosmos")
85+
}
7086
actualOpts = *v
7187
default:
7288
actualOpts = options

packages/kos-go/wallet_test.go

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,10 @@ func TestWalletShouldSignTransactionBch(t *testing.T) {
236236
account, err := GenerateWalletFromMnemonic(testMnemonic, chainID, 0, nil)
237237
assert.Nil(t, err, "Failed to generate wallet from mnemonic")
238238

239-
prevScript, _ := hex.DecodeString("76a9145bb0ba5ba58cdab459f27f2d29f40e1dd5db238188ac")
239+
prevScript, err := hex.DecodeString("76a9145bb0ba5ba58cdab459f27f2d29f40e1dd5db238188ac")
240+
if err != nil {
241+
t.Fatalf("failed to decode prevScript fixture: %v", err)
242+
}
240243
options := TransactionChainOptionsBtc{
241244
PrevScripts: [][]byte{prevScript, prevScript},
242245
InputAmounts: []uint64{498870, 1001016},
@@ -253,7 +256,10 @@ func TestWalletShouldSignTransactionBtc(t *testing.T) {
253256
account, err := GenerateWalletFromMnemonic(testMnemonic, chainID, 0, nil)
254257
assert.Nil(t, err, "Failed to generate wallet from mnemonic")
255258

256-
prevScript, _ := hex.DecodeString("0014546d5f8e86641e4d1eec5b9155a540d953245e4a")
259+
prevScript, err := hex.DecodeString("0014546d5f8e86641e4d1eec5b9155a540d953245e4a")
260+
if err != nil {
261+
t.Fatalf("failed to decode prevScript fixture: %v", err)
262+
}
257263
options := TransactionChainOptionsBtc{
258264
PrevScripts: [][]byte{prevScript, prevScript},
259265
InputAmounts: []uint64{5000, 10000},
@@ -270,7 +276,10 @@ func TestWalletShouldSignTransactionDash(t *testing.T) {
270276
account, err := GenerateWalletFromMnemonic(testMnemonic, chainID, 0, nil)
271277
assert.Nil(t, err, "Failed to generate wallet from mnemonic")
272278

273-
prevScript, _ := hex.DecodeString("76a914be4232b46086c1d46d12c65eacbd807e87b92a5488ac")
279+
prevScript, err := hex.DecodeString("76a914be4232b46086c1d46d12c65eacbd807e87b92a5488ac")
280+
if err != nil {
281+
t.Fatalf("failed to decode prevScript fixture: %v", err)
282+
}
274283
options := TransactionChainOptionsBtc{
275284
PrevScripts: [][]byte{prevScript},
276285
InputAmounts: []uint64{1013578},
@@ -287,7 +296,10 @@ func TestWalletShouldSignTransactionDoge(t *testing.T) {
287296
account, err := GenerateWalletFromMnemonic(testMnemonic, chainID, 0, nil)
288297
assert.Nil(t, err, "Failed to generate wallet from mnemonic")
289298

290-
prevScript, _ := hex.DecodeString("76a91479975a24fdab613e17cf184bc185071aad17441888ac")
299+
prevScript, err := hex.DecodeString("76a91479975a24fdab613e17cf184bc185071aad17441888ac")
300+
if err != nil {
301+
t.Fatalf("failed to decode prevScript fixture: %v", err)
302+
}
291303
options := TransactionChainOptionsBtc{
292304
PrevScripts: [][]byte{prevScript},
293305
InputAmounts: []uint64{63609889529},
@@ -330,11 +342,23 @@ func TestWalletShouldSignTransactionDot(t *testing.T) {
330342
account, err := GenerateWalletFromMnemonic(testMnemonic, chainID, 0, nil)
331343
assert.Nil(t, err, "Failed to generate wallet from mnemonic")
332344

333-
call, _ := hex.DecodeString("0a0300b8c8ac77e723fae060f2dc70d00a591e1127ec07e0e81e2237a823cbe5210d1e02286bee")
334-
era, _ := hex.DecodeString("0501")
345+
call, err := hex.DecodeString("0a0300b8c8ac77e723fae060f2dc70d00a591e1127ec07e0e81e2237a823cbe5210d1e02286bee")
346+
if err != nil {
347+
t.Fatalf("failed to decode call fixture: %v", err)
348+
}
349+
era, err := hex.DecodeString("0501")
350+
if err != nil {
351+
t.Fatalf("failed to decode era fixture: %v", err)
352+
}
335353
assetId := "0"
336-
blockHash, _ := hex.DecodeString("781cf57533b15a5a13729a33543fd6ae137bce54ef14eb933b0a4813489e7e0a")
337-
genesisHash, _ := hex.DecodeString("68d56f15f85d3136970ec16946040bc1752654e906147f7e43e9d539d7c3de2f")
354+
blockHash, err := hex.DecodeString("781cf57533b15a5a13729a33543fd6ae137bce54ef14eb933b0a4813489e7e0a")
355+
if err != nil {
356+
t.Fatalf("failed to decode blockHash fixture: %v", err)
357+
}
358+
genesisHash, err := hex.DecodeString("68d56f15f85d3136970ec16946040bc1752654e906147f7e43e9d539d7c3de2f")
359+
if err != nil {
360+
t.Fatalf("failed to decode genesisHash fixture: %v", err)
361+
}
338362
options := TransactionChainOptionsSubstrate{
339363
Call: call,
340364
Era: era,

0 commit comments

Comments
 (0)