85 lines
2.3 KiB
Go
85 lines
2.3 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 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())
|
|
}
|