4 #include <static_bitsequence.h>
8 int main(int argc, char ** argv) {
10 cout << "usage: " << argv[0] << " <bitmap_file>" << endl;
13 FILE * fp = fopen(argv[1],"r");
15 cout << "Error opening " << argv[1] << endl;
19 uint l = fread(&len, sizeof(uint), 1, fp);
20 bitseq = new uint[uint_len(len,1)];
21 l += fread(bitseq, sizeof(uint), uint_len(len,1), fp);
22 static_bitsequence * bs = new static_bitsequence_naive(bitseq,len);
23 cout << "Bitmap length: " << len << " =? " << bs->length() << endl;
25 for(uint i=0;i<len;i++) {
26 if(bitget(bitseq,i)) ones++;
27 if(bs->rank1(i) != ones) {
28 cout << "Rank1 error for position " << i << endl;
29 cout << " got: " << bs->rank1(i) << " expected: " << ones << endl;
31 if(bitget(bitseq,i) && bs->select1(ones) != i) {
32 cout << "Select1 error for position " << i << endl;
33 cout << " got: " << bs->select1(ones) << " expected: " << i << endl;
35 if(bs->rank0(i) != i+1-ones) {
36 cout << "Rank0 error for position " << i << endl;
37 cout << " got: " << bs->rank0(i) << " expected: " << ones << endl;
39 if(!bitget(bitseq,i) && bs->select0(i+1-ones) != i) {
40 cout << "Select0 error for position " << i << endl;
41 cout << " got: " << bs->select0(ones) << " expected: " << i << endl;
46 cout << "Test completed." << endl;