ReactOS 0.4.15-dev-5865-g640e228
find_test.cpp
Go to the documentation of this file.
1#include <vector>
2#include <algorithm>
3
5
6#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
7using namespace std;
8#endif
9
10//
11// TestCase class
12//
13class FindTest : public CPPUNIT_NS::TestCase
14{
22
23protected:
24 void find0();
25 void find1();
26 void findif0();
27 void findif1();
28 void find_char();
29 static bool odd(int a_);
30 static bool div_3(int a_);
31};
32
34
35//
36// tests implementation
37//
39{
40 int numbers[10] = { 0, 1, 4, 9, 16, 25, 36, 49, 64 };
41
42 int *location = find((int*)numbers, (int*)numbers + 10, 25);
43
44 CPPUNIT_ASSERT((location - numbers)==5);
45
46 int *out_range = find((int*)numbers, (int*)numbers + 10, 128);
47
48 CPPUNIT_ASSERT( out_range == (int *)(numbers + 10) );
49}
50
51struct Key
52{
53 int data;
54
55 /* This operator should rather be global and commutative
56 but implementing it this way show that STLport used to
57 ask too much from the user code. */
58 bool operator == (int d) const
59 {
60 return data == d;
61 }
62};
63
65{
66 int years[] = { 1942, 1952, 1962, 1972, 1982, 1992 };
67
68 const unsigned yearCount = sizeof(years) / sizeof(years[0]);
69 int* location = find((int*)years, (int*)years + yearCount, 1972);
70
71 CPPUNIT_ASSERT((location - years)==3);
72}
73
75{
76 {
77 int numbers[6] = { 2, 4, 8, 15, 32, 64 };
78 int *location = find_if((int*)numbers, (int*)numbers + 6, odd);
79
80 CPPUNIT_ASSERT((location - numbers)==3);
81
82 int numbers_even[6] = { 2, 4, 8, 16, 32, 64 };
83
84 int *out_range = find_if((int*)numbers_even, (int*)numbers_even + 6, odd);
85
86 CPPUNIT_ASSERT( out_range == (int *)(numbers_even + 6) );
87 }
88
89 {
90 Key keys[10] = { {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0} };
91 Key const* k = find(keys + 0, keys + 10, 5);
92 CPPUNIT_ASSERT( k == keys + 10 );
93 }
94}
95
97{
98 typedef vector <int> IntVec;
99 IntVec v(10);
100 for(int i = 0; (size_t)i < v.size(); ++i)
101 v[i] =(i + 1) *(i + 1);
102 IntVec::iterator iter;
103 iter = find_if(v.begin(), v.end(), div_3);
104 CPPUNIT_ASSERT((iter - v.begin())==2);
105}
106
107bool FindTest::odd(int a_)
108{
109 return (a_ % 2) != 0;
110}
111
112bool FindTest::div_3(int a_)
113{
114 return a_ % 3 ? 0 : 1;
115}
116
118{
119 char str[] = "abcdefghij";
120 char *pstr = (char*)str;
121 const char* cpstr = (const char*)str;
122 size_t str_size = sizeof(str) / sizeof(char);
123
124 char *d = find(pstr, pstr + str_size, 'd');
125 CPPUNIT_ASSERT( *d == 'd' );
126
127 const char *e = find(cpstr, cpstr + str_size, 'e');
128 CPPUNIT_ASSERT( *e == 'e' );
129
130 char *last = find(pstr, pstr + str_size, 'x');
131 CPPUNIT_ASSERT( last == pstr + str_size );
132
133 const char *clast = find(cpstr, cpstr + str_size, 'x');
134 CPPUNIT_ASSERT( clast == cpstr + str_size );
135}
_STLP_MOVE_TO_STD_NAMESPACE _InputIter find_if(_InputIter __first, _InputIter __last, _Predicate __pred)
Definition: _algobase.c:214
static bool odd(int a_)
Definition: find_test.cpp:107
void find_char()
Definition: find_test.cpp:117
CPPUNIT_TEST(find0)
void find1()
Definition: find_test.cpp:64
CPPUNIT_TEST_SUITE(FindTest)
void findif1()
Definition: find_test.cpp:96
static bool div_3(int a_)
Definition: find_test.cpp:112
CPPUNIT_TEST_SUITE_END()
CPPUNIT_TEST(findif1)
CPPUNIT_TEST(find1)
CPPUNIT_TEST(findif0)
void findif0()
Definition: find_test.cpp:74
void find0()
Definition: find_test.cpp:38
CPPUNIT_TEST(find_char)
#define CPPUNIT_TEST_SUITE_REGISTRATION(X)
Definition: cppunit_mini.h:193
#define CPPUNIT_ASSERT(X)
Definition: cppunit_mini.h:200
static TAGID TAGID find
Definition: db.cpp:155
__kernel_size_t size_t
Definition: linux.h:237
const GLdouble * v
Definition: gl.h:2040
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
POINT last
Definition: font.c:46
#define d
Definition: ke_i.h:81
#define e
Definition: ke_i.h:82
int k
Definition: mpi.c:3369
Definition: features.h:417
const WCHAR * str
bool operator==(int d) const
Definition: find_test.cpp:58
int data
Definition: find_test.cpp:53
Definition: unary.h:11