MCPcopy Create free account
hub / github.com/git/git / t_table_read_write_seek

Function t_table_read_write_seek

t/unit-tests/u-reftable-readwrite.c:439–503  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

437}
438
439static void t_table_read_write_seek(int index, enum reftable_hash hash_id)
440{
441 char **names;
442 struct reftable_buf buf = REFTABLE_BUF_INIT;
443 int N = 50;
444 struct reftable_table *table;
445 struct reftable_block_source source = { 0 };
446 int err;
447 int i = 0;
448
449 struct reftable_iterator it = { 0 };
450 struct reftable_buf pastLast = REFTABLE_BUF_INIT;
451 struct reftable_ref_record ref = { 0 };
452
453 write_table(&names, &buf, N, 256, hash_id);
454
455 block_source_from_buf(&source, &buf);
456
457 err = reftable_table_new(&table, &source, "file.ref");
458 cl_assert(!err);
459 cl_assert_equal_i(hash_id, reftable_table_hash_id(table));
460
461 if (!index) {
462 table->ref_offsets.index_offset = 0;
463 } else {
464 cl_assert(table->ref_offsets.index_offset > 0);
465 }
466
467 for (i = 1; i < N; i++) {
468 err = reftable_table_init_ref_iterator(table, &it);
469 cl_assert(!err);
470 err = reftable_iterator_seek_ref(&it, names[i]);
471 cl_assert(!err);
472 err = reftable_iterator_next_ref(&it, &ref);
473 cl_assert(!err);
474 cl_assert_equal_s(names[i], ref.refname);
475 cl_assert_equal_i(REFTABLE_REF_VAL1, ref.value_type);
476 cl_assert_equal_i(i, ref.value.val1[0]);
477
478 reftable_ref_record_release(&ref);
479 reftable_iterator_destroy(&it);
480 }
481
482 cl_assert_equal_i(reftable_buf_addstr(&pastLast, names[N - 1]),
483 0);
484 cl_assert_equal_i(reftable_buf_addstr(&pastLast, "/"), 0);
485
486 err = reftable_table_init_ref_iterator(table, &it);
487 cl_assert(!err);
488 err = reftable_iterator_seek_ref(&it, pastLast.buf);
489 if (err == 0) {
490 struct reftable_ref_record ref = { 0 };
491 int err = reftable_iterator_next_ref(&it, &ref);
492 cl_assert(err > 0);
493 } else {
494 cl_assert(err > 0);
495 }
496

Calls 13

write_tableFunction · 0.85
block_source_from_bufFunction · 0.85
reftable_table_newFunction · 0.85
reftable_table_hash_idFunction · 0.85
reftable_buf_addstrFunction · 0.85
reftable_buf_releaseFunction · 0.85
free_namesFunction · 0.85