ReactOS 0.4.15-dev-8219-ge8b88cf
ptrspec_test.cpp
Go to the documentation of this file.
1#include <vector>
2#include <list>
3#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
4# include <slist>
5#endif
6#include <deque>
7#include <set>
8#include <iterator>
9
11
12#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
13using namespace std;
14#endif
15
16//
17// TestCase class
18//
19class PtrSpecTest : public CPPUNIT_NS::TestCase
20{
25
26protected:
29 void function_pointer();
30
31 template <class _Tp>
32 struct unary_pred {
33 bool operator () (_Tp *__ptr) const {
34 return *__ptr == 0;
35 }
36 };
37
38 template <class _Tp>
39 struct binary_pred {
40 bool operator () (_Tp *__first, _Tp *__second) const {
41 return *__first < *__second;
42 }
43 };
44};
45
47
48#define TEST_INSTANCIATE_CONTAINER(cont) \
49 template class cont<int*>; \
50 template class cont<int const*>; \
51 template class cont<int volatile*>; \
52 template class cont<int const volatile*>
53
54#if !defined(_MSC_VER) || (_MSC_VER > 1200) // excluding MSVC 6.0
57# if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
59# endif
63#endif
64
65//Function to test pointer to function support:
67
68//Class to test pointer to member method support:
69class AClass {
70public:
71 void func() {}
72};
73
74//
75// tests implementation
76//
78{
79 int *int_array[] = {0, 0, 0};
80 int const* cint_array[] = {0, 0, 0};
81
82 {
83 vector<void*> void_vect;
84 deque<void*> void_deque;
85 list<void*> void_list;
86#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
87 slist<void*> void_slist;
88#endif
89 }
90
91 {
92 typedef void (*FType)();
93 vector<FType> func_vector;
94 func_vector.push_back(&FTypeInstance);
95 }
96
97#if !defined(__GNUC__) || (__GNUC__ > 2)
98 {
99 typedef void (AClass::*MFType)();
100 vector<MFType> mem_func_vector;
101 mem_func_vector.push_back(&AClass::func);
102 }
103#endif
104
105 vector<int*> pint_vect;
106 vector<int*> pint_vect2;
107 vector<int const*> pcint_vect;
108 list<int*> pint_list;
109 list<int*> pint_list2;
110 list<int const*> pcint_list;
111#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
112 slist<int*> pint_slist;
113 slist<int*> pint_slist2;
114 slist<int const*> pcint_slist;
115#endif
116 deque<int*> pint_deque;
117 deque<int*> pint_deque2;
118 deque<int const*> pcint_deque;
119
120#if !defined (STLPORT) || defined (_STLP_MEMBER_TEMPLATES)
121 vector<int*> pint_vect_from_list(pint_list.begin(), pint_list.end());
122#endif
123 pint_vect.insert(pint_vect.end(), pint_vect2.begin(), pint_vect2.end());
124 pint_vect.insert(pint_vect.end(), int_array, int_array + 3);
125 pint_vect2.insert(pint_vect2.end(), int_array, int_array + 3);
126 pcint_vect.insert(pcint_vect.end(), int_array, int_array + 3);
127 pcint_vect.insert(pcint_vect.end(), cint_array, cint_array + 3);
128#if !defined (STLPORT) || !defined(_STLP_DEBUG) || defined(_STLP_MEMBER_TEMPLATES)
129 pcint_vect.insert(pcint_vect.end(), pint_vect2.begin(), pint_vect2.end());
130#endif
131 pcint_vect.insert(pcint_vect.end(), int_array, int_array + 3);
132#if !defined (STLPORT) || defined (_STLP_MEMBER_TEMPLATES)
133 pint_vect.insert(pint_vect.end(), pint_list.begin(), pint_list.end());
134 pcint_vect.insert(pcint_vect.end(), pint_list.begin(), pint_list.end());
135 pcint_vect.insert(pcint_vect.end(), pcint_list.begin(), pcint_list.end());
136 pint_vect.assign(pint_list.begin(), pint_list.end());
137 pcint_vect.assign(pint_list.begin(), pint_list.end());
138#endif
139 pint_vect.assign(int_array, int_array + 3);
140 pcint_vect.assign(int_array, int_array + 3);
141 pcint_vect.assign(cint_array, cint_array + 3);
142 copy(int_array, int_array + 3, back_inserter(pint_vect));
143
144#if !defined (STLPORT) || defined (_STLP_MEMBER_TEMPLATES)
145 pint_list.sort(binary_pred<int>());
146 pcint_list.sort(binary_pred<int const>());
147 pint_list.unique(binary_pred<int>());
148 pcint_list.unique(binary_pred<int const>());
149 pint_list.merge(pint_list, binary_pred<int>());
150 pcint_list.merge(pcint_list, binary_pred<int const>());
151 pint_list.remove_if(unary_pred<int>());
152 pcint_list.remove_if(unary_pred<int const>());
153#endif
154
155 copy(int_array, int_array + 3, back_inserter(pint_list));
156 copy(int_array, int_array + 3, back_inserter(pint_list2));
157 pint_list.insert(pint_list.end(), pint_list2.begin(), pint_list2.end());
158#if !defined (STLPORT) || defined (_STLP_MEMBER_TEMPLATES)
159 pcint_list.insert(pcint_list.end(), pint_list.begin(), pint_list.end());
160#endif
161#if !defined (STLPORT) || !defined(_STLP_DEBUG) || defined(_STLP_MEMBER_TEMPLATES)
162 pint_list.insert(pint_list.end(), pint_vect.begin(), pint_vect.end());
163 pcint_list.insert(pcint_list.end(), pint_vect.begin(), pint_vect.end());
164 pcint_list.insert(pcint_list.end(), pcint_vect.begin(), pcint_vect.end());
165 list<int*> pint_list_from_vect(pint_vect.begin(), pint_vect.end());
166 pint_list.assign(pint_vect.begin(), pint_vect.end());
167 pcint_list.assign(pint_vect.begin(), pint_vect.end());
168#endif
169 pint_list.insert(pint_list.begin(), int_array, int_array + 3);
170 pint_list.insert(pint_list.end(), int_array, int_array + 3);
171 pcint_list.insert(pcint_list.end(), int_array, int_array + 3);
172 pcint_list.insert(pcint_list.end(), cint_array, cint_array + 3);
173 pint_list.assign(int_array, int_array + 3);
174 pcint_list.assign(int_array, int_array + 3);
175 pcint_list.assign(cint_array, cint_array + 3);
176 //pint_list.assign(pcint_vect.begin(), pcint_vect.end());
177
178#if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
179 copy(int_array, int_array + 3, front_inserter(pint_slist));
180 copy(int_array, int_array + 3, front_inserter(pint_slist2));
181 pint_slist.insert(pint_slist.end(), pint_slist2.begin(), pint_slist2.end());
182# if defined (_STLP_MEMBER_TEMPLATES)
183 pcint_slist.insert(pcint_slist.end(), pint_slist.begin(), pint_slist.end());
184# endif
185# if !defined (_STLP_DEBUG) || defined (_STLP_MEMBER_TEMPLATES)
186 pint_slist.insert(pint_slist.end(), pint_vect.begin(), pint_vect.end());
187 pcint_slist.insert(pcint_slist.end(), pint_vect.begin(), pint_vect.end());
188 pcint_slist.insert(pcint_slist.end(), pcint_vect.begin(), pcint_vect.end());
189 slist<int*> pint_slist_from_vect(pint_vect.begin(), pint_vect.end());
190 pint_slist.assign(pint_vect.begin(), pint_vect.end());
191 pcint_slist.assign(pint_vect.begin(), pint_vect.end());
192# endif
193 pint_slist.insert(pint_slist.end(), int_array, int_array + 3);
194 pcint_slist.insert(pcint_slist.end(), int_array, int_array + 3);
195 pcint_slist.insert(pcint_slist.end(), cint_array, cint_array + 3);
196 pint_slist.assign(int_array, int_array + 3);
197 pcint_slist.assign(int_array, int_array + 3);
198 pcint_slist.assign(cint_array, cint_array + 3);
199 //pint_slist.assign(pcint_vect.begin(), pcint_vect.end());
200#endif
201
202 copy(int_array, int_array + 3, back_inserter(pint_deque));
203 copy(int_array, int_array + 3, back_inserter(pint_deque2));
204 pint_deque.insert(pint_deque.end(), pint_deque2.begin(), pint_deque2.end());
205#if !defined (STLPORT) || defined (_STLP_MEMBER_TEMPLATES)
206 pcint_deque.insert(pcint_deque.end(), pint_deque.begin(), pint_deque.end());
207#endif
208#if !defined (STLPORT) || !defined(_STLP_DEBUG) || defined(_STLP_MEMBER_TEMPLATES)
209 pint_deque.insert(pint_deque.end(), pint_vect.begin(), pint_vect.end());
210 pcint_deque.insert(pcint_deque.end(), pint_vect.begin(), pint_vect.end());
211 pcint_deque.insert(pcint_deque.end(), pcint_vect.begin(), pcint_vect.end());
212 deque<int*> pint_deque_from_vect(pint_vect.begin(), pint_vect.end());
213 pint_deque.assign(pint_vect.begin(), pint_vect.end());
214 pcint_deque.assign(pint_vect.begin(), pint_vect.end());
215#endif
216 pint_deque.insert(pint_deque.end(), int_array, int_array + 3);
217 pcint_deque.insert(pcint_deque.end(), int_array, int_array + 3);
218 pcint_deque.insert(pcint_deque.end(), cint_array, cint_array + 3);
219 pint_deque.assign(int_array, int_array + 3);
220 pcint_deque.assign(int_array, int_array + 3);
221 pcint_deque.assign(cint_array, cint_array + 3);
222}
223
224typedef void (*Func)(int);
225void f1(int) {}
226
228{
229 vector<Func> fs;
230 fs.push_back(&f1);
231 CPPUNIT_ASSERT( !fs.empty() );
232}
front_insert_iterator< _Container > _STLP_CALL front_inserter(_Container &__x)
Definition: _iterator.h:216
back_insert_iterator< _Container > _STLP_CALL back_inserter(_Container &__x)
Definition: _iterator.h:187
INT copy(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], INT append, DWORD lpdwFlags, BOOL bTouch)
Definition: copy.c:51
void func()
CPPUNIT_TEST_SUITE_END()
CPPUNIT_TEST_SUITE(PtrSpecTest)
void ptr_specialization_test()
this seems to be compile only test but...
CPPUNIT_TEST(ptr_specialization_test)
void function_pointer()
CPPUNIT_TEST(function_pointer)
Definition: _deque.h:404
iterator insert(iterator __pos, const value_type &__x=_STLP_DEFAULT_CONSTRUCTED(_Tp))
Definition: _deque.h:730
iterator end()
Definition: _deque.h:433
iterator begin()
Definition: _deque.h:432
void assign(size_type __n, const _Tp &__val)
Definition: _deque.h:598
Definition: list.h:37
Definition: _set.h:220
Definition: _set.h:50
Definition: _slist.h:57
iterator end()
Definition: _slist.h:420
iterator insert(iterator __pos, const value_type &__x=_Tp())
Definition: _slist.h:635
void assign(size_type __n, const _Tp &__val)
Definition: _slist.h:348
iterator begin()
Definition: _slist.h:416
#define CPPUNIT_TEST_SUITE_REGISTRATION(X)
Definition: cppunit_mini.h:193
#define CPPUNIT_ASSERT(X)
Definition: cppunit_mini.h:200
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
Definition: features.h:417
void(* Func)(int)
#define TEST_INSTANCIATE_CONTAINER(cont)
void FTypeInstance()
void func_vector(void)
#define f1(x, y, z)
Definition: sha1.c:30
bool operator()(_Tp *__first, _Tp *__second) const
bool operator()(_Tp *__ptr) const
Definition: ffs.h:70