46 lines
1.4 KiB
Go
46 lines
1.4 KiB
Go
//stm: #unit
|
|
package headbuffer
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/filecoin-project/lotus/api"
|
|
)
|
|
|
|
func TestHeadBuffer(t *testing.T) {
|
|
//stm: @TOOLS_HEAD_BUFFER_PUSH_001, @TOOLS_HEAD_BUFFER_POP_001
|
|
t.Run("Straight Push through", func(t *testing.T) {
|
|
hb := NewHeadChangeStackBuffer(5)
|
|
require.Nil(t, hb.Push(&api.HeadChange{Type: "1"}))
|
|
require.Nil(t, hb.Push(&api.HeadChange{Type: "2"}))
|
|
require.Nil(t, hb.Push(&api.HeadChange{Type: "3"}))
|
|
require.Nil(t, hb.Push(&api.HeadChange{Type: "4"}))
|
|
require.Nil(t, hb.Push(&api.HeadChange{Type: "5"}))
|
|
|
|
hc := hb.Push(&api.HeadChange{Type: "6"})
|
|
require.Equal(t, hc.Type, "1")
|
|
})
|
|
|
|
t.Run("Reverts", func(t *testing.T) {
|
|
hb := NewHeadChangeStackBuffer(5)
|
|
require.Nil(t, hb.Push(&api.HeadChange{Type: "1"}))
|
|
require.Nil(t, hb.Push(&api.HeadChange{Type: "2"}))
|
|
require.Nil(t, hb.Push(&api.HeadChange{Type: "3"}))
|
|
hb.Pop()
|
|
require.Nil(t, hb.Push(&api.HeadChange{Type: "3a"}))
|
|
hb.Pop()
|
|
require.Nil(t, hb.Push(&api.HeadChange{Type: "3b"}))
|
|
require.Nil(t, hb.Push(&api.HeadChange{Type: "4"}))
|
|
require.Nil(t, hb.Push(&api.HeadChange{Type: "5"}))
|
|
|
|
hc := hb.Push(&api.HeadChange{Type: "6"})
|
|
require.Equal(t, hc.Type, "1")
|
|
hc = hb.Push(&api.HeadChange{Type: "7"})
|
|
require.Equal(t, hc.Type, "2")
|
|
hc = hb.Push(&api.HeadChange{Type: "8"})
|
|
require.Equal(t, hc.Type, "3b")
|
|
})
|
|
}
|