X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=tests%2Ftest_naive.cpp;fp=tests%2Ftest_naive.cpp;h=3ce65ff9b20b0a348c8c11ec359b39b9bb6902b7;hb=3fd4bcef236556c7f3bff1d2be8d3f4206245501;hp=0000000000000000000000000000000000000000;hpb=dc7a566a39187bfcea70737cda7278f858cd9842;p=SXSI%2Flibcds.git diff --git a/tests/test_naive.cpp b/tests/test_naive.cpp new file mode 100644 index 0000000..3ce65ff --- /dev/null +++ b/tests/test_naive.cpp @@ -0,0 +1,49 @@ + +#include +#include +#include + +using namespace std; + +int main(int argc, char ** argv) { + if(argc!=2) { + cout << "usage: " << argv[0] << " " << endl; + return 0; + } + FILE * fp = fopen(argv[1],"r"); + if(fp==NULL) { + cout << "Error opening " << argv[1] << endl; + return -1; + } + uint *bitseq, len; + uint l = fread(&len, sizeof(uint), 1, fp); + bitseq = new uint[uint_len(len,1)]; + l += fread(bitseq, sizeof(uint), uint_len(len,1), fp); + static_bitsequence * bs = new static_bitsequence_naive(bitseq,len); + cout << "Bitmap length: " << len << " =? " << bs->length() << endl; + uint ones = 0; + for(uint i=0;irank1(i) != ones) { + cout << "Rank1 error for position " << i << endl; + cout << " got: " << bs->rank1(i) << " expected: " << ones << endl; + } + if(bitget(bitseq,i) && bs->select1(ones) != i) { + cout << "Select1 error for position " << i << endl; + cout << " got: " << bs->select1(ones) << " expected: " << i << endl; + } + if(bs->rank0(i) != i+1-ones) { + cout << "Rank0 error for position " << i << endl; + cout << " got: " << bs->rank0(i) << " expected: " << ones << endl; + } + if(!bitget(bitseq,i) && bs->select0(i+1-ones) != i) { + cout << "Select0 error for position " << i << endl; + cout << " got: " << bs->select0(ones) << " expected: " << i << endl; + } + } + delete bs; + fclose(fp); + cout << "Test completed." << endl; + return 0; +} +