1a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include <vector> 2a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include <algorithm> 3a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include <functional> 4a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 5a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include "cppunit/cppunit_proxy.h" 6a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 7a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) 8a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerusing namespace std; 9a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#endif 10a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 11a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner// 12a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner// TestCase class 13a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner// 14a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerclass LogicTest : public CPPUNIT_NS::TestCase 15a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 16a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST_SUITE(LogicTest); 17a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST(logicand); 18a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST(logicnot); 19a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST(logicor); 20a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST_SUITE_END(); 21a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 22a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerprotected: 23a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void logicand(); 24a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void logicnot(); 25a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void logicor(); 26a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner}; 27a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 28a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' TurnerCPPUNIT_TEST_SUITE_REGISTRATION(LogicTest); 29a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 30a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner// 31a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner// tests implementation 32a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner// 33a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid LogicTest::logicand() 34a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 35a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool input1 [4] = { true, true, false, true }; 36a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool input2 [4] = { false, true, false, false }; 37a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 38a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool output [4]; 39a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner transform((bool*)input1, (bool*)input1 + 4, (bool*)input2, (bool*)output, logical_and<bool>()); 40a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 41a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT(output[0]==false); 42a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT(output[1]==true); 43a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT(output[2]==false); 44a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT(output[3]==false); 45a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 46a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid LogicTest::logicnot() 47a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 48a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool input [7] = { 1, 0, 0, 1, 1, 1, 1 }; 49a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 50a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner int n = count_if(input, input + 7, logical_not<bool>()); 51a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT( n == 2 ); 52a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 53a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid LogicTest::logicor() 54a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 55a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool input1 [4] = { true, true, false, true }; 56a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool input2 [4] = { false, true, false, false }; 57a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 58a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool output [4]; 59a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner transform((bool*)input1, (bool*)input1 + 4, (bool*)input2, (bool*)output, logical_or<bool>()); 60a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 61a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT(output[0]==true); 62a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT(output[1]==true); 63a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT(output[2]==false); 64a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT(output[3]==true); 65a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 66