mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-28 07:36:44 +00:00
82 lines
1.4 KiB
Go
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())
|
|
}
|