Beispiel #1
0
static void
test_Flip_Block_bulk(TestBatch *batch) {
    int32_t offset;

    for (offset = 0; offset <= 17; offset++) {
        int32_t len;
        for (len = 0; len <= 17; len++) {
            int i;
            int upper = offset + len - 1;
            BitVector *bit_vec = BitVec_new(0);

            BitVec_Flip_Block(bit_vec, offset, len);
            for (i = 0; i <= 17; i++) {
                if (i >= offset && i <= upper) {
                    if (!BitVec_Get(bit_vec, i)) { break; }
                }
                else {
                    if (BitVec_Get(bit_vec, i)) { break; }
                }
            }
            TEST_INT_EQ(batch, i, 18, "Flip_Block(%d, %d)", offset, len);

            DECREF(bit_vec);
        }
    }
}
Beispiel #2
0
static void
test_Clear_All(TestBatch *batch) {
    BitVector *bit_vec = BitVec_new(64);
    BitVec_Flip_Block(bit_vec, 0, 63);
    BitVec_Clear_All(bit_vec);
    TEST_INT_EQ(batch, BitVec_Next_Hit(bit_vec, 0), -1, "Clear_All");
    DECREF(bit_vec);
}
Beispiel #3
0
static void
test_Flip_Block_ascending(TestBatchRunner *runner) {
    BitVector *bit_vec = BitVec_new(0);

    for (unsigned i = 0; i <= 20; i++) {
        BitVec_Flip_Block(bit_vec, i, 21 - i);
    }

    for (unsigned i = 0; i <= 20; i++) {
        if (i % 2 == 0) {
            TEST_TRUE(runner, BitVec_Get(bit_vec, i),
                      "Flip_Block ascending %u", i);
        }
        else {
            TEST_FALSE(runner, BitVec_Get(bit_vec, i),
                       "Flip_Block ascending %u", i);
        }
    }

    DECREF(bit_vec);
}
Beispiel #4
0
static void
test_Flip_Block_descending(TestBatchRunner *runner) {
    BitVector *bit_vec = BitVec_new(0);

    for (int i = 19; i >= 0; i--) {
        BitVec_Flip_Block(bit_vec, 1, (size_t)i);
    }

    for (unsigned i = 0; i <= 20; i++) {
        if (i % 2) {
            TEST_TRUE(runner, BitVec_Get(bit_vec, i),
                      "Flip_Block descending %u", i);
        }
        else {
            TEST_FALSE(runner, BitVec_Get(bit_vec, i),
                       "Flip_Block descending %u", i);
        }
    }

    DECREF(bit_vec);
}
Beispiel #5
0
static void
test_Flip_Block_descending(TestBatch *batch) {
    BitVector *bit_vec = BitVec_new(0);
    int i;

    for (i = 19; i >= 0; i--) {
        BitVec_Flip_Block(bit_vec, 1, i);
    }

    for (i = 0; i <= 20; i++) {
        if (i % 2) {
            TEST_TRUE(batch, BitVec_Get(bit_vec, i),
                      "Flip_Block descending %d", i);
        }
        else {
            TEST_FALSE(batch, BitVec_Get(bit_vec, i),
                       "Flip_Block descending %d", i);
        }
    }

    DECREF(bit_vec);
}
Beispiel #6
0
static void
test_Flip_Block_bulk(TestBatchRunner *runner) {
    for (unsigned offset = 0; offset <= 17; offset++) {
        for (unsigned len = 0; len <= 17; len++) {
            int upper = (int)offset + (int)len - 1;
            BitVector *bit_vec = BitVec_new(0);

            BitVec_Flip_Block(bit_vec, offset, len);
            unsigned i;
            for (i = 0; i <= 17; i++) {
                if (i >= offset && (int)i <= upper) {
                    if (!BitVec_Get(bit_vec, i)) { break; }
                }
                else {
                    if (BitVec_Get(bit_vec, i)) { break; }
                }
            }
            TEST_UINT_EQ(runner, i, 18, "Flip_Block(%u, %u)", offset, len);

            DECREF(bit_vec);
        }
    }
}