3 #include "cppunit/cppunit_proxy.h"
5 #include <cds/algo/int_algo.h>
6 #include <cds/os/timer.h>
8 class bitop_ST : public CppUnitMini::TestCase
15 CPPUNIT_ASSERT_EX( cds::bitop::MSB(n) == 0, "n=" << n );
16 CPPUNIT_ASSERT_EX( cds::bitop::LSB(n) == 0, "n=" << n );
17 CPPUNIT_ASSERT_EX( cds::bitop::SBC(n) == 0, "n=" << n );
18 CPPUNIT_ASSERT_EX( cds::bitop::ZBC(n) == sizeof(n) * 8, "n=" << n );
21 for ( n = 1; n != 0; n *= 2 ) {
22 CPPUNIT_ASSERT_EX( cds::bitop::MSB(n) == nBit, "n=" << n );
23 CPPUNIT_ASSERT_EX( cds::bitop::LSB(n) == nBit, "n=" << n );
24 CPPUNIT_ASSERT_EX( cds::bitop::MSBnz(n) == nBit - 1, "n=" << n );
25 CPPUNIT_ASSERT_EX( cds::bitop::LSBnz(n) == nBit - 1, "n=" << n );
26 CPPUNIT_ASSERT_EX( cds::bitop::SBC(n) == 1, "n=" << n );
27 CPPUNIT_ASSERT_EX( cds::bitop::ZBC(n) == sizeof(n) * 8 - 1, "n=" << n );
37 CPPUNIT_ASSERT_EX( cds::bitop::MSB(n) == 0, "n=" << n );
38 CPPUNIT_ASSERT_EX( cds::bitop::LSB(n) == 0, "n=" << n );
39 CPPUNIT_ASSERT_EX( cds::bitop::SBC(n) == 0, "n=" << n );
40 CPPUNIT_ASSERT_EX( cds::bitop::ZBC(n) == sizeof(n) * 8, "n=" << n );
43 for ( n = 1; n != 0; n *= 2 ) {
44 CPPUNIT_ASSERT_EX( cds::bitop::MSB(n) == nBit, "n=" << n );
45 CPPUNIT_ASSERT_EX( cds::bitop::LSB(n) == nBit, "n=" << n );
46 CPPUNIT_ASSERT_EX( cds::bitop::MSBnz(n) == nBit - 1, "n=" << n );
47 CPPUNIT_ASSERT_EX( cds::bitop::LSBnz(n) == nBit - 1, "n=" << n );
48 CPPUNIT_ASSERT_EX( cds::bitop::SBC(n) == 1, "n=" << n );
49 CPPUNIT_ASSERT_EX( cds::bitop::ZBC(n) == sizeof(n) * 8 - 1, "n=" << n );
55 void floor_ceil_pow2()
57 CPPUNIT_CHECK_EX( cds::beans::floor2(0) == 1, "floor2(0) = " << cds::beans::floor2(0) << ", expected 1" );
58 CPPUNIT_CHECK_EX( cds::beans::floor2(1) == 1, "floor2(1) = " << cds::beans::floor2(1) << ", expected 1" );
59 CPPUNIT_CHECK_EX( cds::beans::floor2(2) == 2, "floor2(2) = " << cds::beans::floor2(2) << ", expected 2" );
60 CPPUNIT_CHECK_EX( cds::beans::floor2(3) == 2, "floor2(3) = " << cds::beans::floor2(3) << ", expected 2" );
61 CPPUNIT_CHECK_EX( cds::beans::floor2(4) == 4, "floor2(4) = " << cds::beans::floor2(4) << ", expected 4" );
62 CPPUNIT_CHECK_EX( cds::beans::floor2(5) == 4, "floor2(5) = " << cds::beans::floor2(5) << ", expected 4" );
63 CPPUNIT_CHECK_EX( cds::beans::floor2(7) == 4, "floor2(7) = " << cds::beans::floor2(7) << ", expected 4" );
64 CPPUNIT_CHECK_EX( cds::beans::floor2(8) == 8, "floor2(8) = " << cds::beans::floor2(8) << ", expected 8" );
65 CPPUNIT_CHECK_EX( cds::beans::floor2(9) == 8, "floor2(9) = " << cds::beans::floor2(9) << ", expected 8" );
67 CPPUNIT_CHECK_EX( cds::beans::ceil2(0) == 1, "ceil2(0) = " << cds::beans::ceil2(0) << ", expected 1" );
68 CPPUNIT_CHECK_EX( cds::beans::ceil2(1) == 1, "ceil2(1) = " << cds::beans::ceil2(1) << ", expected 1" );
69 CPPUNIT_CHECK_EX( cds::beans::ceil2(2) == 2, "ceil2(2) = " << cds::beans::ceil2(2) << ", expected 2" );
70 CPPUNIT_CHECK_EX( cds::beans::ceil2(3) == 4, "ceil2(3) = " << cds::beans::ceil2(3) << ", expected 4" );
71 CPPUNIT_CHECK_EX( cds::beans::ceil2(4) == 4, "ceil2(4) = " << cds::beans::ceil2(4) << ", expected 4" );
72 CPPUNIT_CHECK_EX( cds::beans::ceil2(5) == 8, "ceil2(5) = " << cds::beans::ceil2(5) << ", expected 8" );
73 CPPUNIT_CHECK_EX( cds::beans::ceil2(7) == 8, "ceil2(7) = " << cds::beans::ceil2(7) << ", expected 8" );
74 CPPUNIT_CHECK_EX( cds::beans::ceil2(8) == 8, "ceil2(8) = " << cds::beans::ceil2(8) << ", expected 8" );
75 CPPUNIT_CHECK_EX( cds::beans::ceil2(9) == 16, "ceil2(9) = " << cds::beans::ceil2(16) << ", expected 16" );
78 CPPUNIT_TEST_SUITE(bitop_ST);
81 CPPUNIT_TEST(floor_ceil_pow2)
82 CPPUNIT_TEST_SUITE_END();
85 CPPUNIT_TEST_SUITE_REGISTRATION(bitop_ST);