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

Function test_reftable_block__iterator

t/unit-tests/u-reftable-block.c:381–458  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

379}
380
381void test_reftable_block__iterator(void)
382{
383 struct reftable_block_source source = { 0 };
384 struct block_writer writer = {
385 .last_key = REFTABLE_BUF_INIT,
386 };
387 struct reftable_record expected_refs[20];
388 struct reftable_ref_record ref = { 0 };
389 struct reftable_iterator it = { 0 };
390 struct reftable_block block = { 0 };
391 struct reftable_buf data;
392 int err;
393
394 data.len = 1024;
395 REFTABLE_CALLOC_ARRAY(data.buf, data.len);
396 cl_assert(data.buf != NULL);
397
398 err = block_writer_init(&writer, REFTABLE_BLOCK_TYPE_REF,
399 (uint8_t *) data.buf, data.len,
400 0, hash_size(REFTABLE_HASH_SHA1));
401 cl_assert(!err);
402
403 for (size_t i = 0; i < ARRAY_SIZE(expected_refs); i++) {
404 expected_refs[i] = (struct reftable_record) {
405 .type = REFTABLE_BLOCK_TYPE_REF,
406 .u.ref = {
407 .value_type = REFTABLE_REF_VAL1,
408 .refname = xstrfmt("refs/heads/branch-%02"PRIuMAX, (uintmax_t)i),
409 },
410 };
411 memset(expected_refs[i].u.ref.value.val1, i, REFTABLE_HASH_SIZE_SHA1);
412
413 err = block_writer_add(&writer, &expected_refs[i]);
414 cl_assert_equal_i(err, 0);
415 }
416
417 err = block_writer_finish(&writer);
418 cl_assert(err > 0);
419
420 block_source_from_buf(&source, &data);
421 reftable_block_init(&block, &source, 0, 0, data.len,
422 REFTABLE_HASH_SIZE_SHA1, REFTABLE_BLOCK_TYPE_REF);
423
424 err = reftable_block_init_iterator(&block, &it);
425 cl_assert_equal_i(err, 0);
426
427 for (size_t i = 0; ; i++) {
428 err = reftable_iterator_next_ref(&it, &ref);
429 if (err > 0) {
430 cl_assert_equal_i(i, ARRAY_SIZE(expected_refs));
431 break;
432 }
433 cl_assert_equal_i(err, 0);
434
435 cl_assert(reftable_ref_record_equal(&ref,
436 &expected_refs[i].u.ref, REFTABLE_HASH_SIZE_SHA1));
437 }
438

Callers

nothing calls this directly

Calls 15

block_writer_initFunction · 0.85
hash_sizeFunction · 0.85
xstrfmtFunction · 0.85
block_writer_addFunction · 0.85
block_writer_finishFunction · 0.85
block_source_from_bufFunction · 0.85
reftable_block_initFunction · 0.85
reftable_freeFunction · 0.85

Tested by

no test coverage detected