#include "array_fun.h" #include namespace aria2 { class array_funTest:public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(array_funTest); CPPUNIT_TEST(testBit_negate); CPPUNIT_TEST(testBit_and); CPPUNIT_TEST(testArray_negate); CPPUNIT_TEST(testArray_and); CPPUNIT_TEST(testArrayLength); CPPUNIT_TEST_SUITE_END(); public: void testBit_negate(); void testBit_and(); void testArray_negate(); void testArray_and(); void testArrayLength(); }; CPPUNIT_TEST_SUITE_REGISTRATION(array_funTest); void array_funTest::testBit_negate() { unsigned char b = 0xaa; CPPUNIT_ASSERT_EQUAL((unsigned char)0x55, bit_negate()(b)); } void array_funTest::testBit_and() { unsigned char b = 0xaa; CPPUNIT_ASSERT_EQUAL((unsigned char)0x0a, bit_and()(b, 0x0a)); } void array_funTest::testArray_negate() { unsigned char a[] = { 0xaa, 0x55 }; array_fun f = array_negate((unsigned char*)a); CPPUNIT_ASSERT_EQUAL((unsigned char)0x55, f[0]); CPPUNIT_ASSERT_EQUAL((unsigned char)0xaa, f[1]); array_fun ff = array_negate(f); CPPUNIT_ASSERT_EQUAL((unsigned char)0xaa, ff[0]); CPPUNIT_ASSERT_EQUAL((unsigned char)0x55, ff[1]); } void array_funTest::testArray_and() { unsigned char a1[] = { 0xaa, 0x55 }; unsigned char a2[] = { 0x1a, 0x25 }; array_fun f = array_and((unsigned char*)a1, (unsigned char*)a2); CPPUNIT_ASSERT_EQUAL((unsigned char)0x0a, f[0]); CPPUNIT_ASSERT_EQUAL((unsigned char)0x05, f[1]); array_fun f2 = array_and((unsigned char*)a1, array_negate(a2)); CPPUNIT_ASSERT_EQUAL((unsigned char)0xa0, f2[0]); CPPUNIT_ASSERT_EQUAL((unsigned char)0x50, f2[1]); array_fun f3 = array_and(array_negate(a2), (unsigned char*)a1); CPPUNIT_ASSERT_EQUAL((unsigned char)0xa0, f3[0]); CPPUNIT_ASSERT_EQUAL((unsigned char)0x50, f3[1]); array_fun f4 = array_and(array_negate(a1), array_negate(a2)); CPPUNIT_ASSERT_EQUAL((unsigned char)0x45, f4[0]); CPPUNIT_ASSERT_EQUAL((unsigned char)0x8a, f4[1]); } void array_funTest::testArrayLength() { int64_t ia[] = { 1, 2, 3, 4, 5 }; int64_t zeroLengthArray[] = {}; CPPUNIT_ASSERT_EQUAL((size_t)5, arrayLength(ia)); CPPUNIT_ASSERT_EQUAL((size_t)0, arrayLength(zeroLengthArray)); } } // namespace aria2