|
|
|
@ -78,15 +78,38 @@ func (tm *TestManager) CreateChain2() error { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestBlockChainReorg(t *testing.T) { |
|
|
|
|
func TestNegativeBlockChainReorg(t *testing.T) { |
|
|
|
|
// We are resetting the database between creation so we need to cache our information
|
|
|
|
|
testManager2 := NewTestManager() |
|
|
|
|
testManager2.CreateChain2() |
|
|
|
|
tm2Blocks := testManager2.Blocks |
|
|
|
|
|
|
|
|
|
testManager := NewTestManager() |
|
|
|
|
testManager.CreateChain1() |
|
|
|
|
oldState := testManager.BlockChain().CurrentBlock.State() |
|
|
|
|
|
|
|
|
|
if testManager.BlockChain().FindCanonicalChain(tm2Blocks, testManager.BlockChain().GenesisBlock().Hash()) != true { |
|
|
|
|
t.Error("I expected TestManager to have the longest chain, but it was TestManager2 instead.") |
|
|
|
|
} |
|
|
|
|
if testManager.BlockChain().CurrentBlock.State() != oldState { |
|
|
|
|
t.Error("I expected the top state to be the same as it was as before the reorg") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func TestPositiveBlockChainReorg(t *testing.T) { |
|
|
|
|
testManager := NewTestManager() |
|
|
|
|
testManager.CreateChain1() |
|
|
|
|
tm1Blocks := testManager.Blocks |
|
|
|
|
|
|
|
|
|
testManager2 := NewTestManager() |
|
|
|
|
testManager2.CreateChain2() |
|
|
|
|
oldState := testManager2.BlockChain().CurrentBlock.State() |
|
|
|
|
|
|
|
|
|
// This fails because we keep resetting the DB
|
|
|
|
|
block := testManager.BlockChain().GetBlock(testManager.BlockChain().CurrentBlock.PrevHash) |
|
|
|
|
fmt.Println(block) |
|
|
|
|
//testManager.BlockChain().FindCanonicalChain(testManager2.Blocks, testManager.BlockChain().GenesisBlock().Hash())
|
|
|
|
|
|
|
|
|
|
if testManager2.BlockChain().FindCanonicalChain(tm1Blocks, testManager.BlockChain().GenesisBlock().Hash()) == true { |
|
|
|
|
t.Error("I expected TestManager to have the longest chain, but it was TestManager2 instead.") |
|
|
|
|
} |
|
|
|
|
if testManager2.BlockChain().CurrentBlock.State() == oldState { |
|
|
|
|
t.Error("I expected the top state to have been modified but it was not") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|