package mempool
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestCacheRemove(t *testing.T) {
|
|
cache := NewLRUTxCache(100)
|
|
numTxs := 10
|
|
|
|
txs := make([][]byte, numTxs)
|
|
for i := 0; i < numTxs; i++ {
|
|
// probability of collision is 2**-256
|
|
txBytes := make([]byte, 32)
|
|
_, err := rand.Read(txBytes)
|
|
require.NoError(t, err)
|
|
|
|
txs[i] = txBytes
|
|
cache.Push(txBytes)
|
|
|
|
// make sure its added to both the linked list and the map
|
|
require.Equal(t, i+1, len(cache.cacheMap))
|
|
require.Equal(t, i+1, cache.list.Len())
|
|
}
|
|
|
|
for i := 0; i < numTxs; i++ {
|
|
cache.Remove(txs[i])
|
|
// make sure its removed from both the map and the linked list
|
|
require.Equal(t, numTxs-(i+1), len(cache.cacheMap))
|
|
require.Equal(t, numTxs-(i+1), cache.list.Len())
|
|
}
|
|
}
|