1 /*
2 * Copyright (C) 1998-2018 ALPS Collaboration. See COPYRIGHT.TXT
3 * All rights reserved. Use is subject to license terms. See LICENSE.TXT
4 * For use in publications, see ACKNOWLEDGE.TXT
5 */
6
7 #include <alps/params.hpp>
8 #include <gtest/gtest.h>
9
10 class ParamTestCompare : public ::testing::Test {
11 public:
12 alps::params p;
13
ParamTestCompare()14 ParamTestCompare() {
15 p["1"]=1;
16 p["1.25"]=1.25;
17 p["1.00"]=1.0;
18 p["str"]="1.25";
19 }
20 };
21
TEST_F(ParamTestCompare,SameTypeLiteralRHS)22 TEST_F(ParamTestCompare,SameTypeLiteralRHS) {
23 // 9 possible comparizons with less-than, equal, and more-than values: ints
24 EXPECT_TRUE( p["1"]> 0);
25 EXPECT_TRUE( p["1"]>=0);
26 EXPECT_TRUE( p["1"]!=0);
27 EXPECT_TRUE( p["1"]>=1);
28 EXPECT_TRUE( p["1"]<=1);
29 EXPECT_TRUE( p["1"]==1);
30 EXPECT_TRUE( p["1"]< 2);
31 EXPECT_TRUE( p["1"]<=2);
32 EXPECT_TRUE( p["1"]!=2);
33
34 // Negation of the 9 comparizons: ints
35 EXPECT_FALSE(p["1"]<=0);
36 EXPECT_FALSE(p["1"]< 0);
37 EXPECT_FALSE(p["1"]==0);
38 EXPECT_FALSE(p["1"]< 1);
39 EXPECT_FALSE(p["1"]> 1);
40 EXPECT_FALSE(p["1"]!=1);
41 EXPECT_FALSE(p["1"]>=2);
42 EXPECT_FALSE(p["1"]> 2);
43 EXPECT_FALSE(p["1"]==2);
44
45 // 9 possible comparizons with less-than, equal, and more-than values: doubles
46 EXPECT_TRUE( p["1.25"]> 0.5);
47 EXPECT_TRUE( p["1.25"]>=0.5);
48 EXPECT_TRUE( p["1.25"]!=0.5);
49 EXPECT_TRUE( p["1.25"]>=1.25);
50 EXPECT_TRUE( p["1.25"]<=1.25);
51 EXPECT_TRUE( p["1.25"]==1.25);
52 EXPECT_TRUE( p["1.25"]< 1.50);
53 EXPECT_TRUE( p["1.25"]<=1.50);
54 EXPECT_TRUE( p["1.25"]!=1.50);
55
56 // Negation of the 9 comparizons: doubles
57 EXPECT_FALSE(p["1.25"]<=0.5);
58 EXPECT_FALSE(p["1.25"]< 0.5);
59 EXPECT_FALSE(p["1.25"]==0.5);
60 EXPECT_FALSE(p["1.25"]< 1.25);
61 EXPECT_FALSE(p["1.25"]> 1.25);
62 EXPECT_FALSE(p["1.25"]!=1.25);
63 EXPECT_FALSE(p["1.25"]>=1.50);
64 EXPECT_FALSE(p["1.25"]> 1.50);
65 EXPECT_FALSE(p["1.25"]==1.50);
66
67 // There are no std::string literals, see the corresponding test for comparison with char-string literals
68 }
69
TEST_F(ParamTestCompare,SameTypeLiteralLHS)70 TEST_F(ParamTestCompare,SameTypeLiteralLHS) {
71 // 9 possible comparizons with less-than, equal, and more-than values: ints
72 EXPECT_TRUE( 0< p["1"]);
73 EXPECT_TRUE( 0<=p["1"]);
74 EXPECT_TRUE( 0!=p["1"]);
75 EXPECT_TRUE( 1<=p["1"]);
76 EXPECT_TRUE( 1>=p["1"]);
77 EXPECT_TRUE( 1==p["1"]);
78 EXPECT_TRUE( 2> p["1"]);
79 EXPECT_TRUE( 2>=p["1"]);
80 EXPECT_TRUE( 2!=p["1"]);
81
82 // Negation of the 9 comparizons: ints
83 EXPECT_FALSE(0>=p["1"]);
84 EXPECT_FALSE(0> p["1"]);
85 EXPECT_FALSE(0==p["1"]);
86 EXPECT_FALSE(1> p["1"]);
87 EXPECT_FALSE(1< p["1"]);
88 EXPECT_FALSE(1!=p["1"]);
89 EXPECT_FALSE(2<=p["1"]);
90 EXPECT_FALSE(2< p["1"]);
91 EXPECT_FALSE(2==p["1"]);
92
93 // 9 possible comparizons with less-than, equal, and more-than values: doubles
94 EXPECT_TRUE( 0.50< p["1.25"]);
95 EXPECT_TRUE( 0.50<=p["1.25"]);
96 EXPECT_TRUE( 0.50!=p["1.25"]);
97 EXPECT_TRUE( 1.25<=p["1.25"]);
98 EXPECT_TRUE( 1.25>=p["1.25"]);
99 EXPECT_TRUE( 1.25==p["1.25"]);
100 EXPECT_TRUE( 1.50> p["1.25"]);
101 EXPECT_TRUE( 1.50>=p["1.25"]);
102 EXPECT_TRUE( 1.50!=p["1.25"]);
103
104 // Negation of the 9 comparizons: doubles
105 EXPECT_FALSE(0.50>=p["1.25"]);
106 EXPECT_FALSE(0.50> p["1.25"]);
107 EXPECT_FALSE(0.50==p["1.25"]);
108 EXPECT_FALSE(1.25> p["1.25"]);
109 EXPECT_FALSE(1.25< p["1.25"]);
110 EXPECT_FALSE(1.25!=p["1.25"]);
111 EXPECT_FALSE(1.50<=p["1.25"]);
112 EXPECT_FALSE(1.50< p["1.25"]);
113 EXPECT_FALSE(1.50==p["1.25"]);
114
115 // There are no std::string literals, see the corresponding test for comparison with char-string literals
116 }
117
TEST_F(ParamTestCompare,SameTypeVarRHS)118 TEST_F(ParamTestCompare,SameTypeVarRHS) {
119 {
120 // 9 possible comparizons with less-than, equal, and more-than values: ints
121 int less_than=0;
122 int more_than=2;
123 int equal=1;
124 EXPECT_TRUE( p["1"]> less_than);
125 EXPECT_TRUE( p["1"]>=less_than);
126 EXPECT_TRUE( p["1"]!=less_than);
127 EXPECT_TRUE( p["1"]>=equal);
128 EXPECT_TRUE( p["1"]<=equal);
129 EXPECT_TRUE( p["1"]==equal);
130 EXPECT_TRUE( p["1"]< more_than);
131 EXPECT_TRUE( p["1"]<=more_than);
132 EXPECT_TRUE( p["1"]!=more_than);
133
134 // Negation of the 9 comparizons: ints
135 EXPECT_FALSE(p["1"]<=less_than);
136 EXPECT_FALSE(p["1"]< less_than);
137 EXPECT_FALSE(p["1"]==less_than);
138 EXPECT_FALSE(p["1"]< equal);
139 EXPECT_FALSE(p["1"]> equal);
140 EXPECT_FALSE(p["1"]!=equal);
141 EXPECT_FALSE(p["1"]>=more_than);
142 EXPECT_FALSE(p["1"]> more_than);
143 EXPECT_FALSE(p["1"]==more_than);
144 }
145
146 {
147 // 9 possible comparizons with less-than, equal, and more-than values: doubles
148 double less_than=0.5;
149 double more_than=1.5;
150 double equal=1.25;
151
152 EXPECT_TRUE( p["1.25"]> less_than);
153 EXPECT_TRUE( p["1.25"]>=less_than);
154 EXPECT_TRUE( p["1.25"]!=less_than);
155 EXPECT_TRUE( p["1.25"]>=equal);
156 EXPECT_TRUE( p["1.25"]<=equal);
157 EXPECT_TRUE( p["1.25"]==equal);
158 EXPECT_TRUE( p["1.25"]< more_than);
159 EXPECT_TRUE( p["1.25"]<=more_than);
160 EXPECT_TRUE( p["1.25"]!=more_than);
161
162 // Negation of the 9 comparizons: doubles
163 EXPECT_FALSE(p["1.25"]<=less_than);
164 EXPECT_FALSE(p["1.25"]< less_than);
165 EXPECT_FALSE(p["1.25"]==less_than);
166 EXPECT_FALSE(p["1.25"]< equal);
167 EXPECT_FALSE(p["1.25"]> equal);
168 EXPECT_FALSE(p["1.25"]!=equal);
169 EXPECT_FALSE(p["1.25"]>=more_than);
170 EXPECT_FALSE(p["1.25"]> more_than);
171 EXPECT_FALSE(p["1.25"]==more_than);
172 }
173
174 {
175 // 9 possible comparizons with less-than, equal, and more-than values: strings
176 std::string less_than="1.2";
177 std::string more_than="2xx";
178 std::string equal="1.25";
179
180 EXPECT_TRUE( p["str"]> less_than);
181 EXPECT_TRUE( p["str"]>=less_than);
182 EXPECT_TRUE( p["str"]!=less_than);
183 EXPECT_TRUE( p["str"]>=equal);
184 EXPECT_TRUE( p["str"]<=equal);
185 EXPECT_TRUE( p["str"]==equal);
186 EXPECT_TRUE( p["str"]< more_than);
187 EXPECT_TRUE( p["str"]<=more_than);
188 EXPECT_TRUE( p["str"]!=more_than);
189
190 // Negation of the 9 comparizons: strings
191 EXPECT_FALSE(p["str"]<=less_than);
192 EXPECT_FALSE(p["str"]< less_than);
193 EXPECT_FALSE(p["str"]==less_than);
194 EXPECT_FALSE(p["str"]< equal);
195 EXPECT_FALSE(p["str"]> equal);
196 EXPECT_FALSE(p["str"]!=equal);
197 EXPECT_FALSE(p["str"]>=more_than);
198 EXPECT_FALSE(p["str"]> more_than);
199 EXPECT_FALSE(p["str"]==more_than);
200 }
201 }
202
TEST_F(ParamTestCompare,SameTypeVarLHS)203 TEST_F(ParamTestCompare,SameTypeVarLHS) {
204 {
205 // 9 possible comparizons with less-than, equal, and more-than values: ints
206 int less_than=0;
207 int more_than=2;
208 int equal=1;
209 EXPECT_TRUE( less_than< p["1"]);
210 EXPECT_TRUE( less_than<=p["1"]);
211 EXPECT_TRUE( less_than!=p["1"]);
212 EXPECT_TRUE( equal <=p["1"]);
213 EXPECT_TRUE( equal >=p["1"]);
214 EXPECT_TRUE( equal ==p["1"]);
215 EXPECT_TRUE( more_than> p["1"]);
216 EXPECT_TRUE( more_than>=p["1"]);
217 EXPECT_TRUE( more_than!=p["1"]);
218
219 // Negation of the 9 comparizons: ints
220 EXPECT_FALSE(less_than>=p["1"]);
221 EXPECT_FALSE(less_than> p["1"]);
222 EXPECT_FALSE(less_than==p["1"]);
223 EXPECT_FALSE(equal > p["1"]);
224 EXPECT_FALSE(equal < p["1"]);
225 EXPECT_FALSE(equal !=p["1"]);
226 EXPECT_FALSE(more_than<=p["1"]);
227 EXPECT_FALSE(more_than< p["1"]);
228 EXPECT_FALSE(more_than==p["1"]);
229 }
230
231 {
232 // 9 possible comparizons with less-than, equal, and more-than values: doubles
233 double less_than=0.5;
234 double more_than=1.5;
235 double equal=1.25;
236
237 EXPECT_TRUE( less_than< p["1.25"]);
238 EXPECT_TRUE( less_than<=p["1.25"]);
239 EXPECT_TRUE( less_than!=p["1.25"]);
240 EXPECT_TRUE( equal <=p["1.25"]);
241 EXPECT_TRUE( equal >=p["1.25"]);
242 EXPECT_TRUE( equal ==p["1.25"]);
243 EXPECT_TRUE( more_than> p["1.25"]);
244 EXPECT_TRUE( more_than>=p["1.25"]);
245 EXPECT_TRUE( more_than!=p["1.25"]);
246
247 // Negation of the 9 comparizons: doubles
248 EXPECT_FALSE(less_than>=p["1.25"]);
249 EXPECT_FALSE(less_than> p["1.25"]);
250 EXPECT_FALSE(less_than==p["1.25"]);
251 EXPECT_FALSE(equal > p["1.25"]);
252 EXPECT_FALSE(equal < p["1.25"]);
253 EXPECT_FALSE(equal !=p["1.25"]);
254 EXPECT_FALSE(more_than<=p["1.25"]);
255 EXPECT_FALSE(more_than< p["1.25"]);
256 EXPECT_FALSE(more_than==p["1.25"]);
257 }
258
259 {
260 // 9 possible comparizons with less-than, equal, and more-than values: strings
261 std::string less_than="1.2";
262 std::string more_than="2xx";
263 std::string equal="1.25";
264
265 EXPECT_TRUE( less_than< p["str"]);
266 EXPECT_TRUE( less_than<=p["str"]);
267 EXPECT_TRUE( less_than!=p["str"]);
268 EXPECT_TRUE( equal <=p["str"]);
269 EXPECT_TRUE( equal >=p["str"]);
270 EXPECT_TRUE( equal ==p["str"]);
271 EXPECT_TRUE( more_than> p["str"]);
272 EXPECT_TRUE( more_than>=p["str"]);
273 EXPECT_TRUE( more_than!=p["str"]);
274
275 // Negation of the 9 comparizons: strings
276 EXPECT_FALSE(less_than>=p["str"]);
277 EXPECT_FALSE(less_than> p["str"]);
278 EXPECT_FALSE(less_than==p["str"]);
279 EXPECT_FALSE(equal > p["str"]);
280 EXPECT_FALSE(equal < p["str"]);
281 EXPECT_FALSE(equal !=p["str"]);
282 EXPECT_FALSE(more_than<=p["str"]);
283 EXPECT_FALSE(more_than< p["str"]);
284 EXPECT_FALSE(more_than==p["str"]);
285 }
286 }
287
TEST_F(ParamTestCompare,SimilarTypeLiteralRHS)288 TEST_F(ParamTestCompare,SimilarTypeLiteralRHS) {
289 // 9 possible comparizons with less-than, equal, and more-than values: ints vs doubles
290 EXPECT_TRUE( p["1"]> 0.5);
291 EXPECT_TRUE( p["1"]>=0.5);
292 EXPECT_TRUE( p["1"]!=0.5);
293 EXPECT_TRUE( p["1"]>=1.0);
294 EXPECT_TRUE( p["1"]<=1.0);
295 EXPECT_TRUE( p["1"]==1.0);
296 EXPECT_TRUE( p["1"]< 2.5);
297 EXPECT_TRUE( p["1"]<=2.5);
298 EXPECT_TRUE( p["1"]!=2.5);
299
300 // Negation of the 9 comparizons: ints vs doubles
301 EXPECT_FALSE(p["1"]<=0.5);
302 EXPECT_FALSE(p["1"]< 0.5);
303 EXPECT_FALSE(p["1"]==0.5);
304 EXPECT_FALSE(p["1"]< 1.0);
305 EXPECT_FALSE(p["1"]> 1.0);
306 EXPECT_FALSE(p["1"]!=1.0);
307 EXPECT_FALSE(p["1"]>=2.5);
308 EXPECT_FALSE(p["1"]> 2.5);
309 EXPECT_FALSE(p["1"]==2.5);
310
311 // 9 possible comparizons with less-than, equal, and more-than values: doubles vs ints
312 EXPECT_THROW(p["1.25"]> 0, alps::params::type_mismatch);
313 EXPECT_THROW(p["1.25"]>=0, alps::params::type_mismatch);
314 EXPECT_THROW(p["1.25"]!=0, alps::params::type_mismatch);
315 EXPECT_THROW(p["1.00"]>=1, alps::params::type_mismatch);
316 EXPECT_THROW(p["1.00"]<=1, alps::params::type_mismatch);
317 EXPECT_THROW(p["1.00"]==1, alps::params::type_mismatch);
318 EXPECT_THROW(p["1.25"]< 2, alps::params::type_mismatch);
319 EXPECT_THROW(p["1.25"]<=2, alps::params::type_mismatch);
320 EXPECT_THROW(p["1.25"]!=2, alps::params::type_mismatch);
321
322 // Negation of the 9 comparizons: doubles vs ints
323 EXPECT_THROW(p["1.25"]<=0, alps::params::type_mismatch);
324 EXPECT_THROW(p["1.25"]< 0, alps::params::type_mismatch);
325 EXPECT_THROW(p["1.25"]==0, alps::params::type_mismatch);
326 EXPECT_THROW(p["1.00"]< 1, alps::params::type_mismatch);
327 EXPECT_THROW(p["1.00"]> 1, alps::params::type_mismatch);
328 EXPECT_THROW(p["1.00"]!=1, alps::params::type_mismatch);
329 EXPECT_THROW(p["1.25"]>=2, alps::params::type_mismatch);
330 EXPECT_THROW(p["1.25"]> 2, alps::params::type_mismatch);
331 EXPECT_THROW(p["1.25"]==2, alps::params::type_mismatch);
332
333 // 9 possible comparizons with less-than, equal, and more-than values: std::strings vs "char-strings"
334 EXPECT_TRUE( p["str"]> "1.2");
335 EXPECT_TRUE( p["str"]>="1.2");
336 EXPECT_TRUE( p["str"]!="1.2");
337 EXPECT_TRUE( p["str"]>="1.25");
338 EXPECT_TRUE( p["str"]<="1.25");
339 EXPECT_TRUE( p["str"]=="1.25");
340 EXPECT_TRUE( p["str"]< "2xx");
341 EXPECT_TRUE( p["str"]<="2xx");
342 EXPECT_TRUE( p["str"]!="2xx");
343
344 // Negation of the 9 comparizons: std::strings vs "char-strings"
345 EXPECT_FALSE(p["str"]<="1.2");
346 EXPECT_FALSE(p["str"]< "1.2");
347 EXPECT_FALSE(p["str"]=="1.2");
348 EXPECT_FALSE(p["str"]< "1.25");
349 EXPECT_FALSE(p["str"]> "1.25");
350 EXPECT_FALSE(p["str"]!="1.25");
351 EXPECT_FALSE(p["str"]>="2xx");
352 EXPECT_FALSE(p["str"]> "2xx");
353 EXPECT_FALSE(p["str"]=="2xx");
354 }
355
TEST_F(ParamTestCompare,SimilarTypeLiteralLHS)356 TEST_F(ParamTestCompare,SimilarTypeLiteralLHS) {
357 // 9 possible comparizons with less-than, equal, and more-than values: ints vs doubles
358 EXPECT_TRUE( 0.5< p["1"]);
359 EXPECT_TRUE( 0.5<=p["1"]);
360 EXPECT_TRUE( 0.5!=p["1"]);
361 EXPECT_TRUE( 1.0<=p["1"]);
362 EXPECT_TRUE( 1.0>=p["1"]);
363 EXPECT_TRUE( 1.0==p["1"]);
364 EXPECT_TRUE( 2.5> p["1"]);
365 EXPECT_TRUE( 2.5>=p["1"]);
366 EXPECT_TRUE( 2.5!=p["1"]);
367
368 // Negation of the 9 comparizons: ints vs doubles
369 EXPECT_FALSE(0.5>=p["1"]);
370 EXPECT_FALSE(0.5> p["1"]);
371 EXPECT_FALSE(0.5==p["1"]);
372 EXPECT_FALSE(1.0> p["1"]);
373 EXPECT_FALSE(1.0< p["1"]);
374 EXPECT_FALSE(1.0!=p["1"]);
375 EXPECT_FALSE(2.5<=p["1"]);
376 EXPECT_FALSE(2.5< p["1"]);
377 EXPECT_FALSE(2.5==p["1"]);
378
379 // 9 possible comparizons with less-than, equal, and more-than values: doubles vs ints
380 EXPECT_THROW( 0< p["1.25"], alps::params::type_mismatch);
381 EXPECT_THROW( 0<=p["1.25"], alps::params::type_mismatch);
382 EXPECT_THROW( 0!=p["1.25"], alps::params::type_mismatch);
383 EXPECT_THROW( 1<=p["1.00"], alps::params::type_mismatch);
384 EXPECT_THROW( 1>=p["1.00"], alps::params::type_mismatch);
385 EXPECT_THROW( 1==p["1.00"], alps::params::type_mismatch);
386 EXPECT_THROW( 2> p["1.25"], alps::params::type_mismatch);
387 EXPECT_THROW( 2>=p["1.25"], alps::params::type_mismatch);
388 EXPECT_THROW( 2!=p["1.25"], alps::params::type_mismatch);
389
390 // Negation of the 9 comparizons: doubles vs ints
391 EXPECT_THROW(0>=p["1.25"], alps::params::type_mismatch);
392 EXPECT_THROW(0> p["1.25"], alps::params::type_mismatch);
393 EXPECT_THROW(0==p["1.25"], alps::params::type_mismatch);
394 EXPECT_THROW(1> p["1.00"], alps::params::type_mismatch);
395 EXPECT_THROW(1< p["1.00"], alps::params::type_mismatch);
396 EXPECT_THROW(1!=p["1.00"], alps::params::type_mismatch);
397 EXPECT_THROW(2<=p["1.25"], alps::params::type_mismatch);
398 EXPECT_THROW(2< p["1.25"], alps::params::type_mismatch);
399 EXPECT_THROW(2==p["1.25"], alps::params::type_mismatch);
400
401 // 9 possible comparizons with less-than, equal, and more-than values: std::strings vs "char-strings"
402 EXPECT_TRUE( "1.2" < p["str"]);
403 EXPECT_TRUE( "1.2" <=p["str"]);
404 EXPECT_TRUE( "1.2" !=p["str"]);
405 EXPECT_TRUE( "1.25"<=p["str"]);
406 EXPECT_TRUE( "1.25">=p["str"]);
407 EXPECT_TRUE( "1.25"==p["str"]);
408 EXPECT_TRUE( "2xx" > p["str"]);
409 EXPECT_TRUE( "2xx" >=p["str"]);
410 EXPECT_TRUE( "2xx" !=p["str"]);
411
412 // Negation of the 9 comparizons: std::strings vs "char-strings"
413 EXPECT_FALSE("1.2" >=p["str"]);
414 EXPECT_FALSE("1.2" > p["str"]);
415 EXPECT_FALSE("1.2" ==p["str"]);
416 EXPECT_FALSE("1.25"> p["str"]);
417 EXPECT_FALSE("1.25"< p["str"]);
418 EXPECT_FALSE("1.25"!=p["str"]);
419 EXPECT_FALSE("2xx" <=p["str"]);
420 EXPECT_FALSE("2xx" < p["str"]);
421 EXPECT_FALSE("2xx" ==p["str"]);
422 }
423
TEST_F(ParamTestCompare,SimilarTypeVarRHS)424 TEST_F(ParamTestCompare,SimilarTypeVarRHS) {
425 {
426 // 9 possible comparizons with less-than, equal, and more-than values: ints vs doubles
427 double less_than=0.5;
428 double more_than=2.5;
429 double equal=1.0;
430 EXPECT_TRUE( p["1"]> less_than);
431 EXPECT_TRUE( p["1"]>=less_than);
432 EXPECT_TRUE( p["1"]!=less_than);
433 EXPECT_TRUE( p["1"]>=equal);
434 EXPECT_TRUE( p["1"]<=equal);
435 EXPECT_TRUE( p["1"]==equal);
436 EXPECT_TRUE( p["1"]< more_than);
437 EXPECT_TRUE( p["1"]<=more_than);
438 EXPECT_TRUE( p["1"]!=more_than);
439
440 // Negation of the 9 comparizons: ints vs doubles
441 EXPECT_FALSE(p["1"]<=less_than);
442 EXPECT_FALSE(p["1"]< less_than);
443 EXPECT_FALSE(p["1"]==less_than);
444 EXPECT_FALSE(p["1"]< equal);
445 EXPECT_FALSE(p["1"]> equal);
446 EXPECT_FALSE(p["1"]!=equal);
447 EXPECT_FALSE(p["1"]>=more_than);
448 EXPECT_FALSE(p["1"]> more_than);
449 EXPECT_FALSE(p["1"]==more_than);
450 }
451
452 {
453 // 9 possible comparizons with less-than, equal, and more-than values: doubles vs ints
454 int less_than=0;
455 int more_than=2;
456 int equal=1;
457
458 EXPECT_THROW( p["1.25"]> less_than, alps::params::type_mismatch);
459 EXPECT_THROW( p["1.25"]>=less_than, alps::params::type_mismatch);
460 EXPECT_THROW( p["1.25"]!=less_than, alps::params::type_mismatch);
461 EXPECT_THROW( p["1.00"]>=equal , alps::params::type_mismatch);
462 EXPECT_THROW( p["1.00"]<=equal , alps::params::type_mismatch);
463 EXPECT_THROW( p["1.00"]==equal , alps::params::type_mismatch);
464 EXPECT_THROW( p["1.25"]< more_than, alps::params::type_mismatch);
465 EXPECT_THROW( p["1.25"]<=more_than, alps::params::type_mismatch);
466 EXPECT_THROW( p["1.25"]!=more_than, alps::params::type_mismatch);
467
468 // Negation of the 9 comparizons: doubles
469 EXPECT_THROW(p["1.25"]<=less_than, alps::params::type_mismatch);
470 EXPECT_THROW(p["1.25"]< less_than, alps::params::type_mismatch);
471 EXPECT_THROW(p["1.25"]==less_than, alps::params::type_mismatch);
472 EXPECT_THROW(p["1.00"]< equal , alps::params::type_mismatch);
473 EXPECT_THROW(p["1.00"]> equal , alps::params::type_mismatch);
474 EXPECT_THROW(p["1.00"]!=equal , alps::params::type_mismatch);
475 EXPECT_THROW(p["1.25"]>=more_than, alps::params::type_mismatch);
476 EXPECT_THROW(p["1.25"]> more_than, alps::params::type_mismatch);
477 EXPECT_THROW(p["1.25"]==more_than, alps::params::type_mismatch);
478 }
479
480 {
481 // 9 possible comparizons with less-than, equal, and more-than values: std::strings vs "char-strings"
482 const char* less_than="1.2";
483 const char* more_than="2xx";
484 const char* equal="1.25";
485
486 EXPECT_TRUE( p["str"]> less_than);
487 EXPECT_TRUE( p["str"]>=less_than);
488 EXPECT_TRUE( p["str"]!=less_than);
489 EXPECT_TRUE( p["str"]>=equal);
490 EXPECT_TRUE( p["str"]<=equal);
491 EXPECT_TRUE( p["str"]==equal);
492 EXPECT_TRUE( p["str"]< more_than);
493 EXPECT_TRUE( p["str"]<=more_than);
494 EXPECT_TRUE( p["str"]!=more_than);
495
496 // Negation of the 9 comparizons: std::strings vs "char-strings"
497 EXPECT_FALSE(p["str"]<=less_than);
498 EXPECT_FALSE(p["str"]< less_than);
499 EXPECT_FALSE(p["str"]==less_than);
500 EXPECT_FALSE(p["str"]< equal);
501 EXPECT_FALSE(p["str"]> equal);
502 EXPECT_FALSE(p["str"]!=equal);
503 EXPECT_FALSE(p["str"]>=more_than);
504 EXPECT_FALSE(p["str"]> more_than);
505 EXPECT_FALSE(p["str"]==more_than);
506 }
507 }
508
TEST_F(ParamTestCompare,SimilarTypeVarLHS)509 TEST_F(ParamTestCompare,SimilarTypeVarLHS) {
510 {
511 // 9 possible comparizons with less-than, equal, and more-than values: ints vs doubles
512 double less_than=0.5;
513 double more_than=2.5;
514 double equal=1.0;
515 EXPECT_TRUE( less_than< p["1"]);
516 EXPECT_TRUE( less_than<=p["1"]);
517 EXPECT_TRUE( less_than!=p["1"]);
518 EXPECT_TRUE( equal <=p["1"]);
519 EXPECT_TRUE( equal >=p["1"]);
520 EXPECT_TRUE( equal ==p["1"]);
521 EXPECT_TRUE( more_than> p["1"]);
522 EXPECT_TRUE( more_than>=p["1"]);
523 EXPECT_TRUE( more_than!=p["1"]);
524
525 // Negation of the 9 comparizons: ints vs doubles
526 EXPECT_FALSE(less_than>=p["1"]);
527 EXPECT_FALSE(less_than> p["1"]);
528 EXPECT_FALSE(less_than==p["1"]);
529 EXPECT_FALSE(equal > p["1"]);
530 EXPECT_FALSE(equal < p["1"]);
531 EXPECT_FALSE(equal !=p["1"]);
532 EXPECT_FALSE(more_than<=p["1"]);
533 EXPECT_FALSE(more_than< p["1"]);
534 EXPECT_FALSE(more_than==p["1"]);
535 }
536
537 {
538 // 9 possible comparizons with less-than, equal, and more-than values: doubles vs ints
539 int less_than=0;
540 int more_than=2;
541 int equal=1;
542
543 EXPECT_THROW( less_than< p["1.25"], alps::params::type_mismatch);
544 EXPECT_THROW( less_than<=p["1.25"], alps::params::type_mismatch);
545 EXPECT_THROW( less_than!=p["1.25"], alps::params::type_mismatch);
546 EXPECT_THROW( equal <=p["1.00"], alps::params::type_mismatch);
547 EXPECT_THROW( equal >=p["1.00"], alps::params::type_mismatch);
548 EXPECT_THROW( equal ==p["1.00"], alps::params::type_mismatch);
549 EXPECT_THROW( more_than> p["1.25"], alps::params::type_mismatch);
550 EXPECT_THROW( more_than>=p["1.25"], alps::params::type_mismatch);
551 EXPECT_THROW( more_than!=p["1.25"], alps::params::type_mismatch);
552
553 // Negation of the 9 comparizons: doubles vs ints
554 EXPECT_THROW(less_than>=p["1.25"], alps::params::type_mismatch);
555 EXPECT_THROW(less_than> p["1.25"], alps::params::type_mismatch);
556 EXPECT_THROW(less_than==p["1.25"], alps::params::type_mismatch);
557 EXPECT_THROW(equal > p["1.00"], alps::params::type_mismatch);
558 EXPECT_THROW(equal < p["1.00"], alps::params::type_mismatch);
559 EXPECT_THROW(equal !=p["1.00"], alps::params::type_mismatch);
560 EXPECT_THROW(more_than<=p["1.25"], alps::params::type_mismatch);
561 EXPECT_THROW(more_than< p["1.25"], alps::params::type_mismatch);
562 EXPECT_THROW(more_than==p["1.25"], alps::params::type_mismatch);
563 }
564
565 {
566 // 9 possible comparizons with less-than, equal, and more-than values: std::strings vs "char-strings"
567 const char* less_than="1.2";
568 const char* more_than="2xx";
569 const char* equal="1.25";
570
571 EXPECT_TRUE( less_than< p["str"]);
572 EXPECT_TRUE( less_than<=p["str"]);
573 EXPECT_TRUE( less_than!=p["str"]);
574 EXPECT_TRUE( equal <=p["str"]);
575 EXPECT_TRUE( equal >=p["str"]);
576 EXPECT_TRUE( equal ==p["str"]);
577 EXPECT_TRUE( more_than> p["str"]);
578 EXPECT_TRUE( more_than>=p["str"]);
579 EXPECT_TRUE( more_than!=p["str"]);
580
581 // Negation of the 9 comparizons: std::strings vs "char-strings"
582 EXPECT_FALSE(less_than>=p["str"]);
583 EXPECT_FALSE(less_than> p["str"]);
584 EXPECT_FALSE(less_than==p["str"]);
585 EXPECT_FALSE(equal > p["str"]);
586 EXPECT_FALSE(equal < p["str"]);
587 EXPECT_FALSE(equal !=p["str"]);
588 EXPECT_FALSE(more_than<=p["str"]);
589 EXPECT_FALSE(more_than< p["str"]);
590 EXPECT_FALSE(more_than==p["str"]);
591 }
592 }
593
TEST_F(ParamTestCompare,IncompatTypeRHS)594 TEST_F(ParamTestCompare,IncompatTypeRHS) {
595 // 6 possible comparizons with a value: ints vs strings
596 EXPECT_THROW( p["1"]> "0", alps::params::type_mismatch);
597 EXPECT_THROW( p["1"]>="0", alps::params::type_mismatch);
598 EXPECT_THROW( p["1"]< "2", alps::params::type_mismatch);
599 EXPECT_THROW( p["1"]<="2", alps::params::type_mismatch);
600 EXPECT_THROW( p["1"]=="1", alps::params::type_mismatch);
601 EXPECT_THROW( p["1"]!="2", alps::params::type_mismatch);
602
603 // 6 possible comparizons with a value: doubles vs strings
604 EXPECT_THROW( p["1.25"]> "0", alps::params::type_mismatch);
605 EXPECT_THROW( p["1.25"]>="0", alps::params::type_mismatch);
606 EXPECT_THROW( p["1.25"]< "2", alps::params::type_mismatch);
607 EXPECT_THROW( p["1.25"]<="2", alps::params::type_mismatch);
608 EXPECT_THROW( p["1.25"]=="1.25", alps::params::type_mismatch);
609 EXPECT_THROW( p["1.25"]!="2", alps::params::type_mismatch);
610
611 // 6 possible comparizons with a value: strings vs doubles
612 EXPECT_THROW( p["str"]> 0.5, alps::params::type_mismatch);
613 EXPECT_THROW( p["str"]>=0.5, alps::params::type_mismatch);
614 EXPECT_THROW( p["str"]< 1.5, alps::params::type_mismatch);
615 EXPECT_THROW( p["str"]<=1.5, alps::params::type_mismatch);
616 EXPECT_THROW( p["str"]==1.25, alps::params::type_mismatch);
617 EXPECT_THROW( p["str"]!=1.5, alps::params::type_mismatch);
618 }
619
TEST_F(ParamTestCompare,IncompatTypeLHS)620 TEST_F(ParamTestCompare,IncompatTypeLHS) {
621 // 6 possible comparizons with a value: ints vs strings
622 EXPECT_THROW("0"< p["1"], alps::params::type_mismatch);
623 EXPECT_THROW("0"<=p["1"], alps::params::type_mismatch);
624 EXPECT_THROW("2"> p["1"], alps::params::type_mismatch);
625 EXPECT_THROW("2">=p["1"], alps::params::type_mismatch);
626 EXPECT_THROW("1"==p["1"], alps::params::type_mismatch);
627 EXPECT_THROW("2"!=p["1"], alps::params::type_mismatch);
628
629 // 6 possible comparizons with a value: doubles vs strings
630 EXPECT_THROW("0" < p["1.25"], alps::params::type_mismatch);
631 EXPECT_THROW("0" <=p["1.25"], alps::params::type_mismatch);
632 EXPECT_THROW("2" > p["1.25"], alps::params::type_mismatch);
633 EXPECT_THROW("2" >=p["1.25"], alps::params::type_mismatch);
634 EXPECT_THROW("1.25"==p["1.25"], alps::params::type_mismatch);
635 EXPECT_THROW("2" !=p["1.25"], alps::params::type_mismatch);
636
637 // 6 possible comparizons with a value: strings vs doubles
638 EXPECT_THROW(0.5 < p["str"], alps::params::type_mismatch);
639 EXPECT_THROW(0.5 <=p["str"], alps::params::type_mismatch);
640 EXPECT_THROW(1.5 > p["str"], alps::params::type_mismatch);
641 EXPECT_THROW(1.5 >=p["str"], alps::params::type_mismatch);
642 EXPECT_THROW(1.25==p["str"], alps::params::type_mismatch);
643 EXPECT_THROW(1.5 !=p["str"], alps::params::type_mismatch);
644 }
645
646