1 #pragma warning (disable: 4786)
2
3 // This file tests feedback, error handling policy and string defaults.
4
5 #include <string>
6 #include <vector>
7 #include <xparam.h>
8 #include <iostream>
9
10 using namespace std;
11 using namespace xParam;
12
13 int a,c,d=17;
14 vector<string> b;
15
test(ParamSet & ps,int size,char ** input)16 void test(ParamSet& ps,int size, char** input)
17 {
18 try {
19 ps << ioParamVar(a,"avalon");
20 ps << ioParamVar(b,"avalanche",xParse("[ one,two ]"));
21 ps << iParamVar(c,"input_only",Val(5));
22 ps << oParamVar(d,"output_only");
23 ps.input(size,input);
24 ps.output();
25 }
26 catch(Error e) {
27 cout << "Got following error - " << endl << e.what() << endl;
28 }
29 }
30
main(int argc,char * argv[])31 int main(int argc, char* argv[])
32 {
33 try {
34 xparam_init();
35 }
36 catch(Error e) {
37 cout << "Got following error - " << endl << e.what() << endl;
38 }
39
40 {
41 ParamSet ps;
42 char* input[]={"progname","avalo=5 avalanc=[ a, b ]"};
43 test(ps,2,input);
44 }
45 {
46 ParamSet ps;
47 char* input[]={"progname","avalo=5 avalanc=[ c, d ]"};
48 ps.set_feedback_stream(cout);
49 test(ps,2,input);
50 }
51 {
52 ParamSet ps;
53 char* input[]={"progname","avalo=5 avalanc=[ c, d ]"};
54 ps.set_feedback_stream(cout);
55 test(ps,2,input);
56 ps.write_feedback();
57 }
58 {
59 ParamSet ps;
60 char* input[]={"progname","avalo=5 avalanc=[ c, d ]"};
61 ps.set_feedback_stream(cout);
62 ps.feedback_enabled(true);
63 test(ps,2,input);
64 }
65 {
66 ParamSet ps;
67 char* input[]={"progname","avalo=5 avalanc=[ c, d ]"};
68 ps.set_feedback_stream(cout);
69 ps.feedback_enabled(true);
70 ps.max_feedback_length(20);
71 test(ps,2,input);
72 }
73 {
74 ParamSet ps;
75 char* input[]={"progname","avalo=5 avalanc=[ c, d ]"};
76 ps.set_feedback_stream(cout);
77 ps.feedback_enabled(true);
78 ps.max_feedback_length(20);
79 ps.max_feedback_length(0);
80 test(ps,2,input);
81 }
82 {
83 ParamSet ps;
84 char* input[]={"progname","avalo=5 avalanc=[ c, d ]"};
85 ps.set_feedback_stream(cout);
86 ps.feedback_enabled(true);
87 ps.max_feedback_length(20);
88 ps.max_feedback_length(0);
89 ps.feedback_enabled(false);
90 test(ps,2,input);
91 }
92 {
93 ParamSet ps;
94 char* input[]={"progname","avalo=5 aval=[ c, d ]"};
95 ps.set_feedback_stream(cout);
96 ps.feedback_enabled(true);
97 test(ps,2,input);
98 }
99 {
100 ParamSet ps;
101 char* input[]={"progname","avalo=5 aval=[ c, d ]"};
102 ps.set_feedback_stream(cout);
103 ps.feedback_enabled(true);
104 ps.warning_is_error(false);
105 test(ps,2,input);
106 }
107 {
108 ParamSet ps;
109 char* input[]={"progname","aval=5 avala=[ c, d ]"};
110 ps.set_feedback_stream(cout);
111 ps.feedback_enabled(true);
112 ps.warning_is_error(false);
113 test(ps,2,input);
114 }
115 {
116 ParamSet ps;
117 char* input[]={"progname","avalo=5 b=hello avala=[ c, d ]"};
118 ps.set_feedback_stream(cout);
119 ps.feedback_enabled(true);
120 test(ps,2,input);
121 }
122 {
123 ParamSet ps;
124 char* input[]={"progname","avalo=5 b=hello avala=[ c, d ]"};
125 ps.set_feedback_stream(cout);
126 ps.feedback_enabled(true);
127 ps.warning_is_error(false);
128 test(ps,2,input);
129 }
130 {
131 ParamSet ps;
132 char* input[]={"progname","avalo=5 b=hello avala=[ c, d ]"};
133 ps.set_feedback_stream(cout);
134 ps.feedback_enabled(true);
135 ps.warning_is_error(false);
136 ps.ignore_unexpected(true);
137 test(ps,2,input);
138 }
139 {
140 ParamSet ps;
141 char* input[]={"progname","avalo=5 b=hello avala=[ c, d ]"};
142 ps.set_feedback_stream(cout);
143 ps.feedback_enabled(true);
144 ps.warning_is_error(false);
145 ps.ignore_unexpected(true);
146 ps.warning_is_error(true);
147 test(ps,2,input);
148 }
149 {
150 ParamSet ps;
151 char* input[]={"progname","avalo=5"};
152 ps.set_feedback_stream(cout);
153 ps.feedback_enabled(true);
154 test(ps,2,input);
155 }
156 {
157 ParamSet ps;
158 char* input[]={"progname","avalo=5"};
159 ps.set_feedback_stream(cout);
160 ps.feedback_enabled(true);
161 ps.warning_is_error(false);
162 test(ps,2,input);
163 }
164 {
165 ParamSet ps;
166 char* input[]={"progname","avala=[e,f,g]"};
167 ps.set_feedback_stream(cout);
168 ps.feedback_enabled(true);
169 test(ps,2,input);
170 }
171 {
172 ParamSet ps;
173 char* input[]={"progname","avala=:","h"};
174 ps.set_feedback_stream(cout);
175 ps.feedback_enabled(true);
176 ps.warning_is_error(false);
177 test(ps,3,input);
178 }
179 return 0;
180 }
181