@@ -6,67 +6,70 @@ import (
66
77// FuzzGetChainParams fuzzes the GetChainParams function with various string inputs
88func 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