Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
JPredicate.cc File Reference

Auxiliary program to test JLANG::JPredicate class and helper methods. More...

#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <iterator>
#include "JLang/JPredicate.hh"
#include "JLang/JComparison.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Detailed Description

Auxiliary program to test JLANG::JPredicate class and helper methods.

Author
mdejong

Definition in file JPredicate.cc.

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 56 of file JPredicate.cc.

57{
58 using namespace std;
59 using namespace JPP;
60
61 int debug;
62
63 try {
64
65 JParser<> zap("Auxiliary program to test object selection methods.");
66
67 zap['d'] = make_field(debug) = 3;
68
69 zap(argc, argv);
70 }
71 catch(const exception &error) {
72 FATAL(error.what() << endl);
73 }
74
75 vector<__A__> buffer;
76
77 buffer.push_back(__A__(3));
78 buffer.push_back(__A__(4));
79 buffer.push_back(__A__(2));
80 buffer.push_back(__A__(1));
81 buffer.push_back(__A__(5));
82
83
84 print(cout, debug, "data:", buffer.begin(), buffer.end());
85
86 int x = 3;
87
88 {
89 vector<__A__>::const_iterator p = find_if(buffer.begin(), buffer.end(), make_predicate(&__A__::a, x));
90
91 DEBUG("has " << x << "? " << (p != buffer.end() ? "yes" : "no") << endl);
92
93 ASSERT(p != buffer.end() && p->a == x);
94 }
95
96 {
97 vector<__A__>::const_iterator p = find_if(buffer.begin(), buffer.end(), make_predicate(&__A__::get, x));
98
99 DEBUG("has " << x << "? " << (p != buffer.end() ? "yes" : "no") << endl);
100
101 ASSERT(p != buffer.end() && p->get() == x);
102 }
103
104 {
105 vector<__A__>::iterator p = partition(buffer.begin(), buffer.end(), make_predicate(&__A__::a, x, JComparison::lt()));
106
107 print(cout, debug, "selection:", buffer.begin(), p);
108
109 for (vector<__A__>::iterator i = buffer.begin(); i != p; ++i) {
110 ASSERT(i->a < x);
111 }
112 }
113
114 {
115 ASSERT(count_if(buffer.begin(), buffer.end(), make_predicate(&__A__::a, 1, JComparison::eq())) == 1);
116 ASSERT(count_if(buffer.begin(), buffer.end(), make_predicate(&__A__::a, 2, JComparison::gt())) == 3);
117 }
118
119 return 0;
120}
#define DEBUG(A)
Message macros.
Definition JMessage.hh:62
#define ASSERT(A,...)
Assert macro.
Definition JMessage.hh:90
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
void print(const TH1 &h1, std::ostream &out)
Print histogram parameters.
Utility class to parse command line options.
Definition JParser.hh:1698
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).