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