go-ethereum/core/blockstm/status_test.go
2023-05-10 10:33:43 +05:30

82 lines
1.4 KiB
Go

package blockstm
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestStatusBasics(t *testing.T) {
t.Parallel()
s := makeStatusManager(10)
x := s.takeNextPending()
require.Equal(t, 0, x)
require.True(t, s.checkInProgress(x))
x = s.takeNextPending()
require.Equal(t, 1, x)
require.True(t, s.checkInProgress(x))
x = s.takeNextPending()
require.Equal(t, 2, x)
require.True(t, s.checkInProgress(x))
s.markComplete(0)
require.False(t, s.checkInProgress(0))
s.markComplete(1)
s.markComplete(2)
require.False(t, s.checkInProgress(1))
require.False(t, s.checkInProgress(2))
require.Equal(t, 2, s.maxAllComplete())
x = s.takeNextPending()
require.Equal(t, 3, x)
x = s.takeNextPending()
require.Equal(t, 4, x)
s.markComplete(x)
require.False(t, s.checkInProgress(4))
require.Equal(t, 2, s.maxAllComplete(), "zero should still be min complete")
exp := []int{1, 2}
require.Equal(t, exp, s.getRevalidationRange(1))
}
func TestMaxComplete(t *testing.T) {
t.Parallel()
s := makeStatusManager(10)
for {
tx := s.takeNextPending()
if tx == -1 {
break
}
if tx != 7 {
s.markComplete(tx)
}
}
require.Equal(t, 6, s.maxAllComplete())
s2 := makeStatusManager(10)
for {
tx := s2.takeNextPending()
if tx == -1 {
break
}
}
s2.markComplete(2)
s2.markComplete(4)
require.Equal(t, -1, s2.maxAllComplete())
s2.complete = insertInList(s2.complete, 4)
require.Equal(t, 2, s2.countComplete())
}