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