From dea28eb2fc44e826151bfbc107cdb9ea51229220 Mon Sep 17 00:00:00 2001 From: Greg Landrum Date: Sat, 2 Jan 2016 17:07:29 +0100 Subject: [PATCH] add tests for the bitmap bitops --- Code/DataStructs/testDatastructs.cpp | 53 ++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/Code/DataStructs/testDatastructs.cpp b/Code/DataStructs/testDatastructs.cpp index b24d3c611..90c16f07a 100644 --- a/Code/DataStructs/testDatastructs.cpp +++ b/Code/DataStructs/testDatastructs.cpp @@ -1309,7 +1309,7 @@ void test13BitVectAllOnes() { } } -void test18BitVectConcatenation() { +void test14BitVectConcatenation() { { ExplicitBitVect bv(32, false); ExplicitBitVect bv2(32, true); @@ -1320,6 +1320,51 @@ void test18BitVectConcatenation() { } } +void test15BitmapOps() { + { + const unsigned char bv1[5] = {0x1, 0x1, 0x1, 0x1, 0x1}; + TEST_ASSERT(CalcBitmapPopcount(bv1, 5) == 5); + } + { + const unsigned char bv1[5] = {0x1, 0x1, 0x3, 0x1, 0x1}; + TEST_ASSERT(CalcBitmapPopcount(bv1, 5) == 6); + } + { + const unsigned char bv1[5] = {0x0, 0x0, 0x0, 0x0, 0x0}; + TEST_ASSERT(CalcBitmapPopcount(bv1, 5) == 0); + } + { + const unsigned char bv1[5] = {0x1, 0x1, 0x1, 0x1, 0x1}; + const unsigned char bv2[5] = {0x1, 0x1, 0x1, 0x1, 0x1}; + TEST_ASSERT(feq(CalcBitmapTanimoto(bv1, bv2, 5), 1.0)); + } + { + const unsigned char bv1[5] = {0x1, 0x1, 0x1, 0x1, 0x1}; + const unsigned char bv2[5] = {0x1, 0x1, 0x1, 0x0, 0x1}; + TEST_ASSERT(feq(CalcBitmapTanimoto(bv1, bv2, 5), 0.8)); + } + { + const unsigned char bv1[5] = {0x1, 0x1, 0x1, 0x1, 0x1}; + const unsigned char bv2[5] = {0x1, 0x1, 0x1, 0x1, 0x1}; + TEST_ASSERT(feq(CalcBitmapTversky(bv1, bv2, 5, 1., 1.), 1.0)); + } + { + const unsigned char bv1[5] = {0x1, 0x1, 0x1, 0x1, 0x1}; + const unsigned char bv2[5] = {0x1, 0x1, 0x1, 0x0, 0x1}; + TEST_ASSERT(feq(CalcBitmapTversky(bv1, bv2, 5, 1., 1.), 0.8)); + } + { + const unsigned char bv1[5] = {0x1, 0x1, 0x1, 0x1, 0x1}; + const unsigned char bv2[5] = {0x1, 0x1, 0x1, 0x1, 0x1}; + TEST_ASSERT(feq(CalcBitmapDice(bv1, bv2, 5), 1.0)); + } + { + const unsigned char bv1[5] = {0x1, 0x1, 0x1, 0x1, 0x1}; + const unsigned char bv2[5] = {0x1, 0x1, 0x1, 0x0, 0x1}; + TEST_ASSERT(feq(CalcBitmapDice(bv1, bv2, 5), 8. / 9)); + } +} + int main() { RDLog::InitLogs(); try { @@ -1410,7 +1455,11 @@ int main() { BOOST_LOG(rdInfoLog) << " Test Explicit BitVects: Concatenation Operation " "-------------------------------" << std::endl; - test18BitVectConcatenation(); + test14BitVectConcatenation(); + + BOOST_LOG(rdInfoLog) << " Test bitmap operations " + "-------------------------------" << std::endl; + test15BitmapOps(); return 0; }