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