Skip to content

Commit bf4b342

Browse files
committed
refactor(test): improve fuzz test structure to satisfy linters
1 parent 387abd2 commit bf4b342

File tree

1 file changed

+63
-60
lines changed

1 file changed

+63
-60
lines changed

chaincfg_fuzz_test.go

Lines changed: 63 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -6,67 +6,70 @@ import (
66

77
// FuzzGetChainParams fuzzes the GetChainParams function with various string inputs
88
func FuzzGetChainParams(f *testing.F) {
9-
// Add seed corpus with valid network names
10-
f.Add("mainnet")
11-
f.Add("testnet")
12-
f.Add("regtest")
13-
f.Add("stn")
14-
f.Add("teratestnet")
15-
f.Add("tstn")
16-
17-
// Add some edge cases
18-
f.Add("")
19-
f.Add(" ")
20-
f.Add("MAINNET")
21-
f.Add("invalid-network")
22-
f.Add("main net")
23-
f.Add("test-net")
24-
f.Add("🚀")
25-
f.Add("mainnet\x00")
26-
f.Add("mainnet\n")
27-
9+
addSeedCorpus(f)
10+
2811
f.Fuzz(func(t *testing.T, network string) {
2912
params, err := GetChainParams(network)
30-
31-
// Check that we either get a valid result or an error
32-
if err != nil {
33-
// If there's an error, params should be nil
34-
if params != nil {
35-
t.Errorf("GetChainParams(%q) returned non-nil params with error: %v", network, err)
36-
}
37-
} else {
38-
// If there's no error, params should not be nil
39-
if params == nil {
40-
t.Errorf("GetChainParams(%q) returned nil params without error", network)
41-
}
42-
43-
// Verify that valid networks return expected params
44-
switch network {
45-
case "mainnet":
46-
if params != &MainNetParams {
47-
t.Errorf("GetChainParams(%q) returned unexpected params", network)
48-
}
49-
case "testnet":
50-
if params != &TestNetParams {
51-
t.Errorf("GetChainParams(%q) returned unexpected params", network)
52-
}
53-
case "regtest":
54-
if params != &RegressionNetParams {
55-
t.Errorf("GetChainParams(%q) returned unexpected params", network)
56-
}
57-
case "stn":
58-
if params != &StnParams {
59-
t.Errorf("GetChainParams(%q) returned unexpected params", network)
60-
}
61-
case "teratestnet":
62-
if params != &TeraTestNetParams {
63-
t.Errorf("GetChainParams(%q) returned unexpected params", network)
64-
}
65-
case "tstn":
66-
if params != &TeraScalingTestNetParams {
67-
t.Errorf("GetChainParams(%q) returned unexpected params", network)
68-
}
69-
}
70-
}
13+
validateResult(t, network, params, err)
7114
})
7215
}
16+
17+
// addSeedCorpus adds valid and edge case inputs to the fuzz test corpus
18+
func addSeedCorpus(f *testing.F) {
19+
// Add seed corpus with valid network names
20+
validNetworks := []string{"mainnet", "testnet", "regtest", "stn", "teratestnet", "tstn"}
21+
for _, network := range validNetworks {
22+
f.Add(network)
23+
}
24+
25+
// Add some edge cases
26+
edgeCases := []string{"", " ", "MAINNET", "invalid-network", "main net", "test-net", "🚀", "mainnet\x00", "mainnet\n"}
27+
for _, edge := range edgeCases {
28+
f.Add(edge)
29+
}
30+
}
31+
32+
// validateResult checks that GetChainParams returns consistent results
33+
func validateResult(t *testing.T, network string, params *Params, err error) {
34+
if err != nil {
35+
// If there's an error, params should be nil
36+
if params != nil {
37+
t.Errorf("GetChainParams(%q) returned non-nil params with error: %v", network, err)
38+
}
39+
40+
return
41+
}
42+
43+
// If there's no error, params should not be nil
44+
if params == nil {
45+
t.Errorf("GetChainParams(%q) returned nil params without error", network)
46+
47+
return
48+
}
49+
50+
// Verify that valid networks return expected params
51+
expectedParams := getExpectedParams(network)
52+
if expectedParams != nil && params != expectedParams {
53+
t.Errorf("GetChainParams(%q) returned unexpected params", network)
54+
}
55+
}
56+
57+
// getExpectedParams returns the expected Params for known networks
58+
func getExpectedParams(network string) *Params {
59+
switch network {
60+
case "mainnet":
61+
return &MainNetParams
62+
case "testnet":
63+
return &TestNetParams
64+
case "regtest":
65+
return &RegressionNetParams
66+
case "stn":
67+
return &StnParams
68+
case "teratestnet":
69+
return &TeraTestNetParams
70+
case "tstn":
71+
return &TeraScalingTestNetParams
72+
default:
73+
return nil
74+
}
75+
}

0 commit comments

Comments
 (0)