1 #pragma warning (disable: 4786)
2
3 #include <string>
4 #include <iostream>
5 #include <fstream>
6 #include <xparam.h>
7
8 using namespace std;
9 using namespace xParam;
10
main(int argc,char * argv[])11 int main(int argc, char* argv[])
12 {
13 int d=2;
14 // Thrown errors:
15 // no name found in "name ! desc" string
16 try {
17
18 xparam_init();
19
20 ParamSet ps;
21 ps << iParamVar(d,"#4652afg");
22 }
23 catch(Error e) {
24 cout << "Got following error - " << endl << e.what() << endl;
25 }
26 try {
27 ParamSet ps;
28 ps << iParamVar(d," !afg");
29 }
30 catch(Error e) {
31 cout << "Got following error - " << endl << e.what() << endl;
32 }
33 // first char in name is digit
34 try {
35 ParamSet ps;
36 ps << iParamVar(d," 3rdfromleft! third from left ");
37 }
38 catch(Error e) {
39 cout << "Got following error - " << endl << e.what() << endl;
40 }
41 // no ! before description
42 try {
43 ParamSet ps;
44 ps << iParamVar(d,"hello there!");
45 }
46 catch(Error e) {
47 cout << "Got following error - " << endl << e.what() << endl;
48 }
49 // inputting a non-input parameter
50 try {
51 ParamSet ps;
52 ps << oParamVar(d,"d");
53 const char* input[]={"test1","d=7"};
54 ps.input(2,input);
55 }
56 catch(Error e) {
57 cout << "Got following error - " << endl << e.what() << endl;
58 }
59 // inputting an undefined parameter
60 try {
61 ParamSet ps;
62 ps << iParamVar(d,"d");
63 ps.input("e=7");
64 }
65 catch(Error e) {
66 cout << "Got following error - " << endl << e.what() << endl;
67 }
68 // error parsing value
69 // This is only an example of parser errors. Extensive tests will follow.
70 try {
71 ParamSet ps;
72 ps << iParamVar(d,"d");
73 const char* input[]={"test1","d=int(7"};
74 ps.input(2,input);
75 }
76 catch(Error e) {
77 cout << "Got following error - " << endl << e.what() << endl;
78 }
79 // file not found
80 try {
81 ParamSet ps;
82 ps << iParamVar(d,"d");
83 const char* input[]={"test1","@non_existent_file"};
84 ps.input(2,input);
85 }
86 catch(Error e) {
87 cout << "Got following error - " << endl << e.what() << endl;
88 }
89 // Access of unregistered type
90 try {
91 ParamSet ps;
92 ps << iParamVar(d,"d");
93 const char* input[]={"test1","d=non_existent_class()"};
94 ps.input(2,input);
95 }
96 catch(Error e) {
97 cout << "Got following error - " << endl << e.what() << endl;
98 }
99 try {
100 ParamSet ps;
101 ps << iParamVar(d,"d");
102 const char* input[]={"test1","d=unregistered_type()"};
103 ps.input(2,input);
104 }
105 catch(Error e) {
106 cout << "Got following error - " << endl << e.what() << endl;
107 }
108 // Integer too large
109 try {
110 ParamSet ps;
111 ps << iParamVar(d,"d");
112 const char* input[]={"test1","d=76542979874298718347"};
113 ps.input(2,input);
114 }
115 catch(Error e) {
116 cout << "Got following error - " << endl << e.what() << endl;
117 }
118 // Integer too large
119 try {
120 ParamSet ps;
121 char ch;
122 ps << iParamVar(ch,"ch");
123 const char* input[]={"test1","ch=3000000000"};
124 ps.input(2,input);
125 cout << "ch: " << Val(ch) << endl;
126 }
127 catch(Error e) {
128 cout << "Got following error - " << endl << e.what() << endl;
129 }
130 // Integer too large, but can still fit an unsigned long
131 try {
132 ParamSet ps;
133 ps << iParamVar(d,"d");
134 const char* input[]={"test1","d=3000000000"};
135 ps.input(2,input);
136 cout << "d: " << Val(d) << endl;
137 }
138 catch(Error e) {
139 cout << "Got following error - " << endl << e.what() << endl;
140 }
141 // no ctor found <- no matching path in "create"
142 // (should this be an assert?)
143 // no conversion path found
144 try {
145 ParamSet ps;
146 string s;
147 ps << iParamVar(s,"s");
148 const char* input[]={"test1","s=duck()"};
149 ps.input(2,input);
150 }
151 catch(Error e) {
152 cout << "Got following error - " << endl << e.what() << endl;
153 }
154 try {
155 ParamSet ps;
156 ps << iParamVar(d,"d");
157 const char* input[]={"test1","d=duckling()"};
158 ps.input(2,input);
159 }
160 catch(Error e) {
161 cout << "Got following error - " << endl << e.what() << endl;
162 }
163 return 0;
164 }
165