lbcd/claimtrie/temporal/temporalrepo/temporalrepo_test.go

81 lines
1.5 KiB
Go
Raw Normal View History

package temporalrepo
import (
"testing"
"github.com/lbryio/lbcd/claimtrie/temporal"
"github.com/stretchr/testify/require"
)
func TestMemory(t *testing.T) {
repo := NewMemory()
testTemporalRepo(t, repo)
}
func TestPebble(t *testing.T) {
repo, err := NewPebble(t.TempDir())
require.NoError(t, err)
testTemporalRepo(t, repo)
}
func testTemporalRepo(t *testing.T, repo temporal.Repo) {
r := require.New(t)
nameA := []byte("a")
nameB := []byte("b")
nameC := []byte("c")
testcases := []struct {
name []byte
heights []int32
}{
{nameA, []int32{1, 3, 2}},
{nameA, []int32{2, 3}},
{nameB, []int32{5, 4}},
{nameB, []int32{5, 1}},
{nameC, []int32{4, 3, 8}},
}
for _, i := range testcases {
names := make([][]byte, 0, len(i.heights))
for range i.heights {
names = append(names, i.name)
}
err := repo.SetNodesAt(names, i.heights)
r.NoError(err)
}
// a: 1, 2, 3
// b: 1, 5, 4
// c: 4, 3, 8
names, err := repo.NodesAt(2)
r.NoError(err)
r.ElementsMatch([][]byte{nameA}, names)
names, err = repo.NodesAt(5)
r.NoError(err)
r.ElementsMatch([][]byte{nameB}, names)
names, err = repo.NodesAt(8)
r.NoError(err)
r.ElementsMatch([][]byte{nameC}, names)
names, err = repo.NodesAt(1)
r.NoError(err)
r.ElementsMatch([][]byte{nameA, nameB}, names)
names, err = repo.NodesAt(4)
r.NoError(err)
r.ElementsMatch([][]byte{nameB, nameC}, names)
names, err = repo.NodesAt(3)
r.NoError(err)
r.ElementsMatch([][]byte{nameA, nameC}, names)
}