1 #pragma warning (disable: 4786)
2
3 // This file tests globbing using the : a b : syntax.
4
5 #include <string>
6 #include <vector>
7 #include <xparam.h>
8 #include <xparam_extend.h>
9
10 using namespace std;
11 using namespace xParam;
12
13 struct xxx {
xxxxxx14 xxx(const vector<string>&) {}
15 };
16
17 PARAM_BEGIN_REG
18
19 param_class<xxx>("abc::def<ghi::jkl>");
20 param_ctor(TypeTag<xxx>(),ConstRef<vector<string> >("v1"));
21
22 PARAM_END_REG
23
try_glob(int size,char ** input)24 void try_glob(int size, char** input)
25 {
26 try {
27 ParamSet ps;
28 vector<string> vs;
29 bool t;
30
31 ps << ioParamVar(vs,"vs");
32 ps << ioParamVar(t,"t",Val(false));
33 ps.input(size,input);
34 ps.output();
35 }
36 catch(Error e) {
37 cout << "Got following error - " << endl << e.what() << endl;
38 }
39 }
40
main(int argc,char * argv[])41 int main(int argc, char* argv[])
42 {
43 try {
44 xparam_init();
45 }
46 catch(Error e) {
47 cout << "Got following error - " << endl << e.what() << endl;
48 }
49
50 {
51 char* argv[]={"progname",":","a",":"};
52 try_glob(4,argv);
53 }
54 {
55 char* argv[]={"progname","vs=:","a",":"};
56 try_glob(4,argv);
57 }
58 {
59 char* argv[]={"progname","vs= : ","a"," : "};
60 try_glob(4,argv);
61 }
62 {
63 char* argv[]={"progname",":","a","b",":"};
64 try_glob(5,argv);
65 }
66 {
67 char* argv[]={"progname","vs=:","a","b",":"};
68 try_glob(5,argv);
69 }
70 {
71 char* argv[]={"progname","vs=:","a b",":"};
72 try_glob(4,argv);
73 }
74 {
75 char* argv[]={"progname","vs=: a",":"};
76 try_glob(3,argv);
77 }
78 {
79 char* argv[]={"progname","vs=:","a :"};
80 try_glob(3,argv);
81 }
82 {
83 char* argv[]={"progname","vs=: a :"};
84 try_glob(2,argv);
85 }
86 {
87 char* argv[]={"progname","vs=:",":"};
88 try_glob(3,argv);
89 }
90 {
91 char* argv[]={"progname","vs=: :"};
92 try_glob(2,argv);
93 }
94 {
95 char* argv[]={"progname","vs=::"};
96 try_glob(2,argv);
97 }
98 {
99 char* argv[]={"progname","vs=:"};
100 try_glob(2,argv);
101 }
102 {
103 char* argv[]={"progname","vs=:","a"};
104 try_glob(3,argv);
105 }
106 {
107 char* argv[]={"progname","vs=:","a","b"};
108 try_glob(4,argv);
109 }
110 {
111 char* argv[]={"progname","vs=:","a:","b:"};
112 try_glob(4,argv);
113 }
114 {
115 char* argv[]={"progname","vs=:","a b"};
116 try_glob(3,argv);
117 }
118 {
119 char* argv[]={"progname","vs=:","c:\\home_dir\\My file\\file-name.txt"};
120 try_glob(3,argv);
121 }
122 {
123 char* argv[]={"progname","vs=:","/my dir/my file - unix_version.txt"};
124 try_glob(3,argv);
125 }
126 {
127 char* argv[]={"progname","vs=:","a","b",": -t"};
128 try_glob(5,argv);
129 }
130 {
131 char* argv[]={"progname","vs=abc","::","def<ghi","::","jkl>(:","a","b",":)"};
132 try_glob(9,argv);
133 }
134 return 0;
135 }
136