Skip to content
This repository was archived by the owner on Aug 2, 2021. It is now read-only.

Commit d4216f0

Browse files
committed
shed: comprehensive test for Index.Offset
Even more complicated test - assumes that there are multiple indexes in database (there are many index prefixes), including empty index. There are test cases that checks both positive and erroneous scenarios. Tests are failing, as implementation is incorrect (in many ways).
1 parent fd6e6a3 commit d4216f0

File tree

1 file changed

+39
-7
lines changed

1 file changed

+39
-7
lines changed

shed/index_test.go

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1120,19 +1120,29 @@ func generateItems(n int) []Item {
11201120
}
11211121

11221122
func TestIndexOffset(t *testing.T) {
1123-
t.Parallel()
1124-
11251123
db, cleanupFunc := newTestDB(t)
11261124
defer cleanupFunc()
11271125

1128-
index, err := db.NewIndex("retrieval", retrievalIndexFuncs)
1126+
index1, err := db.NewIndex("test1", retrievalIndexFuncs)
1127+
if err != nil {
1128+
t.Fatal(err)
1129+
}
1130+
1131+
index2, err := db.NewIndex("test2", retrievalIndexFuncs)
1132+
if err != nil {
1133+
t.Fatal(err)
1134+
}
1135+
1136+
index3, err := db.NewIndex("test3", retrievalIndexFuncs)
11291137
if err != nil {
11301138
t.Fatal(err)
11311139
}
11321140

11331141
items := generateItems(100)
11341142
for _, item := range items {
1135-
index.Put(item)
1143+
index1.Put(item)
1144+
index2.Put(item)
1145+
index3.Put(item)
11361146
}
11371147

11381148
tests := []struct {
@@ -1152,25 +1162,47 @@ func TestIndexOffset(t *testing.T) {
11521162

11531163
for _, tc := range tests {
11541164
t.Run(fmt.Sprintf("%d_%d", tc.start, tc.offset), func(tt *testing.T) {
1155-
item, err := index.Offset(&items[tc.start], int64(tc.offset))
1165+
item, err := index1.Offset(&items[tc.start], int64(tc.offset))
1166+
if err != nil {
1167+
tt.Error(err)
1168+
}
1169+
checkItem(tt, item, items[tc.start+tc.offset])
1170+
1171+
item, err = index2.Offset(&items[tc.start], int64(tc.offset))
1172+
if err != nil {
1173+
tt.Error(err)
1174+
}
1175+
checkItem(tt, item, items[tc.start+tc.offset])
1176+
1177+
item, err = index3.Offset(&items[tc.start], int64(tc.offset))
11561178
if err != nil {
11571179
tt.Error(err)
11581180
}
11591181
checkItem(tt, item, items[tc.start+tc.offset])
11601182
})
11611183
}
11621184

1163-
// special cases
1185+
// special cases - testing all indexes, to catch all edge cases
11641186
tests = []struct {
11651187
start, offset int
11661188
}{
11671189
{0, -1},
11681190
{len(items) - 1, 1},
1191+
{0, -1000},
1192+
{len(items) - 1, 1000},
11691193
}
11701194

11711195
for _, tc := range tests {
11721196
t.Run(fmt.Sprintf("%d_%d", tc.start, tc.offset), func(tt *testing.T) {
1173-
_, err := index.Offset(&items[tc.start], int64(tc.offset))
1197+
_, err := index1.Offset(&items[tc.start], int64(tc.offset))
1198+
if err == nil {
1199+
tt.Error("expected error")
1200+
}
1201+
_, err = index2.Offset(&items[tc.start], int64(tc.offset))
1202+
if err == nil {
1203+
tt.Error("expected error")
1204+
}
1205+
_, err = index3.Offset(&items[tc.start], int64(tc.offset))
11741206
if err == nil {
11751207
tt.Error("expected error")
11761208
}

0 commit comments

Comments
 (0)