aboutsummaryrefslogtreecommitdiffstats
path: root/core/block_cache_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'core/block_cache_test.go')
-rw-r--r--core/block_cache_test.go48
1 files changed, 48 insertions, 0 deletions
diff --git a/core/block_cache_test.go b/core/block_cache_test.go
new file mode 100644
index 000000000..d4f610b71
--- /dev/null
+++ b/core/block_cache_test.go
@@ -0,0 +1,48 @@
+package core
+
+import (
+ "math/big"
+ "testing"
+
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core/types"
+)
+
+func newChain(size int) (chain []*types.Block) {
+ var parentHash common.Hash
+ for i := 0; i < size; i++ {
+ block := types.NewBlock(parentHash, common.Address{}, common.Hash{}, new(big.Int), 0, "")
+ block.Header().Number = big.NewInt(int64(i))
+ chain = append(chain, block)
+ parentHash = block.Hash()
+ }
+ return
+}
+
+func insertChainCache(cache *BlockCache, chain []*types.Block) {
+ for _, block := range chain {
+ cache.Push(block)
+ }
+}
+
+func TestNewBlockCache(t *testing.T) {
+ chain := newChain(3)
+ cache := NewBlockCache(2)
+ insertChainCache(cache, chain)
+
+ if cache.hashes[0] != chain[1].Hash() {
+ t.Error("oldest block incorrect")
+ }
+}
+
+func TestInclusion(t *testing.T) {
+ chain := newChain(3)
+ cache := NewBlockCache(3)
+ insertChainCache(cache, chain)
+
+ for _, block := range chain {
+ if b := cache.Get(block.Hash()); b == nil {
+ t.Errorf("getting %x failed", block.Hash())
+ }
+ }
+}