cosmos-sdk/store/types/store_test.go

93 lines
2.4 KiB
Go

package types
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestStoreUpgrades(t *testing.T) {
t.Parallel()
type toDelete struct {
key string
delete bool
}
type toRename struct {
newkey string
result string
}
cases := map[string]struct {
upgrades *StoreUpgrades
expectDelete []toDelete
expectRename []toRename
}{
"empty upgrade": {
expectDelete: []toDelete{{"foo", false}},
expectRename: []toRename{{"foo", ""}},
},
"simple matches": {
upgrades: &StoreUpgrades{
Deleted: []string{"foo"},
Renamed: []StoreRename{{"bar", "baz"}},
},
expectDelete: []toDelete{{"foo", true}, {"bar", false}, {"baz", false}},
expectRename: []toRename{{"foo", ""}, {"bar", ""}, {"baz", "bar"}},
},
"many data points": {
upgrades: &StoreUpgrades{
Deleted: []string{"one", "two", "three", "four", "five"},
Renamed: []StoreRename{{"old", "new"}, {"white", "blue"}, {"black", "orange"}, {"fun", "boring"}},
},
expectDelete: []toDelete{{"four", true}, {"six", false}, {"baz", false}},
expectRename: []toRename{{"white", ""}, {"blue", "white"}, {"boring", "fun"}, {"missing", ""}},
},
}
for name, tc := range cases {
tc := tc
t.Run(name, func(t *testing.T) {
for _, d := range tc.expectDelete {
assert.Equal(t, tc.upgrades.IsDeleted(d.key), d.delete)
}
for _, r := range tc.expectRename {
assert.Equal(t, tc.upgrades.RenamedFrom(r.newkey), r.result)
}
})
}
}
func TestCommitID(t *testing.T) {
t.Parallel()
require.True(t, CommitID{}.IsZero())
require.False(t, CommitID{Version: int64(1)}.IsZero())
require.False(t, CommitID{Hash: []byte("x")}.IsZero())
require.Equal(t, "CommitID{[120 120 120 120]:64}", CommitID{Version: int64(100), Hash: []byte("xxxx")}.String())
}
func TestKVStoreKey(t *testing.T) {
t.Parallel()
key := NewKVStoreKey("test")
require.Equal(t, "test", key.name)
require.Equal(t, key.name, key.Name())
require.Equal(t, fmt.Sprintf("KVStoreKey{%p, test}", key), key.String())
}
func TestNilKVStoreKey(t *testing.T) {
t.Parallel()
require.Panics(t, func() {
_ = NewKVStoreKey("")
}, "setting an empty key should panic")
}
func TestTransientStoreKey(t *testing.T) {
t.Parallel()
key := NewTransientStoreKey("test")
require.Equal(t, "test", key.name)
require.Equal(t, key.name, key.Name())
require.Equal(t, fmt.Sprintf("TransientStoreKey{%p, test}", key), key.String())
}