Loading [MathJax]/extensions/TeX/AMSsymbols.js
LAL 7.7.0.1-5e288d3
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
VectorSequenceFactoriesTest.c
Go to the documentation of this file.
1/**
2 * \file
3 * \ingroup SeqFactories_h
4 *
5 * \brief A program to test create/destroy vector sequence routines.
6 *
7 * ### Usage ###
8 *
9 * \code
10 * VectorSequenceFactoriesTest [options]
11 * Options:
12 * -h print help
13 * -q quiet: run silently
14 * -v verbose: print extra information
15 * -d level set lalDebugLevel to level
16 * \endcode
17 *
18 * ### Exit codes ###
19 *
20 * <table><tr><th>Code</th><th>Explanation</th></tr>
21 * <tr><td>0</td><td>Success, normal exit.</td></tr>
22 * <tr><td>1</td><td>Subroutine failed.</td></tr>
23 * </table>
24 *
25 * ### Algorithm ###
26 *
27 *
28 * ### Uses ###
29 *
30 * \code
31 * lalDebugLevel
32 * <datatype>CreateVectorSequence()
33 * <datatype>DestroyVectorSequence()
34 * \endcode
35 *
36 * ### Notes ###
37 *
38 */
39
40/** \cond DONT_DOXYGEN */
41#include <config.h>
42
43#include <stdlib.h>
44#include <stdio.h>
45#include <string.h>
46
47#include <lal/LALStdlib.h>
48#include <lal/LALgetopt.h>
49#include <lal/SeqFactories.h>
50#include <lal/LALString.h>
51
52#define CODES_(x) #x
53#define CODES(x) CODES_(x)
54
55int verbose = 0;
56
57static void
58Usage (const char *program, int exitflag);
59
60static void
61ParseOptions (int argc, char *argv[]);
62
63static void
64TestStatus (LALStatus *status, const char *expectedCodes, int exitCode);
65
66#define TYPECODE Z
67#define TYPE COMPLEX16
68#include "VectorSequenceFactoriesTest_source.c"
69#undef TYPECODE
70#undef TYPE
71
72#define TYPECODE C
73#define TYPE COMPLEX8
74#include "VectorSequenceFactoriesTest_source.c"
75#undef TYPECODE
76#undef TYPE
77
78#define TYPECODE D
79#define TYPE REAL8
80#include "VectorSequenceFactoriesTest_source.c"
81#undef TYPECODE
82#undef TYPE
83
84#define TYPECODE S
85#define TYPE REAL4
86#include "VectorSequenceFactoriesTest_source.c"
87#undef TYPECODE
88#undef TYPE
89
90#define TYPECODE I2
91#define TYPE INT2
92#include "VectorSequenceFactoriesTest_source.c"
93#undef TYPECODE
94#undef TYPE
95
96#define TYPECODE I4
97#define TYPE INT4
98#include "VectorSequenceFactoriesTest_source.c"
99#undef TYPECODE
100#undef TYPE
101
102#define TYPECODE I8
103#define TYPE INT8
104#include "VectorSequenceFactoriesTest_source.c"
105#undef TYPECODE
106#undef TYPE
107
108#define TYPECODE U2
109#define TYPE UINT2
110#include "VectorSequenceFactoriesTest_source.c"
111#undef TYPECODE
112#undef TYPE
113
114#define TYPECODE U4
115#define TYPE UINT4
116#include "VectorSequenceFactoriesTest_source.c"
117#undef TYPECODE
118#undef TYPE
119
120#define TYPECODE U8
121#define TYPE UINT8
122#include "VectorSequenceFactoriesTest_source.c"
123#undef TYPECODE
124#undef TYPE
125
126#define TYPECODE CHAR
127#define TYPE CHAR
128#include "VectorSequenceFactoriesTest_source.c"
129#undef TYPECODE
130#undef TYPE
131
132#define TYPE REAL4
133#include "VectorSequenceFactoriesTest_source.c"
134#undef TYPE
135
136int main( int argc, char *argv[] )
137{
138
139 ParseOptions( argc, argv );
140
141 VectorSequenceFactoriesTest();
142 ZVectorSequenceFactoriesTest();
143 CVectorSequenceFactoriesTest();
144 DVectorSequenceFactoriesTest();
145 SVectorSequenceFactoriesTest();
146 I2VectorSequenceFactoriesTest();
147 I4VectorSequenceFactoriesTest();
148 I8VectorSequenceFactoriesTest();
149 U2VectorSequenceFactoriesTest();
150 U4VectorSequenceFactoriesTest();
151 U8VectorSequenceFactoriesTest();
152 CHARVectorSequenceFactoriesTest();
153
154 return 0;
155}
156
157
158/*
159 * TestStatus ()
160 *
161 * Routine to check that the status code status->statusCode agrees with one of
162 * the codes specified in the space-delimited string ignored; if not,
163 * exit to the system with code exitcode.
164 *
165 */
166static void
167TestStatus (LALStatus *status, const char *ignored, int exitcode)
168{
169 char str[64];
170 char *tok;
171
172 if (verbose)
173 {
175 }
176
177 if (XLALStringCopy(str, ignored, sizeof(str)))
178 {
179 if ((tok = strtok (str, " ")))
180 {
181 do
182 {
183 if (status->statusCode == atoi (tok))
184 {
185 return;
186 }
187 }
188 while ((tok = strtok (NULL, " ")));
189 }
190 else
191 {
192 if (status->statusCode == atoi (str))
193 {
194 return;
195 }
196 }
197 }
198
199 fprintf (stderr, "\nExiting to system with code %d\n", exitcode);
200 exit (exitcode);
201}
202
203/*
204 * Usage ()
205 *
206 * Prints a usage message for program program and exits with code exitcode.
207 *
208 */
209static void
210Usage (const char *program, int exitcode)
211{
212 fprintf (stderr, "Usage: %s [options]\n", program);
213 fprintf (stderr, "Options:\n");
214 fprintf (stderr, " -h print this message\n");
215 fprintf (stderr, " -q quiet: run silently\n");
216 fprintf (stderr, " -v verbose: print extra information\n");
217 fprintf (stderr, " -d level set lalDebugLevel to level\n");
218 exit (exitcode);
219}
220
221
222/*
223 * ParseOptions ()
224 *
225 * Parses the argc - 1 option strings in argv[].
226 *
227 */
228static void
229ParseOptions (int argc, char *argv[])
230{
231 FILE *fp;
232
233 while (1)
234 {
235 int c = -1;
236
237 c = LALgetopt (argc, argv, "hqvd:");
238 if (c == -1)
239 {
240 break;
241 }
242
243 switch (c)
244 {
245 case 'd': /* set debug level */
246 break;
247
248 case 'v': /* verbose */
249 ++verbose;
250 break;
251
252 case 'q': /* quiet: run silently (ignore error messages) */
253 fp = freopen ("/dev/null", "w", stderr);
254 if (fp == NULL)
255 {
256 fprintf(stderr, "Error: Unable to open /dev/null\n");
257 exit(1);
258 }
259 fp = freopen ("/dev/null", "w", stdout);
260 if (fp == NULL)
261 {
262 fprintf(stderr, "Error: Unable to open /dev/null\n");
263 exit(1);
264 }
265 break;
266
267 case 'h':
268 Usage (argv[0], 0);
269 break;
270
271 default:
272 Usage (argv[0], 1);
273 }
274
275 }
276
277 if (LALoptind < argc)
278 {
279 Usage (argv[0], 1);
280 }
281
282 return;
283}
284
285/** \endcond */
const char * program
void REPORTSTATUS(LALStatus *status)
Definition: LALError.c:322
int LALgetopt(int argc, char *const *argv, const char *optstring)
Definition: LALgetopt.c:172
int LALoptind
Definition: LALgetopt.c:79
#define fprintf
static void Usage(const char *program, int exitcode)
Definition: XLALChisqTest.c:70
static void ParseOptions(int argc, char *argv[])
Definition: XLALChisqTest.c:88
int main(int argc, char *argv[])
Definition: cache.c:25
size_t XLALStringCopy(char *dst, const char *src, size_t size)
Copy sources string src to destination string dst.
Definition: LALString.c:104
LAL status structure, see The LALStatus structure for more details.
Definition: LALDatatypes.h:947
int verbose
Definition: tconvert.c:103
FILE * fp
Definition: tconvert.c:105