| #include <vector> |
| #include <algorithm> |
| #include <functional> |
| |
| #include "cppunit/cppunit_proxy.h" |
| |
| #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) |
| using namespace std; |
| #endif |
| |
| // |
| // TestCase class |
| // |
| class LogicTest : public CPPUNIT_NS::TestCase |
| { |
| CPPUNIT_TEST_SUITE(LogicTest); |
| CPPUNIT_TEST(logicand); |
| CPPUNIT_TEST(logicnot); |
| CPPUNIT_TEST(logicor); |
| CPPUNIT_TEST_SUITE_END(); |
| |
| protected: |
| void logicand(); |
| void logicnot(); |
| void logicor(); |
| }; |
| |
| CPPUNIT_TEST_SUITE_REGISTRATION(LogicTest); |
| |
| // |
| // tests implementation |
| // |
| void LogicTest::logicand() |
| { |
| bool input1 [4] = { true, true, false, true }; |
| bool input2 [4] = { false, true, false, false }; |
| |
| bool output [4]; |
| transform((bool*)input1, (bool*)input1 + 4, (bool*)input2, (bool*)output, logical_and<bool>()); |
| |
| CPPUNIT_ASSERT(output[0]==false); |
| CPPUNIT_ASSERT(output[1]==true); |
| CPPUNIT_ASSERT(output[2]==false); |
| CPPUNIT_ASSERT(output[3]==false); |
| } |
| void LogicTest::logicnot() |
| { |
| bool input [7] = { 1, 0, 0, 1, 1, 1, 1 }; |
| |
| int n = count_if(input, input + 7, logical_not<bool>()); |
| CPPUNIT_ASSERT( n == 2 ); |
| } |
| void LogicTest::logicor() |
| { |
| bool input1 [4] = { true, true, false, true }; |
| bool input2 [4] = { false, true, false, false }; |
| |
| bool output [4]; |
| transform((bool*)input1, (bool*)input1 + 4, (bool*)input2, (bool*)output, logical_or<bool>()); |
| |
| CPPUNIT_ASSERT(output[0]==true); |
| CPPUNIT_ASSERT(output[1]==true); |
| CPPUNIT_ASSERT(output[2]==false); |
| CPPUNIT_ASSERT(output[3]==true); |
| } |