MCPcopy
hub / github.com/openacid/slim / subTestIter

Function subTestIter

trie/slimtrie_scan_test.go:262–311  ·  view source on GitHub ↗
(
	t *testing.T,
	st *SlimTrie,
	keys []string,
	scanFromKeys []string,
)

Source from the content-addressed store, hash-verified

260
261}
262func 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
313func subTestScan(
314 t *testing.T,

Callers 3

TestSlimTrie_IterFunction · 0.85
TestSlimTrie_Iter_largeFunction · 0.85

Calls 2

NewIterMethod · 0.80
EncodeMethod · 0.65

Tested by

no test coverage detected