( t *testing.T, st *SlimTrie, keys []string, scanFromKeys []string, )
| 260 | |
| 261 | } |
| 262 | func subTestIter( |
| 263 | t *testing.T, |
| 264 | st *SlimTrie, |
| 265 | keys []string, |
| 266 | scanFromKeys []string, |
| 267 | ) { |
| 268 | t.Run("NewIter", func(t *testing.T) { |
| 269 | |
| 270 | ta := require.New(t) |
| 271 | |
| 272 | for _, sk := range scanFromKeys { |
| 273 | idx := sort.SearchStrings(keys, sk) |
| 274 | |
| 275 | { // test exclusive |
| 276 | nxt := st.NewIter(sk, false, true) |
| 277 | gotKey, _ := nxt() |
| 278 | if idx == len(keys) { |
| 279 | ta.Nil(gotKey, "newIter from: %s %v, idx: %d", sk, []byte(sk), idx) |
| 280 | } else { |
| 281 | if keys[idx] == sk { |
| 282 | ta.NotEqual([]byte(keys[idx]), gotKey, "newIter from: %s %v, idx: %d", sk, []byte(sk), idx) |
| 283 | } else { |
| 284 | ta.Equal([]byte(keys[idx]), gotKey, "newIter from: %s %v, idx: %d", sk, []byte(sk), idx) |
| 285 | } |
| 286 | } |
| 287 | } |
| 288 | |
| 289 | nxt := st.NewIter(sk, true, true) |
| 290 | |
| 291 | var i int32 |
| 292 | for i = int32(idx); i < int32(len(keys)) && i < int32(idx+200); i++ { |
| 293 | key := keys[i] |
| 294 | gotKey, gotVal := nxt() |
| 295 | ta.Equal([]byte(key), gotKey, "newIter from: %s %v, idx: %d", sk, []byte(sk), idx) |
| 296 | ta.Equal(st.encoder.Encode(i), gotVal, "newIter from: %s %v, idx: %d", sk, []byte(sk), idx) |
| 297 | } |
| 298 | if i == int32(len(keys)) { |
| 299 | ta.Nil(nxt()) |
| 300 | } |
| 301 | |
| 302 | { // newIter without yielding value |
| 303 | nxt := st.NewIter(sk, true, false) |
| 304 | _, gotVal := nxt() |
| 305 | ta.Nil(gotVal) |
| 306 | _, gotVal = nxt() |
| 307 | ta.Nil(gotVal) |
| 308 | } |
| 309 | } |
| 310 | }) |
| 311 | } |
| 312 | |
| 313 | func subTestScan( |
| 314 | t *testing.T, |
no test coverage detected