void DjVuFileCache::enable(bool en) { enabled=en; set_max_size(max_size); }
// Alignment void align(size_t alignment) { set_init_size(align_size_up(init_size(), alignment)); set_max_size(align_size_up(max_size(), alignment)); }
void SetTest::testCAPI() { SET localset; SET remoteset; SET_CONFIG localconfig = set_create_config(); SET_CONFIG remoteconfig = set_create_config(); CPPUNIT_ASSERT(set_init(&localset,localconfig) == 0); CPPUNIT_ASSERT(set_init(&remoteset,remoteconfig) == 0); CPPUNIT_ASSERT(set_empty(&localset)); CPPUNIT_ASSERT(set_empty(&remoteset)); CPPUNIT_ASSERT(set_max_size(&localset) == localconfig.bf_max_elements); CPPUNIT_ASSERT(set_max_size(&remoteset) == remoteconfig.bf_max_elements); CPPUNIT_ASSERT(set_size(&localset) == 0); CPPUNIT_ASSERT(set_size(&remoteset) == 0); CPPUNIT_ASSERT(set_insert_string(&localset, "bla1")); CPPUNIT_ASSERT(set_insert_string(&remoteset, "bla2")); CPPUNIT_ASSERT(set_size(&localset) == 1); CPPUNIT_ASSERT(set_size(&remoteset) == 1); CPPUNIT_ASSERT(set_find_string(&localset, "bla1")); CPPUNIT_ASSERT(set_find_string(&remoteset, "bla2")); CPPUNIT_ASSERT(!set_find_string(&localset, "bla2")); CPPUNIT_ASSERT(!set_find_string(&remoteset, "bla1")); CPPUNIT_ASSERT(set_insert_string(&localset, "bla3")); CPPUNIT_ASSERT(set_size(&localset) == 2); CPPUNIT_ASSERT(set_erase_string(&localset, "bla3")); CPPUNIT_ASSERT(set_size(&localset) == 1); SET_SYNC_HANDLE localprocess; SET_SYNC_HANDLE remoteprocess; set_sync_init_handle(&localset, &localprocess); set_sync_init_handle(&remoteset, &remoteprocess); CPPUNIT_ASSERT(!set_sync_done(&localprocess)); CPPUNIT_ASSERT(!set_sync_done(&remoteprocess)); CPPUNIT_ASSERT(set_sync_min_bf_buffer(&localprocess)==1); CPPUNIT_ASSERT(set_sync_min_trie_buffer(&localprocess)==20*2); CPPUNIT_ASSERT(set_sync_min_trie_buffer(&localprocess)<=set_sync_min_buffer(&localprocess)); // BF Sync std::size_t buffersize = 100; unsigned char buffer[buffersize]; std::size_t sending; diff_callback * callback = &localset_callback; while (set_sync_bf_output_avail(&localprocess) == 1) { sending = set_sync_bf_read_next_chunk(&localprocess, buffer, buffersize); set_sync_bf_process_chunk(&remoteprocess, buffer, sending, callback, &localset); } while (set_sync_bf_output_avail(&remoteprocess) == 1) { sending = set_sync_bf_read_next_chunk(&remoteprocess, buffer, buffersize); set_sync_bf_process_chunk(&localprocess, buffer, sending, callback, &remoteset); } // BF SYNC DONE AND SET SHOULD BE EQUAL, SO ADDING A DIFF CPPUNIT_ASSERT(set_insert_string(&localset, "diff")); // Trie Sync size_t treecutsize = 2 * 20; unsigned char treecut[treecutsize]; size_t subtriesize; std::size_t ackbuffersize = 20; unsigned char ackbuffer[ackbuffersize]; std::size_t numberOfAcks; std::size_t acksize; while (!set_sync_done(&localprocess) && !set_sync_done(&remoteprocess)) { if (set_sync_trie_subtrie_output_avail(&localprocess)) { subtriesize = set_sync_trie_get_subtrie(&localprocess, treecut, treecutsize); CPPUNIT_ASSERT(subtriesize > 0); acksize = set_sync_trie_process_subtrie(&remoteprocess, treecut, subtriesize); CPPUNIT_ASSERT(acksize > 0); } if (set_sync_trie_acks_avail(&localprocess)) { acksize = set_sync_trie_read_acks(&localprocess, ackbuffer, ackbuffersize, &numberOfAcks); CPPUNIT_ASSERT(numberOfAcks > 0); CPPUNIT_ASSERT(acksize > 0); set_sync_trie_process_acks(&remoteprocess, ackbuffer, acksize, numberOfAcks, callback, &localset); } if (set_sync_trie_subtrie_output_avail(&remoteprocess)) { subtriesize = set_sync_trie_get_subtrie(&remoteprocess, treecut, treecutsize); CPPUNIT_ASSERT(subtriesize > 0); acksize = set_sync_trie_process_subtrie(&localprocess, treecut, subtriesize); CPPUNIT_ASSERT(acksize > 0); } if (set_sync_trie_acks_avail(&remoteprocess)) { acksize = set_sync_trie_read_acks(&remoteprocess, ackbuffer, ackbuffersize, &numberOfAcks); CPPUNIT_ASSERT(numberOfAcks > 0); CPPUNIT_ASSERT(acksize > 0); set_sync_trie_process_acks(&localprocess, ackbuffer, acksize, numberOfAcks, callback, &remoteset); } } // TRIES SHOULD BE EQUAL -> TEST IT unsigned char localroot[20]; unsigned char remoteroot[20]; CPPUNIT_ASSERT(set_sync_get_root_hash(&localprocess, localroot)==0); CPPUNIT_ASSERT(set_sync_get_root_hash(&remoteprocess, remoteroot)==0); CPPUNIT_ASSERT(set_sync_is_equal_to_hash(&localprocess,remoteroot)); CPPUNIT_ASSERT(set_sync_is_equal_to_hash(&remoteprocess,localroot)); // TRANSMITTED DATA TEST CPPUNIT_ASSERT(set_sync_received_bytes(&localprocess) == set_sync_sent_bytes(&remoteprocess)); CPPUNIT_ASSERT(set_sync_received_bytes(&remoteprocess) == set_sync_sent_bytes(&localprocess)); CPPUNIT_ASSERT(set_sync_free_handle(&localprocess)==0); CPPUNIT_ASSERT(set_sync_free_handle(&remoteprocess)==0); CPPUNIT_ASSERT(set_free(&localset)==0); CPPUNIT_ASSERT(set_free(&remoteset)==0); }