Example #1
0
int test_sky_path_iterator_single_block_next() {
    loadtmp("tests/fixtures/path_iterator/0");
    int rc;
    void *block_ptr, *ptr;
    sky_data_file *data_file = sky_data_file_create();
    data_file->path = bfromcstr("tmp/data");
    data_file->header_path = bfromcstr("tmp/header");
    sky_data_file_load(data_file);

    sky_block_get_ptr(data_file->blocks[0], &block_ptr);
    
    sky_path_iterator *iterator = sky_path_iterator_create();
    sky_path_iterator_set_block(iterator, data_file->blocks[0]);
    mu_assert(iterator->block == data_file->blocks[0], "");
    mu_assert(iterator->data_file == NULL, "");
    mu_assert_int_equals(iterator->block_index, 0);

    // Path 1
    rc = sky_path_iterator_get_ptr(iterator, &ptr);
    mu_assert_int_equals(rc, 0);
    mu_assert_long_equals(ptr-block_ptr, 0L);
    mu_assert_bool(!iterator->eof);

    // Path 2
    rc = sky_path_iterator_next(iterator);
    mu_assert_int_equals(rc, 0);
    mu_assert_int_equals(iterator->byte_index, 19);
    mu_assert_bool(!iterator->eof);
    rc = sky_path_iterator_get_ptr(iterator, &ptr);
    mu_assert_int_equals(rc, 0);
    mu_assert_long_equals(ptr-block_ptr, 19L);
    
    // Path 3
    rc = sky_path_iterator_next(iterator);
    mu_assert_int_equals(rc, 0);
    mu_assert_int_equals(iterator->byte_index, 47);
    mu_assert_bool(!iterator->eof);
    rc = sky_path_iterator_get_ptr(iterator, &ptr);
    mu_assert_int_equals(rc, 0);
    mu_assert_long_equals(ptr-block_ptr, 47L);
    
    // EOF
    rc = sky_path_iterator_next(iterator);
    mu_assert_int_equals(rc, 0);
    mu_assert_int_equals(iterator->byte_index, 0);
    mu_assert_bool(iterator->eof);

    sky_path_iterator_free(iterator);
    sky_data_file_free(data_file);
    return 0;
}
Example #2
0
int test_sky_block_get_ptr() {
    uint8_t x;
    sky_data_file *data_file = sky_data_file_create();
    data_file->block_size = 128;
    data_file->data = (void*)&x;
    sky_block *block = sky_block_create(data_file);
    block->index = 3;
    
    void *ptr;
    int rc = sky_block_get_ptr(block, &ptr);
    mu_assert_int_equals(rc, 0);
    mu_assert_long_equals(ptr-((void*)&x), 384L);
    sky_data_file_free(data_file);
    sky_block_free(block);
    return 0;
}