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
ArraySequenceFactoriesTest.c
Go to the documentation of this file.
1/**
2 * \file
3 * \ingroup SeqFactories_h
4 *
5 * \brief A program to test create/destroy array sequence routines.
6 *
7 * ### Usage ###
8 *
9 * \code
10 * ArraySequenceFactoriesTest [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>CreateArraySequence()
33 * <datatype>DestroyArraySequence()
34 * \endcode
35 *
36 * ### Notes ###
37 *
38 */
39/** \cond DONT_DOXYGEN */
40#include <config.h>
41
42#include <stdlib.h>
43#include <stdio.h>
44#include <string.h>
45
46#include <lal/LALStdlib.h>
47#include <lal/LALgetopt.h>
48#include <lal/SeqFactories.h>
49#include <lal/LALString.h>
50
51#define CODES_(x) #x
52#define CODES(x) CODES_(x)
53
54int verbose = 0;
55
56static void
57Usage (const char *program, int exitflag);
58
59static void
60ParseOptions (int argc, char *argv[]);
61
62static void
63TestStatus (LALStatus *status, const char *expectedCodes, int exitCode);
64
65#define TYPECODE Z
66#define TYPE COMPLEX16
67#include "ArraySequenceFactoriesTest_source.c"
68#undef TYPECODE
69#undef TYPE
70
71#define TYPECODE C
72#define TYPE COMPLEX8
73#include "ArraySequenceFactoriesTest_source.c"
74#undef TYPECODE
75#undef TYPE
76
77#define TYPECODE D
78#define TYPE REAL8
79#include "ArraySequenceFactoriesTest_source.c"
80#undef TYPECODE
81#undef TYPE
82
83#define TYPECODE S
84#define TYPE REAL4
85#include "ArraySequenceFactoriesTest_source.c"
86#undef TYPECODE
87#undef TYPE
88
89#define TYPECODE I2
90#define TYPE INT2
91#include "ArraySequenceFactoriesTest_source.c"
92#undef TYPECODE
93#undef TYPE
94
95#define TYPECODE I4
96#define TYPE INT4
97#include "ArraySequenceFactoriesTest_source.c"
98#undef TYPECODE
99#undef TYPE
100
101#define TYPECODE I8
102#define TYPE INT8
103#include "ArraySequenceFactoriesTest_source.c"
104#undef TYPECODE
105#undef TYPE
106
107#define TYPECODE U2
108#define TYPE UINT2
109#include "ArraySequenceFactoriesTest_source.c"
110#undef TYPECODE
111#undef TYPE
112
113#define TYPECODE U4
114#define TYPE UINT4
115#include "ArraySequenceFactoriesTest_source.c"
116#undef TYPECODE
117#undef TYPE
118
119#define TYPECODE U8
120#define TYPE UINT8
121#include "ArraySequenceFactoriesTest_source.c"
122#undef TYPECODE
123#undef TYPE
124
125#define TYPE REAL4
126#include "ArraySequenceFactoriesTest_source.c"
127#undef TYPE
128
129int main( int argc, char *argv[] )
130{
131
132 ParseOptions( argc, argv );
133
134 ArraySequenceFactoriesTest();
135 ZArraySequenceFactoriesTest();
136 CArraySequenceFactoriesTest();
137 DArraySequenceFactoriesTest();
138 SArraySequenceFactoriesTest();
139 I2ArraySequenceFactoriesTest();
140 I4ArraySequenceFactoriesTest();
141 I8ArraySequenceFactoriesTest();
142 U2ArraySequenceFactoriesTest();
143 U4ArraySequenceFactoriesTest();
144 U8ArraySequenceFactoriesTest();
145
146 return 0;
147}
148
149
150/*
151 * TestStatus ()
152 *
153 * Routine to check that the status code status->statusCode agrees with one of
154 * the codes specified in the space-delimited string ignored; if not,
155 * exit to the system with code exitcode.
156 *
157 */
158static void
159TestStatus (LALStatus *status, const char *ignored, int exitcode)
160{
161 char str[64];
162 char *tok;
163
164 if (verbose)
165 {
167 }
168
169 if (XLALStringCopy(str, ignored, sizeof(str)))
170 {
171 if ((tok = strtok (str, " ")))
172 {
173 do
174 {
175 if (status->statusCode == atoi (tok))
176 {
177 return;
178 }
179 }
180 while ((tok = strtok (NULL, " ")));
181 }
182 else
183 {
184 if (status->statusCode == atoi (str))
185 {
186 return;
187 }
188 }
189 }
190
191 fprintf (stderr, "\nExiting to system with code %d\n", exitcode);
192 exit (exitcode);
193}
194
195/*
196 * Usage ()
197 *
198 * Prints a usage message for program program and exits with code exitcode.
199 *
200 */
201static void
202Usage (const char *program, int exitcode)
203{
204 fprintf (stderr, "Usage: %s [options]\n", program);
205 fprintf (stderr, "Options:\n");
206 fprintf (stderr, " -h print this message\n");
207 fprintf (stderr, " -q quiet: run silently\n");
208 fprintf (stderr, " -v verbose: print extra information\n");
209 fprintf (stderr, " -d level set lalDebugLevel to level\n");
210 exit (exitcode);
211}
212
213
214/*
215 * ParseOptions ()
216 *
217 * Parses the argc - 1 option strings in argv[].
218 *
219 */
220static void
221ParseOptions (int argc, char *argv[])
222{
223 FILE *fp;
224
225 while (1)
226 {
227 int c = -1;
228
229 c = LALgetopt (argc, argv, "hqvd:");
230 if (c == -1)
231 {
232 break;
233 }
234
235 switch (c)
236 {
237 case 'd': /* set debug level */
238 break;
239
240 case 'v': /* verbose */
241 ++verbose;
242 break;
243
244 case 'q': /* quiet: run silently (ignore error messages) */
245 fp = freopen ("/dev/null", "w", stderr);
246 if (fp == NULL)
247 {
248 fprintf(stderr, "Error: Unable to open /dev/null\n");
249 exit(1);
250 }
251 fp = freopen ("/dev/null", "w", stdout);
252 if (fp == NULL)
253 {
254 fprintf(stderr, "Error: Unable to open /dev/null\n");
255 exit(1);
256 }
257 break;
258
259 case 'h':
260 Usage (argv[0], 0);
261 break;
262
263 default:
264 Usage (argv[0], 1);
265 }
266
267 }
268
269 if (LALoptind < argc)
270 {
271 Usage (argv[0], 1);
272 }
273
274 return;
275}
276
277/** \endcond DONT_DOXYGEN */
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