cosmos-sdk/blockstm/utils_test.go
Eric Warehime 825fd62088
feat: Upstream BlockSTM Fork (#25483)
Co-authored-by: yihuang <huang@crypto.com>
Co-authored-by: mmsqe <mavis@crypto.com>
Co-authored-by: mmsqe <tqd0800210105@gmail.com>
Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com>
2025-10-24 15:51:57 +00:00

82 lines
1.4 KiB
Go

package blockstm
import (
"testing"
"github.com/test-go/testify/require"
)
type DiffEntry struct {
Key Key
IsNew bool
}
func TestDiffOrderedList(t *testing.T) {
testCases := []struct {
name string
old []Key
new []Key
expected []DiffEntry
}{
{
name: "empty lists",
old: []Key{},
new: []Key{},
expected: []DiffEntry{},
},
{
name: "old is longer",
old: []Key{
[]byte("a"),
[]byte("b"),
[]byte("c"),
[]byte("d"),
[]byte("e"),
},
new: []Key{
[]byte("b"),
[]byte("c"),
[]byte("f"),
},
expected: []DiffEntry{
{Key: []byte("a"), IsNew: false},
{Key: []byte("d"), IsNew: false},
{Key: []byte("e"), IsNew: false},
{Key: []byte("f"), IsNew: true},
},
},
{
name: "new is longer",
old: []Key{
[]byte("a"),
[]byte("c"),
[]byte("e"),
},
new: []Key{
[]byte("b"),
[]byte("c"),
[]byte("d"),
[]byte("e"),
[]byte("f"),
},
expected: []DiffEntry{
{Key: []byte("a"), IsNew: false},
{Key: []byte("b"), IsNew: true},
{Key: []byte("d"), IsNew: true},
{Key: []byte("f"), IsNew: true},
},
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
result := []DiffEntry{}
DiffOrderedList(tc.old, tc.new, func(key Key, leftOrRight bool) bool {
result = append(result, DiffEntry{key, leftOrRight})
return true
})
require.Equal(t, tc.expected, result)
})
}
}