TPCCLIB
Loading...
Searching...
No Matches
libtpccm.c
1/******************************************************************************
2 * This file is not compiled into the library, but it contains main()
3 * which is compiled to an executable, used to test the library functions.
4 *****************************************************************************/
5
6/*****************************************************************************/
7#include "tpcclibConfig.h"
8/*****************************************************************************/
9#include <stdio.h>
10#include <stdlib.h>
11#include <math.h>
12#include <time.h>
13#include <string.h>
14#include <ctype.h>
15#include <unistd.h>
16/*****************************************************************************/
17#include "tpcextensions.h"
18/*****************************************************************************/
19#include "tpccm.h"
20#include "test_tpccm.h"
21/*****************************************************************************/
22
23/*****************************************************************************/
24static char *info[] = {
25 "Usage: @P [options]",
26 " ",
27 "Options:",
28 " -stdoptions", // List standard options like --help, -v, etc
29 " -t, --test",
30 " Run all tests for library functions.",
31 0};
32/*****************************************************************************/
33
34/*****************************************************************************/
39int main(
41 int argc,
43 char *argv[ ]
44) {
45 int i, help=0, version=0, verbose=1, error=0, test=0;
46 int ret;
47 char *cptr;
48
49 if(argc==1) {tpcPrintUsage(argv[0], info, stdout); return(0);}
50 for(i=1; i<argc; i++) {
51 if(tpcProcessStdOptions(argv[i], &help, &version, &verbose)==0) continue;
52 cptr=argv[i]; if(*cptr=='-') cptr++; if(*cptr=='-') cptr++;
53 if(strncasecmp(cptr, "TEST", 1)==0) {
54 test=1; continue;
55 } else {
56 error++; break;
57 }
58 }
59 if(error>0) {
60 fprintf(stderr, "Error: specify --help for usage.\n");
61 return(1);
62 }
63 /* Print help or version? */
64 if(help) {tpcPrintUsage(argv[0], info, stdout); return(0);}
65 if(version) {tpcPrintBuild(argv[0], stdout); return(0);}
66
67 if(test==0) return(0);
68
69 if(verbose>0) printf("running tests for library functions...\n");
70 TPCSTATUS status; statusInit(&status); status.verbose=verbose;
71 statusSet(&status, __func__, __FILE__, __LINE__, 0);
72 i=10;
73 /* sim1cm */
74 i++; if((ret=test_simMBF(&status))!=0) {
75 fprintf(stderr, "failed (%d).\n", ret);
76 statusPrint(stderr, &status); statusFree(&status);
77 return(i);
78 }
79 i++; if((ret=test_simC1(&status))!=0) {
80 fprintf(stderr, "failed (%d).\n", ret);
81 statusPrint(stderr, &status); statusFree(&status);
82 return(i);
83 }
84 i++; if((ret=test_simC1_i(&status))!=0) {
85 fprintf(stderr, "failed (%d).\n", ret);
86 statusPrint(stderr, &status); statusFree(&status);
87 return(i);
88 }
89 i++; if((ret=test_simC1_d(&status))!=0) {
90 fprintf(stderr, "failed (%d).\n", ret);
91 statusPrint(stderr, &status); statusFree(&status);
92 return(i);
93 }
94 /* sim2cm */
95 i++; if((ret=test_simC2(&status))!=0) {
96 fprintf(stderr, "failed (%d).\n", ret);
97 statusPrint(stderr, &status); statusFree(&status);
98 return(i);
99 }
100 i++; if((ret=test_simC2_i(&status))!=0) {
101 fprintf(stderr, "failed (%d).\n", ret);
102 statusPrint(stderr, &status); statusFree(&status);
103 return(i);
104 }
105 /* sim3cms */
106 i++; if((ret=test_simC3s(&status))!=0) {
107 fprintf(stderr, "failed (%d).\n", ret);
108 statusPrint(stderr, &status); statusFree(&status);
109 return(i);
110 }
111 i++; if((ret=test_simC3vs(&status))!=0) {
112 fprintf(stderr, "failed (%d).\n", ret);
113 statusPrint(stderr, &status); statusFree(&status);
114 return(i);
115 }
116 /* sim3cmp */
117 i++; if((ret=test_simC3p(&status))!=0) {
118 fprintf(stderr, "failed (%d).\n", ret);
119 statusPrint(stderr, &status); statusFree(&status);
120 return(i);
121 }
122 i++; if((ret=test_simC3vp(&status))!=0) {
123 fprintf(stderr, "failed (%d).\n", ret);
124 statusPrint(stderr, &status); statusFree(&status);
125 return(i);
126 }
127 /* simkloss */
128 i++; if((ret=test_simC2l(&status))!=0) {
129 fprintf(stderr, "failed (%d).\n", ret);
130 statusPrint(stderr, &status); statusFree(&status);
131 return(i);
132 }
133 i++; if((ret=test_simC2vl(&status))!=0) {
134 fprintf(stderr, "failed (%d).\n", ret);
135 statusPrint(stderr, &status); statusFree(&status);
136 return(i);
137 }
138 i++; if((ret=test_simC3vpKLoss(&status))!=0) {
139 fprintf(stderr, "failed (%d).\n", ret);
140 statusPrint(stderr, &status); statusFree(&status);
141 return(i);
142 }
143 /* simrtcm */
144 i++; if((ret=test_simRTCM(&status))!=0) {
145 fprintf(stderr, "failed (%d).\n", ret);
146 statusPrint(stderr, &status); statusFree(&status);
147 return(i);
148 }
149 i++; if((ret=test_simSRTM(&status))!=0) {
150 fprintf(stderr, "failed (%d).\n", ret);
151 statusPrint(stderr, &status); statusFree(&status);
152 return(i);
153 }
154 i++; if((ret=test_simTRTM(&status))!=0) {
155 fprintf(stderr, "failed (%d).\n", ret);
156 statusPrint(stderr, &status); statusFree(&status);
157 return(i);
158 }
159 /* simdicm */
160 i++; if((ret=test_simC1DI(&status))!=0) {
161 fprintf(stderr, "failed (%d).\n", ret);
162 statusPrint(stderr, &status); statusFree(&status);
163 return(i);
164 }
165 i++; if((ret=test_simC3DIvs(&status))!=0) {
166 fprintf(stderr, "failed (%d).\n", ret);
167 statusPrint(stderr, &status); statusFree(&status);
168 return(i);
169 }
170 i++; if((ret=test_simC4DIvp(&status))!=0) {
171 fprintf(stderr, "failed (%d).\n", ret);
172 statusPrint(stderr, &status); statusFree(&status);
173 return(i);
174 }
175 i++; if((ret=test_simC4DIvs(&status))!=0) {
176 fprintf(stderr, "failed (%d).\n", ret);
177 statusPrint(stderr, &status); statusFree(&status);
178 return(i);
179 }
180 /* simdispersion */
181 i++; if((ret=test_simDispersion(&status))!=0) {
182 fprintf(stderr, "failed (%d).\n", ret);
183 statusPrint(stderr, &status); statusFree(&status);
184 return(i);
185 }
186 i++; if((ret=test_corDispersion(&status))!=0) {
187 fprintf(stderr, "failed (%d).\n", ret);
188 statusPrint(stderr, &status); statusFree(&status);
189 return(i);
190 }
191 i++; if((ret=test_simTTM(&status))!=0) {
192 fprintf(stderr, "failed (%d).\n", ret);
193 statusPrint(stderr, &status); statusFree(&status);
194 return(i);
195 }
196 i++; if((ret=test_simTTM_i(&status))!=0) {
197 fprintf(stderr, "failed (%d).\n", ret);
198 statusPrint(stderr, &status); statusFree(&status);
199 return(i);
200 }
201 /* simoxygen */
202 i++; if((ret=test_simOxygen(&status))!=0) {
203 fprintf(stderr, "failed (%d).\n", ret);
204 statusPrint(stderr, &status); statusFree(&status);
205 return(i);
206 }
207 /* convolut */
208 i++; if((ret=test_convolve1D(&status))!=0) {
209 fprintf(stderr, "failed (%d).\n", ret);
210 statusPrint(stderr, &status); statusFree(&status);
211 return(i);
212 }
213 i++; if((ret=test_simIsSteadyInterval(&status))!=0) {
214 fprintf(stderr, "failed (%d).\n", ret);
215 statusPrint(stderr, &status); statusFree(&status);
216 return(i);
217 }
218 /* simblood */
219 i++; if((ret=test_icmparcInit(&status))!=0) {
220 fprintf(stderr, "failed (%d).\n", ret);
221 statusPrint(stderr, &status); statusFree(&status);
222 return(i);
223 }
224 i++; if((ret=test_icmparcAddMetabolites(&status))!=0) {
225 fprintf(stderr, "failed (%d).\n", ret);
226 statusPrint(stderr, &status); statusFree(&status);
227 return(i);
228 }
229 i++; if((ret=test_icmparcAllocateTACs(&status))!=0) {
230 fprintf(stderr, "failed (%d).\n", ret);
231 statusPrint(stderr, &status); statusFree(&status);
232 return(i);
233 }
234 i++; if((ret=test_icmparcFree(&status))!=0) {
235 fprintf(stderr, "failed (%d).\n", ret);
236 statusPrint(stderr, &status); statusFree(&status);
237 return(i);
238 }
239 i++; if((ret=test_simBTAC(&status))!=0) {
240 fprintf(stderr, "failed (%d).\n", ret);
241 statusPrint(stderr, &status); statusFree(&status);
242 return(i);
243 }
244 i++; if((ret=test_simBM1(&status))!=0) {
245 fprintf(stderr, "failed (%d).\n", ret);
246 statusPrint(stderr, &status); statusFree(&status);
247 return(i);
248 }
249 if(verbose>0) printf("\nAll tests passed.\n\n");
250 statusFree(&status);
251 return(0);
252}
253/*****************************************************************************/
254
255/*****************************************************************************/
int tpcProcessStdOptions(const char *s, int *print_usage, int *print_version, int *verbose_level)
Definition proginfo.c:47
void tpcPrintBuild(const char *program, FILE *fp)
Definition proginfo.c:339
void tpcPrintUsage(const char *program, char *text[], FILE *fp)
Definition proginfo.c:114
void statusPrint(FILE *fp, TPCSTATUS *s)
Definition statusmsg.c:82
void statusInit(TPCSTATUS *s)
Definition statusmsg.c:104
void statusSet(TPCSTATUS *s, const char *func, const char *srcfile, int srcline, tpcerror error)
Definition statusmsg.c:142
void statusFree(TPCSTATUS *s)
Definition statusmsg.c:126
int verbose
Verbose level, used by statusPrint() etc.
Header file for libtpccm.
Header file for library libtpcextensions.