You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.7 KiB
65 lines
1.7 KiB
package params
|
|
|
|
import (
|
|
"math/big"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestCheckCompatible(t *testing.T) {
|
|
type test struct {
|
|
stored, new *ChainConfig
|
|
head uint64
|
|
wantErr *ConfigCompatError
|
|
}
|
|
tests := []test{
|
|
{stored: AllEthashProtocolChanges, new: AllEthashProtocolChanges, head: 0, wantErr: nil},
|
|
{stored: AllEthashProtocolChanges, new: AllEthashProtocolChanges, head: 100, wantErr: nil},
|
|
{
|
|
stored: &ChainConfig{EIP150Block: big.NewInt(10)},
|
|
new: &ChainConfig{EIP150Block: big.NewInt(20)},
|
|
head: 9,
|
|
wantErr: nil,
|
|
},
|
|
{
|
|
stored: AllEthashProtocolChanges,
|
|
new: &ChainConfig{HomesteadBlock: nil},
|
|
head: 3,
|
|
wantErr: &ConfigCompatError{
|
|
What: "Homestead fork block",
|
|
StoredConfig: big.NewInt(0),
|
|
NewConfig: nil,
|
|
RewindTo: 0,
|
|
},
|
|
},
|
|
{
|
|
stored: AllEthashProtocolChanges,
|
|
new: &ChainConfig{HomesteadBlock: big.NewInt(1)},
|
|
head: 3,
|
|
wantErr: &ConfigCompatError{
|
|
What: "Homestead fork block",
|
|
StoredConfig: big.NewInt(0),
|
|
NewConfig: big.NewInt(1),
|
|
RewindTo: 0,
|
|
},
|
|
},
|
|
{
|
|
stored: &ChainConfig{HomesteadBlock: big.NewInt(30), EIP150Block: big.NewInt(10)},
|
|
new: &ChainConfig{HomesteadBlock: big.NewInt(25), EIP150Block: big.NewInt(20)},
|
|
head: 25,
|
|
wantErr: &ConfigCompatError{
|
|
What: "EIP150 fork block",
|
|
StoredConfig: big.NewInt(10),
|
|
NewConfig: big.NewInt(20),
|
|
RewindTo: 9,
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
err := test.stored.CheckCompatible(test.new, test.head)
|
|
if !reflect.DeepEqual(err, test.wantErr) {
|
|
t.Errorf("error mismatch:\nstored: %v\nnew: %v\nhead: %v\nerr: %v\nwant: %v", test.stored, test.new, test.head, err, test.wantErr)
|
|
}
|
|
}
|
|
}
|
|
|