Skip to content

Commit 539ef62

Browse files
committed
more tests
1 parent 65d7624 commit 539ef62

8 files changed

+137
-42
lines changed

bytes_test.go

+15-6
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,25 @@ func TestReverseCopy(t *testing.T) {
2626
ReverseCopy(c.dst, c.src)
2727

2828
if !bytes.Equal(c.dst, c.expect) {
29-
t.Fatalf("#%d failed: got %v, expect %v", i, c.dst, c.expect)
29+
t.Fatalf("#%d failed: got %x, expect %x", i, c.dst, c.expect)
3030
}
3131
}
3232
}
3333

3434
func TestPaddedAppend(t *testing.T) {
35-
dst := make([]byte, 0, 12)
36-
src := []byte{0x12, 0x34}
35+
testCases := []struct {
36+
size uint
37+
dst, src []byte
38+
expect []byte
39+
}{
40+
{2, nil, []byte{0x12}, []byte{0x00, 0x12}},
41+
{1, nil, []byte{0x12}, []byte{0x12}},
42+
{0, nil, []byte{0x12}, []byte{0x12}},
43+
}
3744

38-
hello := paddedAppend(3, dst, src)
39-
t.Logf("% x", dst)
40-
t.Logf("% x", hello)
45+
for i, c := range testCases {
46+
if got := paddedAppend(c.size, c.dst, c.src); !bytes.Equal(got, c.expect) {
47+
t.Fatalf("#%d failed: got %x, expect %x", i, got, c.expect)
48+
}
49+
}
4150
}

goldie_test.go

+3-9
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@ type generateMasterKeyGoldie struct {
2828

2929
func readInGenerateMasterKeyGoldie(t *testing.T) []*generateMasterKeyGoldie {
3030
var golden []bip32.Goldie
31-
if err := bip32.ReadGoldenJSON(bip32.GoldenName, &golden); nil != err {
32-
t.Fatal(err)
33-
}
31+
ReadGoldenJSON(t, bip32.GoldenName, &golden)
3432

3533
var goods []*generateMasterKeyGoldie
3634
for _, v := range golden {
@@ -80,13 +78,9 @@ func readChildGoldie(t *testing.T, pub bool) []*childGoldie {
8078
var goldens, addOn []*bip32.Goldie
8179

8280
if !pub {
83-
if err := bip32.ReadGoldenJSON(bip32.GoldenName, &goldens); nil != err {
84-
t.Fatal(err)
85-
}
86-
}
87-
if err := bip32.ReadGoldenJSON(bip32.GoldenAddOnName, &addOn); nil != err {
88-
t.Fatal(err)
81+
ReadGoldenJSON(t, bip32.GoldenName, &goldens)
8982
}
83+
ReadGoldenJSON(t, bip32.GoldenAddOnName, &addOn)
9084

9185
goldens = append(goldens, addOn...)
9286

helper_test.go

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package bip32_test
2+
3+
import (
4+
"encoding/json"
5+
"os"
6+
"path/filepath"
7+
"testing"
8+
9+
"github.com/sammy00/bip32"
10+
)
11+
12+
func ReadGoldenJSON(t *testing.T, name string, golden interface{}) {
13+
fd, err := os.Open(filepath.Join(bip32.GoldenBase, name))
14+
if nil != err {
15+
t.Fatal(err)
16+
}
17+
defer fd.Close()
18+
19+
if err := json.NewDecoder(fd).Decode(golden); nil != err {
20+
t.Fatal(err)
21+
}
22+
}

internal_test.go

+76
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package bip32
22

33
import (
4+
"bytes"
5+
"encoding/hex"
46
"reflect"
57
"testing"
68

@@ -70,3 +72,77 @@ func Test_decodePublicKey(t *testing.T) {
7072
}
7173
}
7274
}
75+
76+
func Test_derivePublicKey(t *testing.T) {
77+
// test vector decoded from the golden as specified in testdata/bip32.golden
78+
testCases := []struct {
79+
priv string
80+
expect string
81+
}{
82+
{
83+
"e8f32e723decf4051aefac8e2c93c9c5b214313817cdb01a1494b917c8436b35",
84+
"0339a36013301597daef41fbe593a02cc513d0b55527ec2df1050e2e8ff49c85c2",
85+
},
86+
{
87+
"edb2e14f9ee77d26dd93b4ecede8d16ed408ce149b6cd80b0715a2d911a0afea",
88+
"035a784662a4a20a65bf6aab9ae98a6c068a81c52e4b032c0fb5400c706cfccc56",
89+
},
90+
{
91+
"3c6cb8d0f6a264c91ea8b5030fadaa8e538b020f0a387421a12de9319dc93368",
92+
"03501e454bf00751f24b1b489aa925215d66af2234e3891c3b21a52bedb3cd711c",
93+
},
94+
{
95+
"cbce0d719ecf7431d88e6a89fa1483e02e35092af60c042b1df2ff59fa424dca",
96+
"0357bfe1e341d01c69fe5654309956cbea516822fba8a601743a012a7896ee8dc2",
97+
},
98+
{
99+
"0f479245fb19a38a1954c5c7c0ebab2f9bdfd96a17563ef28a6a4b1a2a764ef4",
100+
"02e8445082a72f29b75ca48748a914df60622a609cacfce8ed0e35804560741d29",
101+
},
102+
{
103+
"471b76e389e528d6de6d816857e012c5455051cad6660850e58372a6c3e6e7c8",
104+
"022a471424da5e657499d1ff51cb43c47481a03b1e77f951fe64cec9f5a48f7011",
105+
},
106+
{
107+
"4b03d6fc340455b363f51020ad3ecca4f0850280cf436c70c727923f6db46c3e",
108+
"03cbcaa9c98c877a26977d00825c956a238e8dddfbd322cce4f74b0b5bd6ace4a7",
109+
},
110+
{
111+
"abe74a98f6c7eabee0428f53798f0ab8aa1bd37873999041703c742f15ac7e1e",
112+
"02fc9e5af0ac8d9b3cecfe2a888e2117ba3d089d8585886c9c826b6b22a98d12ea",
113+
},
114+
{
115+
"877c779ad9687164e9c2f4f0f4ff0340814392330693ce95a58fe18fd52e6e93",
116+
"03c01e7425647bdefa82b12d9bad5e3e6865bee0502694b94ca58b666abc0a5c3b",
117+
},
118+
{
119+
"704addf544a06e5ee4bea37098463c23613da32020d604506da8c0518e1da4b7",
120+
"03a7d1d856deb74c508e05031f9895dab54626251b3806e16b4bd12e781a7df5b9",
121+
},
122+
{
123+
"f1c7c871a54a804afe328b4c83a1c33b8e5ff48f5087273f04efa83b247d6a2d",
124+
"02d2b36900396c9282fa14628566582f206a5dd0bcc8d5e892611806cafb0301f0",
125+
},
126+
{
127+
"bb7d39bdb83ecf58f2fd82b6d918341cbef428661ef01ab97c28a4842125ac23",
128+
"024d902e1a2fc7a8755ab5b694c575fce742c48d9ff192e63df5193e4c7afe1f9c",
129+
},
130+
{
131+
"00ddb80b067e0d4993197fe10f2657a844a384589847602d56f0c629c81aae32",
132+
"03683af1ba5743bdfc798cf814efeeab2735ec52d95eced528e692b8e34c4e5669",
133+
},
134+
{
135+
"491f7a2eebc7b57028e0d3faa0acda02e75c33b03c48fb288c41e2ea44e1daef",
136+
"026557fdda1d5d43d79611f784780471f086d58e8126b8c40acb82272a7712e7f2",
137+
},
138+
}
139+
140+
for i, c := range testCases {
141+
priv, _ := hex.DecodeString(c.priv)
142+
expect, _ := hex.DecodeString(c.expect)
143+
144+
if got := derivePublicKey(priv); !bytes.Equal(got, expect) {
145+
t.Fatalf("#%d failed: got %x, expect %x", i, got, expect)
146+
}
147+
}
148+
}

master_key_test.go

+16-22
Original file line numberDiff line numberDiff line change
@@ -9,27 +9,21 @@ import (
99
func TestGenerateMasterKey(t *testing.T) {
1010
testCases := readInGenerateMasterKeyGoldie(t)
1111

12-
for _, c := range testCases {
13-
c := c
14-
15-
t.Run("", func(st *testing.T) {
16-
key, err := bip32.GenerateMasterKey(c.rand, *c.keyID, c.strength)
17-
18-
if c.expect.bad && nil == err {
19-
st.Fatal("expect error but got none")
20-
} else if !c.expect.bad && nil != err {
21-
st.Fatalf("unexpected error: %v", err)
22-
}
23-
24-
if c.expect.bad {
25-
return // skip due to error out
26-
}
27-
28-
if got := key.String(); got != c.expect.key {
29-
st.Fatalf("invalid key: got %s, expect %s", got, c.expect.key)
30-
}
31-
})
12+
for i, c := range testCases {
13+
key, err := bip32.GenerateMasterKey(c.rand, *c.keyID, c.strength)
14+
15+
if c.expect.bad && nil == err {
16+
t.Fatalf("#%d expect error but got none", i)
17+
} else if !c.expect.bad && nil != err {
18+
t.Fatalf("#%d unexpected error: %v", i, err)
19+
}
20+
21+
if c.expect.bad {
22+
return // skip due to error out
23+
}
24+
25+
if got := key.String(); got != c.expect.key {
26+
t.Fatalf("#%d invalid key: got %s, expect %s", i, got, c.expect.key)
27+
}
3228
}
3329
}
34-
35-
//func readInMasterPrivKey()

private_key_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ func TestPrivateKey_Child_OK3(t *testing.T) {
272272

273273
func TestPrivateKey_Neuter(t *testing.T) {
274274
var testCases []bip32.Goldie
275-
bip32.ReadGoldenJSON(bip32.GoldenName, &testCases)
275+
ReadGoldenJSON(t, bip32.GoldenName, &testCases)
276276

277277
for _, c := range testCases {
278278
chains := c.Chains
@@ -302,7 +302,7 @@ func TestPrivateKey_Neuter(t *testing.T) {
302302

303303
func TestParsePrivateKey_OK(t *testing.T) {
304304
var testCases []bip32.Goldie
305-
bip32.ReadGoldenJSON(bip32.GoldenName, &testCases)
305+
ReadGoldenJSON(t, bip32.GoldenName, &testCases)
306306

307307
for _, c := range testCases {
308308
chains := c.Chains

public_key_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ func TestParsePublicKey_Bad(t *testing.T) {
5757

5858
func TestParsePublicKey_OK(t *testing.T) {
5959
var testCases []bip32.Goldie
60-
bip32.ReadGoldenJSON(bip32.GoldenName, &testCases)
60+
ReadGoldenJSON(t, bip32.GoldenName, &testCases)
6161

6262
for _, c := range testCases {
6363
chains := c.Chains

testing.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@ package bip32
22

33
import (
44
"encoding/hex"
5-
"encoding/json"
65
"errors"
76
"io"
8-
"os"
97
"path/filepath"
108
"strconv"
119
"strings"
@@ -69,6 +67,7 @@ func NewEntropyReader(hexStr string) io.Reader {
6967
return hex.NewDecoder(strings.NewReader(hexStr))
7068
}
7169

70+
/*
7271
func ReadGoldenJSON(name string, golden interface{}) error {
7372
fd, err := os.Open(filepath.Join(GoldenBase, name))
7473
if nil != err {
@@ -78,3 +77,4 @@ func ReadGoldenJSON(name string, golden interface{}) error {
7877
7978
return json.NewDecoder(fd).Decode(golden)
8079
}
80+
*/

0 commit comments

Comments
 (0)