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; }
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; }