12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- // Copyright 2017 The go-ethereum Authors
- // This file is part of the go-ethereum library.
- //
- // The go-ethereum library is free software: you can redistribute it and/or modify
- // it under the terms of the GNU Lesser General Public License as published by
- // the Free Software Foundation, either version 3 of the License, or
- // (at your option) any later version.
- //
- // The go-ethereum library is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- // GNU Lesser General Public License for more details.
- //
- // You should have received a copy of the GNU Lesser General Public License
- // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
- 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)
- }
- }
- }
|