FEI Package Browser (Single Doxygen Collection) Version of the Day
Loading...
Searching...
No Matches
test_Set.cpp
Go to the documentation of this file.
1/*--------------------------------------------------------------------*/
2/* Copyright 2005 Sandia Corporation. */
3/* Under the terms of Contract DE-AC04-94AL85000, there is a */
4/* non-exclusive license for use of this work by or on behalf */
5/* of the U.S. Government. Export of this program may require */
6/* a license from the United States Government. */
7/*--------------------------------------------------------------------*/
8
9#include <fei_macros.hpp>
10#include <fei_mpi.h>
11
13
14#include <snl_fei_Utils.hpp>
15#include <fei_ctg_set.hpp>
16
17#undef fei_file
18#define fei_file "test_Set.cpp"
19#include <fei_ErrMacros.hpp>
20
22 : tester(comm)
23{
24}
25
29
30template<typename SET_TYPE>
31void set_test1(SET_TYPE& set_obj)
32{
33 if (set_obj.size() < 1) {
34 typename SET_TYPE::const_iterator
35 s_beg = set_obj.begin(),
36 s_end = set_obj.end();
37
38 if (s_beg != s_end) {
39 throw std::runtime_error("failed test 1");
40 }
41 }
42 else set_obj.clear();
43
44 std::pair<typename SET_TYPE::const_iterator,bool> result = set_obj.insert(5);
45
46 if (!result.second) {
47 throw std::runtime_error("failed test 2");
48 }
49
50 result = set_obj.insert(4);
51
52 if (!result.second) {
53 throw std::runtime_error("failed test 3");
54 }
55
56 result = set_obj.insert(7);
57
58 ++(result.first);
59 if (result.first != set_obj.end()) {
60 throw std::runtime_error("failed test 4");
61 }
62
63 result = set_obj.insert(6);
64
65 if (!result.second) {
66 throw std::runtime_error("failed test 5");
67 }
68
69 ++(result.first);
70
71 if (*(result.first) != 7) {
72 throw std::runtime_error("failed test 6");
73 }
74
75 ++(result.first);
76 if (result.first != set_obj.end()) {
77 throw std::runtime_error("failed test 7");
78 }
79
80 result = set_obj.insert(2);
81 result = set_obj.insert(3);
82
83 ++(result.first);
84 if (*(result.first) != 4) {
85 throw std::runtime_error("failed test 8");
86 }
87
88 SET_TYPE set_copy(set_obj);
89
90 if (set_copy.size() != set_obj.size()) {
91 throw std::runtime_error("failed test 9");
92 }
93
94 typename SET_TYPE::const_iterator
95 s_iter = set_obj.begin(),
96 s_end = set_obj.end();
97
98 typename SET_TYPE::const_iterator
99 c_iter = set_copy.begin(),
100 c_end = set_copy.end();
101
102 for(; s_iter != s_end; ++s_iter) {
103 if (*s_iter != *c_iter) {
104 throw std::runtime_error("failed test 10");
105 }
106 ++c_iter;
107 }
108
109 if (c_iter != c_end) {
110 throw std::runtime_error("failed test 11");
111 }
112}
113
114template<typename SET_TYPE>
115void set_test2(SET_TYPE& set_obj)
116{
117 if (set_obj.size() < 1) {
118 typename SET_TYPE::const_iterator
119 s_beg = set_obj.begin(),
120 s_end = set_obj.end();
121
122 if (s_beg != s_end) {
123 throw std::runtime_error("failed test2 1");
124 }
125 }
126 else set_obj.clear();
127
128 set_obj.insert2(5);
129 set_obj.insert2(4);
130 set_obj.insert2(7);
131 set_obj.insert2(6);
132 set_obj.insert2(2);
133 set_obj.insert2(3);
134
135 SET_TYPE set_copy(set_obj);
136
137 if (set_copy.size() != set_obj.size()) {
138 throw std::runtime_error("failed test2 2");
139 }
140
141 typename SET_TYPE::const_iterator
142 s_iter = set_obj.begin(),
143 s_end = set_obj.end();
144
145 typename SET_TYPE::const_iterator
146 c_iter = set_copy.begin(),
147 c_end = set_copy.end();
148
149 for(; s_iter != s_end; ++s_iter) {
150 if (*s_iter != *c_iter) {
151 throw std::runtime_error("failed test2 3");
152 }
153 ++c_iter;
154 }
155
156 if (c_iter != c_end) {
157 throw std::runtime_error("failed test2 4");
158 }
159}
160
162{
163 if (numProcs_ > 1) return(0);
164
165 CHK_ERR( test1() );
166 CHK_ERR( test2() );
167 CHK_ERR( test3() );
168 CHK_ERR( test4() );
169 CHK_ERR( test5() );
170 CHK_ERR( test6() );
171 CHK_ERR( test7() );
172 CHK_ERR( test8() );
173 CHK_ERR( test9() );
174
175 return(0);
176}
177
179{
180 return(0);
181}
182
184{
185 FEI_COUT << "testing fei::ctg_set<int> insert,insert2,find,iterate...";
186 fei::ctg_set<int> sset2;
187
188 sset2.insert(5);
189 sset2.insert(8);
190 sset2.insert(3);
191 sset2.insert(0);
192 sset2.insert(4);
193 sset2.insert(1);
194 sset2.insert(2);
195
197 ss2_iter = sset2.begin(),
198 ss2_end = sset2.end();
199
200 int i=0;
201 for(; ss2_iter != ss2_end; ++ss2_iter) {
202 if (*ss2_iter != i && *ss2_iter != 8) {
203 return(-1);
204 }
205 ++i;
206 }
207
208 int size2 = sset2.size();
209 if (size2 != 7) {
210 return(-1);
211 }
212
214 if (*iter4 != 4) {
215 return(-2);
216 }
217
218 ++iter4;
219 if (*iter4 != 5) {
220 return(-3);
221 }
222
224 if (*iter8 != 8) {
225 return(-4);
226 }
227
228 set_test2(sset2);
229
230 fei::ctg_set<int> sset3;
231
232 sset3.insert2(1);
233 sset3.insert2(3);
234 sset3.insert2(6);
235 sset3.insert2(8);
236 sset3.insert2(0);
237 sset3.insert2(2);
238 sset3.insert2(9);
239 sset3.insert2(11);
240 sset3.insert2(4);
241 sset3.insert2(10);
242
243 int size3 = sset3.size();
244 if (size3 != 10) {
245 return(-1);
246 }
247
248 fei::ctg_set<int>::const_iterator ss3_iter4 = sset3.find(4);
249 if (*ss3_iter4 != 4) {
250 return(-2);
251 }
252
253 ++ss3_iter4;
254 if (*ss3_iter4 != 6) {
255 return(-3);
256 }
257
258 fei::ctg_set<int>::const_iterator ss3_iter8 = sset3.find(8);
259 if (*ss3_iter8 != 8) {
260 return(-4);
261 }
262
263 FEI_COUT << "ok"<<FEI_ENDL;
264 return(0);
265}
266
268{
269 return(0);
270}
271
273{
274
275 return(0);
276}
277
279{
280 FEI_COUT << "testing fei::binarySearch(...,start,end,...)...";
281
282 std::vector<int> array;
283 for(int i=0; i<10; ++i) array.push_back(i);
284
285 int start = 2;
286 int end = 6;
287 int insertPoint = -1;
288 int offset = fei::binarySearch(9, &array[0], array.size(),
289 start, end, insertPoint);
290 if (offset >= 0) {
291 return(-1);
292 }
293
294 offset = fei::binarySearch(4, &array[0], array.size(),
295 start, end, insertPoint);
296
297 if (offset < 0) {
298 return(-1);
299 }
300
302 sset.insert2(1);
303 sset.insert2(5);
304 sset.insert2(9);
305 sset.insert2(0);
306 sset.insert2(4);
307 sset.insert2(8);
308
309 if (sset.size() != 6) {
310 ERReturn(-1);
311 }
312
313 if (sset.find(0) == sset.end()) {
314 ERReturn(-1);
315 }
316
317 FEI_COUT << "ok"<<FEI_ENDL;
318
319 return(0);
320}
321
323{
324 return(0);
325}
326
328{
329 return(0);
330}
331
332
334{
335 return(0);
336}
337
339{
340
341 return(0);
342}
int size() const
static const_iterator end()
std::pair< const_iterator, bool > insert(const T &item)
const_iterator find(const T &item)
void insert2(const T &item)
const_iterator begin() const
virtual ~test_Set()
Definition test_Set.cpp:26
int test6()
Definition test_Set.cpp:322
test_Set(MPI_Comm comm)
Definition test_Set.cpp:21
int test8()
Definition test_Set.cpp:333
int runtests()
Definition test_Set.cpp:161
int test5()
Definition test_Set.cpp:278
int test4()
Definition test_Set.cpp:272
int test7()
Definition test_Set.cpp:327
int test3()
Definition test_Set.cpp:267
int test2()
Definition test_Set.cpp:183
int test9()
Definition test_Set.cpp:338
int test1()
Definition test_Set.cpp:178
int numProcs_
Definition tester.hpp:38
#define ERReturn(a)
#define CHK_ERR(a)
#define FEI_ENDL
#define FEI_COUT
#define MPI_Comm
Definition fei_mpi.h:56
int binarySearch(const T &item, const T *list, int len)
void set_test1(SET_TYPE &set_obj)
Definition test_Set.cpp:31
void set_test2(SET_TYPE &set_obj)
Definition test_Set.cpp:115