diff --git a/tests/bloom_test.cpp b/tests/bloom_test.cpp new file mode 100644 index 0000000..2e9adb5 --- /dev/null +++ b/tests/bloom_test.cpp @@ -0,0 +1,141 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace fc; + +int main( int argc, char** argv ) +{ + try { + + bloom_parameters parameters; + + // How many elements roughly do we expect to insert? + parameters.projected_element_count = 100000; + + // Maximum tolerable false positive probability? (0,1) + parameters.false_positive_probability = 0.0001; // 1 in 10000 + + // Simple randomizer (optional) + parameters.random_seed = 0xA5A5A5A5; + + if (!parameters) + { + std::cout << "Error - Invalid set of bloom filter parameters!" << std::endl; + return 1; + } + + parameters.compute_optimal_parameters(); + + //Instantiate Bloom Filter + bloom_filter filter(parameters); + + if( argc > 1 ) + { + uint32_t count = 0; + std::string line; + std::ifstream in(argv[1]); + std::ofstream words("words.txt"); + while( !in.eof() && count < 100000 ) + { + std::getline(in, line); + std::cout << "'"< -100; --i) + { + if (filter.contains(i)) + { + std::cout << "BF falsely contains: " << i << std::endl; + } + } + } + + wdump((filter)); + auto packed_filter = fc::raw::pack(filter); + wdump((packed_filter.size())); + wdump((packed_filter)); + + return 0; + } + catch ( const fc::exception& e ) + { + edump((e.to_detail_string()) ); + } +}