public void TestRemoveBlock()
{
var fakeHeaders = new FakeHeaders();
var header0 = fakeHeaders.GenesisChained();
var header1 = fakeHeaders.NextChained();
var chainBuilder = new ChainBuilder(new[] { header0, header1 });
// remove header 1 and verify
chainBuilder.RemoveBlock(header1);
CollectionAssert.AreEqual(new[] { header0 }, chainBuilder.Blocks);
CollectionAssert.AreEquivalent(new Dictionary<UInt256, ChainedHeader> { { header0.Hash, header0 } }, chainBuilder.BlocksByHash);
// remove header 0 and verify
chainBuilder.RemoveBlock(header0);
Assert.AreEqual(0, chainBuilder.Blocks.Count);
Assert.AreEqual(0, chainBuilder.BlocksByHash.Count);
}