includes_test.cpp revision e46c9386c4f79aa40185f79a19fc5b2a7ef528b3
10baa4809a8de135a6a7abe9cd78a86f208c99164Chandler Carruth#include <cstring> 2e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands#include <vector> 3e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands#include <algorithm> 4e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands 5e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands#include "cppunit/cppunit_proxy.h" 6e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands 7e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) 8e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sandsusing namespace std; 9e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands#endif 100b8c9a80f20772c3793201ab5b251d3520b9cea3Chandler Carruth 110b8c9a80f20772c3793201ab5b251d3520b9cea3Chandler Carruth// 12dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// TestCase class 130b8c9a80f20772c3793201ab5b251d3520b9cea3Chandler Carruth// 1406cb8ed00696eb14d1b831921452e50ec0568ea2Chandler Carruthclass IncludesTest : public CPPUNIT_NS::TestCase 1506cb8ed00696eb14d1b831921452e50ec0568ea2Chandler Carruth{ 16e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands CPPUNIT_TEST_SUITE(IncludesTest); 17e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands CPPUNIT_TEST(incl0); 18e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands CPPUNIT_TEST(incl1); 19e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands CPPUNIT_TEST(incl2); 20e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands CPPUNIT_TEST_SUITE_END(); 21e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands 22e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sandsprotected: 23e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands void incl0(); 24e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands void incl1(); 258883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands void incl2(); 26e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands 278883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands static bool compare_strings(const char* s1_, const char* s2_) 288883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands { 29e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands return strcmp(s1_, s2_) < 0 ? 1 : 0; 30e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands } 31e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands}; 328883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands 338883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan SandsCPPUNIT_TEST_SUITE_REGISTRATION(IncludesTest); 348883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands 358883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands// 36cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// tests implementation 37cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines// 388883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sandsvoid IncludesTest::incl0() 398883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands{ 408883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands int numbers1[5] = { 1, 2, 3, 4, 5 }; 418883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands //int numbers2[5] = { 1, 2, 4, 8, 16 }; 428883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands int numbers3[2] = { 4, 8 }; 438883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands bool r1=includes(numbers1, numbers1 + 5, numbers3, numbers3 + 2); 448883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands CPPUNIT_ASSERT(!r1); 458883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands} 46e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sandsvoid IncludesTest::incl1() 47e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands{ 488883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands vector<int> v1(10); 498883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands vector<int> v2(3); 50cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines int i; 51cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines for (i = 0; (size_t)i < v1.size(); ++i) { 52e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands v1[i] = i; 53e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands } 54e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands 55e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands bool r1=includes(v1.begin(), v1.end(), v2.begin(), v2.end()); 56e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands CPPUNIT_ASSERT(!r1); 57e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands 58e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands for (i = 0; (size_t)i < v2.size(); ++i) 59e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands v2[i] = i + 3; 608883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands 61e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands bool r2=includes(v1.begin(), v1.end(), v2.begin(), v2.end()); 628883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands CPPUNIT_ASSERT(r2); 638883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands} 64e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sandsvoid IncludesTest::incl2() 65e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands{ 66e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands char const* names[] = { "Todd", "Mike", "Graham", "Jack", "Brett"}; 67e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands 68e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands const unsigned nameSize = sizeof(names)/sizeof(names[0]); 69cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines vector <char const*> v1(nameSize); 70cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines for (int i = 0; (size_t)i < v1.size(); ++i) { 71e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands v1[i] = names[i]; 728883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands } 73e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands vector <char const*> v2(2); 748883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands 758883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands v2[0] = "foo"; 76e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands v2[1] = "bar"; 77e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands sort(v1.begin(), v1.end(), compare_strings); 78e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands sort(v2.begin(), v2.end(), compare_strings); 79e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands 80cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines bool r1 = includes(v1.begin(), v1.end(), v2.begin(), v2.end(), compare_strings); 81e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands CPPUNIT_ASSERT(!r1); 828883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands 83e747fadedf8c5b80f1a0d5e84078a4428e06098eDuncan Sands v2[0] = "Brett"; 848883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands v2[1] = "Todd"; 858883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands bool r2 = includes(v1.begin(), v1.end(), v2.begin(), v2.end(), compare_strings); 868883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands CPPUNIT_ASSERT(r2); 878883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands} 888883c43ddc13e5f92ba8dfe00f2116a153a570d5Duncan Sands