forked from TrueCloudLab/neoneo-go
ddd1d92ff1
The idea here is to preserve the history of `dev` branch development and its code when merging with the `master`. Later this code could be moved into the masters code where appropriate.
80 lines
1.4 KiB
Go
80 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(),
|
|
}
|
|
}
|