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