1a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include <cstring> 2a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include <vector> 3a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner#include <algorithm> 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 IncludesTest : public CPPUNIT_NS::TestCase 15a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 16a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST_SUITE(IncludesTest); 17a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST(incl0); 18a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST(incl1); 19a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST(incl2); 20a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_TEST_SUITE_END(); 21a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 22a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnerprotected: 23a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void incl0(); 24a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void incl1(); 25a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner void incl2(); 26a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 27a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner static bool compare_strings(const char* s1_, const char* s2_) 28a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner { 29a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner return strcmp(s1_, s2_) < 0 ? 1 : 0; 30a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 31a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner}; 32a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 33a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' TurnerCPPUNIT_TEST_SUITE_REGISTRATION(IncludesTest); 34a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 35a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner// 36a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner// tests implementation 37a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner// 38a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid IncludesTest::incl0() 39a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 40a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner int numbers1[5] = { 1, 2, 3, 4, 5 }; 41a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner //int numbers2[5] = { 1, 2, 4, 8, 16 }; 42a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner int numbers3[2] = { 4, 8 }; 43a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool r1=includes(numbers1, numbers1 + 5, numbers3, numbers3 + 2); 44a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT(!r1); 45a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 46a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid IncludesTest::incl1() 47a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 48a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner vector<int> v1(10); 49a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner vector<int> v2(3); 50a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner int i; 51a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner for (i = 0; (size_t)i < v1.size(); ++i) { 52a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner v1[i] = i; 53a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 54a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 55a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool r1=includes(v1.begin(), v1.end(), v2.begin(), v2.end()); 56a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT(!r1); 57a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 58a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner for (i = 0; (size_t)i < v2.size(); ++i) 59a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner v2[i] = i + 3; 60a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 61a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool r2=includes(v1.begin(), v1.end(), v2.begin(), v2.end()); 62a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT(r2); 63a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 64a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turnervoid IncludesTest::incl2() 65a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner{ 66a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner char const* names[] = { "Todd", "Mike", "Graham", "Jack", "Brett"}; 67a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 68a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner const unsigned nameSize = sizeof(names)/sizeof(names[0]); 69a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner vector <char const*> v1(nameSize); 70a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner for (int i = 0; (size_t)i < v1.size(); ++i) { 71a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner v1[i] = names[i]; 72a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner } 73a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner vector <char const*> v2(2); 74a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 75a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner v2[0] = "foo"; 76a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner v2[1] = "bar"; 77a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner sort(v1.begin(), v1.end(), compare_strings); 78a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner sort(v2.begin(), v2.end(), compare_strings); 79a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 80a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool r1 = includes(v1.begin(), v1.end(), v2.begin(), v2.end(), compare_strings); 81a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT(!r1); 82a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner 83a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner v2[0] = "Brett"; 84a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner v2[1] = "Todd"; 85a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner bool r2 = includes(v1.begin(), v1.end(), v2.begin(), v2.end(), compare_strings); 86a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner CPPUNIT_ASSERT(r2); 87a9225dc81bae267b3454f3676a9108ecb4c9264fDavid 'Digit' Turner} 88