Update contrib.
3 #if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
10 #include "cppunit/cppunit_proxy.h"
12 #if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES)
19 class PtrSpecTest : public CPPUNIT_NS::TestCase
21 CPPUNIT_TEST_SUITE(PtrSpecTest);
22 #if (defined (__DMC__) && defined (_STLP_DEBUG))
25 CPPUNIT_TEST(ptr_specialization_test);
26 CPPUNIT_TEST_SUITE_END();
29 /// this seems to be compile only test but...
30 void ptr_specialization_test();
34 bool operator () (_Tp *__ptr) const {
41 bool operator () (_Tp *__first, _Tp *__second) const {
42 return *__first < *__second;
47 CPPUNIT_TEST_SUITE_REGISTRATION(PtrSpecTest);
49 #define TEST_INSTANCIATE_CONTAINER(cont) \
50 template class cont<int*>; \
51 template class cont<int const*>; \
52 template class cont<int volatile*>; \
53 template class cont<int const volatile*>
55 #if !defined(_MSC_VER) || (_MSC_VER > 1200) // excluding MSVC 6.0
56 TEST_INSTANCIATE_CONTAINER(vector);
57 TEST_INSTANCIATE_CONTAINER(list);
58 # if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
59 TEST_INSTANCIATE_CONTAINER(slist);
61 TEST_INSTANCIATE_CONTAINER(deque);
62 TEST_INSTANCIATE_CONTAINER(set);
63 TEST_INSTANCIATE_CONTAINER(multiset);
66 //Function to test pointer to function support:
67 void FTypeInstance() {}
69 //Class to test pointer to member method support:
76 // tests implementation
78 void PtrSpecTest::ptr_specialization_test()
80 # if !(defined (__DMC__) && defined (_STLP_DEBUG))
81 int *int_array[] = {0, 0, 0};
82 int const* cint_array[] = {0, 0, 0};
85 vector<void*> void_vect;
86 deque<void*> void_deque;
87 list<void*> void_list;
88 #if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
89 slist<void*> void_slist;
94 typedef void (*FType)();
95 vector<FType> func_vector;
96 func_vector.push_back(&FTypeInstance);
99 #if !defined(__GNUC__) || (__GNUC__ > 2)
101 typedef void (AClass::*MFType)();
102 vector<MFType> mem_func_vector;
103 mem_func_vector.push_back(&AClass::func);
107 vector<int*> pint_vect;
108 vector<int*> pint_vect2;
109 vector<int const*> pcint_vect;
110 list<int*> pint_list;
111 list<int*> pint_list2;
112 list<int const*> pcint_list;
113 #if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
114 slist<int*> pint_slist;
115 slist<int*> pint_slist2;
116 slist<int const*> pcint_slist;
118 deque<int*> pint_deque;
119 deque<int*> pint_deque2;
120 deque<int const*> pcint_deque;
122 #ifdef _STLP_MEMBER_TEMPLATES
123 vector<int*> pint_vect_from_list(pint_list.begin(), pint_list.end());
125 pint_vect.insert(pint_vect.end(), pint_vect2.begin(), pint_vect2.end());
126 pint_vect.insert(pint_vect.end(), int_array, int_array + 3);
127 pint_vect2.insert(pint_vect2.end(), int_array, int_array + 3);
128 pcint_vect.insert(pcint_vect.end(), int_array, int_array + 3);
129 pcint_vect.insert(pcint_vect.end(), cint_array, cint_array + 3);
130 #if !defined(_STLP_DEBUG) || defined(_STLP_MEMBER_TEMPLATES)
131 pcint_vect.insert(pcint_vect.end(), pint_vect2.begin(), pint_vect2.end());
133 pcint_vect.insert(pcint_vect.end(), int_array, int_array + 3);
134 #ifdef _STLP_MEMBER_TEMPLATES
135 pint_vect.insert(pint_vect.end(), pint_list.begin(), pint_list.end());
136 pcint_vect.insert(pcint_vect.end(), pint_list.begin(), pint_list.end());
137 pcint_vect.insert(pcint_vect.end(), pcint_list.begin(), pcint_list.end());
138 pint_vect.assign(pint_list.begin(), pint_list.end());
139 pcint_vect.assign(pint_list.begin(), pint_list.end());
141 pint_vect.assign(int_array, int_array + 3);
142 pcint_vect.assign(int_array, int_array + 3);
143 pcint_vect.assign(cint_array, cint_array + 3);
144 copy(int_array, int_array + 3, back_inserter(pint_vect));
146 #ifdef _STLP_MEMBER_TEMPLATES
147 pint_list.sort(binary_pred<int>());
148 pcint_list.sort(binary_pred<int const>());
149 pint_list.unique(binary_pred<int>());
150 pcint_list.unique(binary_pred<int const>());
151 pint_list.merge(pint_list, binary_pred<int>());
152 pcint_list.merge(pcint_list, binary_pred<int const>());
153 pint_list.remove_if(unary_pred<int>());
154 pcint_list.remove_if(unary_pred<int const>());
157 copy(int_array, int_array + 3, back_inserter(pint_list));
158 copy(int_array, int_array + 3, back_inserter(pint_list2));
159 pint_list.insert(pint_list.end(), pint_list2.begin(), pint_list2.end());
160 #ifdef _STLP_MEMBER_TEMPLATES
161 pcint_list.insert(pcint_list.end(), pint_list.begin(), pint_list.end());
163 #if !defined(_STLP_DEBUG) || defined(_STLP_MEMBER_TEMPLATES)
164 pint_list.insert(pint_list.end(), pint_vect.begin(), pint_vect.end());
165 pcint_list.insert(pcint_list.end(), pint_vect.begin(), pint_vect.end());
166 pcint_list.insert(pcint_list.end(), pcint_vect.begin(), pcint_vect.end());
167 list<int*> pint_list_from_vect(pint_vect.begin(), pint_vect.end());
168 pint_list.assign(pint_vect.begin(), pint_vect.end());
169 pcint_list.assign(pint_vect.begin(), pint_vect.end());
171 pint_list.insert(pint_list.begin(), int_array, int_array + 3);
172 pint_list.insert(pint_list.end(), int_array, int_array + 3);
173 pcint_list.insert(pcint_list.end(), int_array, int_array + 3);
174 pcint_list.insert(pcint_list.end(), cint_array, cint_array + 3);
175 pint_list.assign(int_array, int_array + 3);
176 pcint_list.assign(int_array, int_array + 3);
177 pcint_list.assign(cint_array, cint_array + 3);
178 //pint_list.assign(pcint_vect.begin(), pcint_vect.end());
180 #if defined (STLPORT) && !defined (_STLP_NO_EXTENSIONS)
181 copy(int_array, int_array + 3, front_inserter(pint_slist));
182 copy(int_array, int_array + 3, front_inserter(pint_slist2));
183 pint_slist.insert(pint_slist.end(), pint_slist2.begin(), pint_slist2.end());
184 # if defined (_STLP_MEMBER_TEMPLATES)
185 pcint_slist.insert(pcint_slist.end(), pint_slist.begin(), pint_slist.end());
187 # if !defined (_STLP_DEBUG) || defined (_STLP_MEMBER_TEMPLATES)
188 pint_slist.insert(pint_slist.end(), pint_vect.begin(), pint_vect.end());
189 pcint_slist.insert(pcint_slist.end(), pint_vect.begin(), pint_vect.end());
190 pcint_slist.insert(pcint_slist.end(), pcint_vect.begin(), pcint_vect.end());
191 slist<int*> pint_slist_from_vect(pint_vect.begin(), pint_vect.end());
192 pint_slist.assign(pint_vect.begin(), pint_vect.end());
193 pcint_slist.assign(pint_vect.begin(), pint_vect.end());
195 pint_slist.insert(pint_slist.end(), int_array, int_array + 3);
196 pcint_slist.insert(pcint_slist.end(), int_array, int_array + 3);
197 pcint_slist.insert(pcint_slist.end(), cint_array, cint_array + 3);
198 pint_slist.assign(int_array, int_array + 3);
199 pcint_slist.assign(int_array, int_array + 3);
200 pcint_slist.assign(cint_array, cint_array + 3);
201 //pint_slist.assign(pcint_vect.begin(), pcint_vect.end());
204 copy(int_array, int_array + 3, back_inserter(pint_deque));
205 copy(int_array, int_array + 3, back_inserter(pint_deque2));
206 pint_deque.insert(pint_deque.end(), pint_deque2.begin(), pint_deque2.end());
207 #ifdef _STLP_MEMBER_TEMPLATES
208 pcint_deque.insert(pcint_deque.end(), pint_deque.begin(), pint_deque.end());
210 #if !defined(_STLP_DEBUG) || defined(_STLP_MEMBER_TEMPLATES)
211 pint_deque.insert(pint_deque.end(), pint_vect.begin(), pint_vect.end());
212 pcint_deque.insert(pcint_deque.end(), pint_vect.begin(), pint_vect.end());
213 pcint_deque.insert(pcint_deque.end(), pcint_vect.begin(), pcint_vect.end());
214 deque<int*> pint_deque_from_vect(pint_vect.begin(), pint_vect.end());
215 pint_deque.assign(pint_vect.begin(), pint_vect.end());
216 pcint_deque.assign(pint_vect.begin(), pint_vect.end());
218 pint_deque.insert(pint_deque.end(), int_array, int_array + 3);
219 pcint_deque.insert(pcint_deque.end(), int_array, int_array + 3);
220 pcint_deque.insert(pcint_deque.end(), cint_array, cint_array + 3);
221 pint_deque.assign(int_array, int_array + 3);
222 pcint_deque.assign(int_array, int_array + 3);
223 pcint_deque.assign(cint_array, cint_array + 3);
224 # endif /* __DMC__ */