forked from TrueCloudLab/neoneo-go
81 lines
1.4 KiB
Go
81 lines
1.4 KiB
Go
|
package peermgr
|
||
|
|
||
|
import (
|
||
|
"math/rand"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/CityOfZion/neo-go/pkg/wire/util"
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func TestAddBlock(t *testing.T) {
|
||
|
|
||
|
bc := &blockCache{
|
||
|
cacheLimit: 20,
|
||
|
}
|
||
|
bi := randomBlockInfo(t)
|
||
|
|
||
|
err := bc.addBlockInfo(bi)
|
||
|
assert.Equal(t, nil, err)
|
||
|
|
||
|
assert.Equal(t, 1, bc.cacheLen())
|
||
|
|
||
|
err = bc.addBlockInfo(bi)
|
||
|
assert.Equal(t, ErrDuplicateItem, err)
|
||
|
|
||
|
assert.Equal(t, 1, bc.cacheLen())
|
||
|
}
|
||
|
|
||
|
func TestCacheLimit(t *testing.T) {
|
||
|
|
||
|
bc := &blockCache{
|
||
|
cacheLimit: 20,
|
||
|
}
|
||
|
|
||
|
for i := 0; i < bc.cacheLimit; i++ {
|
||
|
err := bc.addBlockInfo(randomBlockInfo(t))
|
||
|
assert.Equal(t, nil, err)
|
||
|
}
|
||
|
|
||
|
err := bc.addBlockInfo(randomBlockInfo(t))
|
||
|
assert.Equal(t, ErrCacheLimit, err)
|
||
|
|
||
|
assert.Equal(t, bc.cacheLimit, bc.cacheLen())
|
||
|
}
|
||
|
func TestPickItem(t *testing.T) {
|
||
|
|
||
|
bc := &blockCache{
|
||
|
cacheLimit: 20,
|
||
|
}
|
||
|
|
||
|
for i := 0; i < bc.cacheLimit; i++ {
|
||
|
err := bc.addBlockInfo(randomBlockInfo(t))
|
||
|
assert.Equal(t, nil, err)
|
||
|
}
|
||
|
|
||
|
for i := 0; i < bc.cacheLimit; i++ {
|
||
|
_, err := bc.pickFirstItem()
|
||
|
assert.Equal(t, nil, err)
|
||
|
}
|
||
|
|
||
|
assert.Equal(t, 0, bc.cacheLen())
|
||
|
}
|
||
|
|
||
|
func randomUint256(t *testing.T) util.Uint256 {
|
||
|
rand32 := make([]byte, 32)
|
||
|
rand.Read(rand32)
|
||
|
|
||
|
u, err := util.Uint256DecodeBytes(rand32)
|
||
|
assert.Equal(t, nil, err)
|
||
|
|
||
|
return u
|
||
|
}
|
||
|
|
||
|
func randomBlockInfo(t *testing.T) BlockInfo {
|
||
|
|
||
|
return BlockInfo{
|
||
|
randomUint256(t),
|
||
|
rand.Uint32(),
|
||
|
}
|
||
|
}
|