void KeyValueCountingBloomFilterTest::testRemove() {
	//cout << endl;
	bloom::KeyValueCountingBloomFilter Filter1(hashFunction_, *storage1, "",
			10, false, 0.01);
	bloom::KeyValueCountingBloomFilter Filter2(hashFunction_, *storage2, "",
			10, false, 0.01);
	bloom::KeyValueCountingBloomFilter Filter3(hashFunction_, *storage3, "",
			10, false, 0.01);
	//	 test signature (const unsigned char* key)

	unsigned char cad1[hashFunction_.getHashSize()];
	hashFunction_(cad1, "ejemplo");
	CPPUNIT_ASSERT(!Filter1.remove(cad1));
	Filter1.add(cad1);
	CPPUNIT_ASSERT_EQUAL(true, Filter1.contains(cad1));
	bool removed = Filter1.remove(cad1);
	CPPUNIT_ASSERT(removed);
	CPPUNIT_ASSERT_EQUAL(false, Filter1.contains(cad1));
	CPPUNIT_ASSERT(!Filter1.remove(cad1));
	//	 test signature (const std::string& key)
	Filter1.AbstractBloomFilter::add(string("hello"));
	Filter1.AbstractBloomFilter::add(string("hello"));
	CPPUNIT_ASSERT(Filter1.AbstractBloomFilter::contains(string("hello")));
	CPPUNIT_ASSERT(Filter1.CountingBloomFilter::remove(string("hello")));
	CPPUNIT_ASSERT(!Filter1.AbstractBloomFilter::contains(string("hello")));
	//	 test signature (const char* key)
	CPPUNIT_ASSERT(!Filter1.CountingBloomFilter::remove("bye"));
	Filter1.AbstractBloomFilter::add("bye");
	CPPUNIT_ASSERT(Filter1.AbstractBloomFilter::contains("bye"));
	CPPUNIT_ASSERT(Filter1.CountingBloomFilter::remove("bye"));
	CPPUNIT_ASSERT(!Filter1.CountingBloomFilter::remove("bye"));
	Filter1.AbstractBloomFilter::add("bla1");
	Filter2.AbstractBloomFilter::add("bla1");
	Filter2.clear();
	Filter1.AbstractBloomFilter::add("bla2");
	Filter2.AbstractBloomFilter::add("bla2");
	Filter2.clear();
	Filter1.AbstractBloomFilter::add("bla3");
	Filter2.AbstractBloomFilter::add("bla3");
	Filter2.clear();
	CPPUNIT_ASSERT(Filter1.CountingBloomFilter::remove("bla1"));
	CPPUNIT_ASSERT(Filter1.CountingBloomFilter::remove("bla2"));
	CPPUNIT_ASSERT(Filter1.AbstractBloomFilter::contains("bla3"));
	CPPUNIT_ASSERT(Filter1.CountingBloomFilter::remove("bla3"));
	/// Testing transaction code
	Filter3.AbstractBloomFilter::add("bla1");
	Filter3.AbstractBloomFilter::add("bla2");
	Filter3.AbstractBloomFilter::add("bla3");
	CPPUNIT_ASSERT(Filter3.CountingBloomFilter::remove("bla1"));
	CPPUNIT_ASSERT(Filter3.CountingBloomFilter::remove("bla2"));
	CPPUNIT_ASSERT(Filter3.CountingBloomFilter::remove("bla3"));
}
Esempio n. 2
0
/*=== BEGIN tests for class 'BloomFilter' ===*/
void BloomFilterTest::testLoad() {
	bloom::BloomFilter Filter1(hash, 10, false, 0.01);
	bloom::BloomFilter Filter2(hash, 10, false, 0.01);
	string s1 = "hello";
	string s2 = "byebye";
	Filter1.AbstractBloomFilter::add(s1);
	CPPUNIT_ASSERT_EQUAL(true, Filter1.AbstractBloomFilter::contains(s1));
	CPPUNIT_ASSERT_EQUAL(false, Filter2.AbstractBloomFilter::contains(s1));
	std::stringstream buf;
	Filter1.save(buf);
	Filter2.load(buf, Filter1.numberOfElements());
	CPPUNIT_ASSERT_EQUAL(true, Filter2.AbstractBloomFilter::contains(s1));
	CPPUNIT_ASSERT_EQUAL(Filter1.numberOfElements(), Filter2.numberOfElements());

}
void KeyValueCountingBloomFilterTest::testConstructor() {
	bloom::KeyValueCountingBloomFilter Filter1(hashFunction_, *storage1, "",
			10, false, 0.01);
	Filter1.AbstractBloomFilter::add("bla1");
	Filter1.AbstractBloomFilter::add("bla2");
	Filter1.AbstractBloomFilter::add("bla3");
	Filter1.AbstractBloomFilter::add("bla4");
	bloom::KeyValueCountingBloomFilter Filter2(hashFunction_, *storage1, "",
			10, false, 0.01);
	CPPUNIT_ASSERT(Filter1.AbstractBloomFilter::contains("bla1"));
	CPPUNIT_ASSERT(Filter2.AbstractBloomFilter::contains("bla1"));
	CPPUNIT_ASSERT(Filter2.AbstractBloomFilter::contains("bla2"));
	CPPUNIT_ASSERT(Filter2.AbstractBloomFilter::contains("bla3"));
	CPPUNIT_ASSERT(Filter2.AbstractBloomFilter::contains("bla4"));
}
Esempio n. 4
0
void BloomFilterTest::testContainsAll() {
	bloom::BloomFilter Filter2(hash, 8196);
	unsigned char hashes[100 * hash.getHashSize()];
	for (int j = 0; j < 100; j++) {
		unsigned char word[8];
		for (int i = 0; i < 8; i++) {
			word[i] = 33 + rand() % (126 - 23);
		}
		hash(hashes + hash.getHashSize() * j, word, 8);
	}
	for (int i = 0; i < 100; i++) {
		Filter2.add(hashes + i * hash.getHashSize());
	}
	Filter2.containsAll(hashes, 100);
	CPPUNIT_ASSERT(Filter2.containsAll(hashes, 100));
}
void KeyValueCountingBloomFilterTest::testLoad() {
	bloom::KeyValueCountingBloomFilter Filter1(hashFunction_, *storage1, "",
			10, false, 0.01);
	bloom::KeyValueCountingBloomFilter Filter2(hashFunction_, *storage2, "",
			10, false, 0.01);
	Filter1.AbstractBloomFilter::add("hello");
	CPPUNIT_ASSERT_EQUAL(true, Filter1.AbstractBloomFilter::contains("hello"));
	CPPUNIT_ASSERT_EQUAL(false, Filter2.AbstractBloomFilter::contains("hello"));
	std::stringstream buf;
	Filter1.save(buf);
	Filter2.load(buf, Filter1.numberOfElements());
	CPPUNIT_ASSERT_EQUAL(Filter1.numberOfElements(), Filter2.numberOfElements());
	//	std::cout << std::endl << Filter1.toString() << std::endl;
	//	std::cout << std::endl << Filter2.toString() << std::endl;
	CPPUNIT_ASSERT(Filter1 == Filter2);
	CPPUNIT_ASSERT(Filter2.AbstractBloomFilter::contains("hello"));
}
void KeyValueCountingBloomFilterTest::testContainsAll() {
	bloom::KeyValueCountingBloomFilter Filter2(hashFunction_, *storage2, "",
			8196);
	unsigned char hashes[100 * hashFunction_.getHashSize()];
	for (int j = 0; j < 100; j++) {
		unsigned char word[8];
		for (int i = 0; i <= 7; i++) {
			word[i] = 33 + rand() % (126 - 23);
		}
		hashFunction_(hashes + hashFunction_.getHashSize() * j, word, 8);
	}
	for (int i = 0; i < 100; i++) {
		Filter2.add(hashes + i * hashFunction_.getHashSize());
	}
	Filter2.containsAll(hashes, 100);
	CPPUNIT_ASSERT(Filter2.containsAll(hashes, 100));
}
Esempio n. 7
0
/*--------------------------------------*/
void mulcol_sp(csr_t *A, options_t *opts,
               precon_t *prec, int *perm) {
    /*---------------------------------------*/
    PREC_TYPE ptype;
    int n,i,maxcol,ncol,*kolrs,*il,err,k;
    double tol;
    csr_t *C,*B;
    /*---------------------------------------*/
    n = A->n;
    ptype = opts->prectype;
    if (ptype == MCSOR) {
        maxcol = opts->mcsor_opt->maxcol;
        tol = opts->mcsor_opt->tol;
    }
    else {
        maxcol = opts->mcilu0_opt->maxcol;
        tol = opts->mcilu0_opt->tol;
    }
    printf("begin Sparsified MULTI-COLOR ...\n");
    /*-------------------------------------*/
    Calloc(kolrs, n, int);
    Calloc(il, maxcol+1, int);
    /*------------- filter out small terms */
    /*------------- B: sparsified matrix */
    Calloc(B, 1, csr_t);
    Filter(A, B, tol);
    /*--------------------*/
    Calloc(C, 1, csr_t);
    for (k=0; k<MAXLOOP; k++) {
        /*----- symetrize matrix B */
        symmgraph(B, C);
        /*----- init ordering */
        for (i=0; i<n; i++)
            perm[i] = i+1;
        /*----- multi-color */
        multic_(&n, C->ja, C->ia, &ncol, kolrs,
                il, perm, &maxcol, &err);
        printf("  # of colors: %d\n", ncol);
        if (err != 0) {
            printf("exceed max num of colors\n");
            exit(-1);
        }
        /*-------------------------*/
        free(C->ja);
        free(C->ia);
        /*-------------------------------*/
        if (tol*2 > MAXTOL || ncol < 5)
            break;
        tol = tol*2;
        /*------- further filtering */
        /*---- drop small entries in long rows */
        Filter2(B, tol, ncol);
    }
    /*----------------------------------*/
    if (ptype == MCSOR) {
        Calloc(prec->mcsor, 1, mcsor_prec_t);
        prec->mcsor->ncol = ncol;
        prec->mcsor->kolrs = kolrs;
        prec->mcsor->il = il;
    } else {
        Calloc(prec->mcilu0, 1, mcilu0_prec_t);
        prec->mcilu0->ncol = ncol;
        prec->mcilu0->kolrs = kolrs;
        prec->mcilu0->il = il;
    }
    /*----------------- done */
    free_csr(B);
    free(C);
}