TPCCLIB
Loading...
Searching...
No Matches
libtpcisotope.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 "tpcisotope.h"
20#include "test_tpcisotope.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, ret, help=0, version=0, verbose=1, error=0, test=0;
46 char *cptr;
47
48 if(argc==1) {tpcPrintUsage(argv[0], info, stdout); return(0);}
49 for(i=1; i<argc; i++) {
50 if(tpcProcessStdOptions(argv[i], &help, &version, &verbose)==0) continue;
51 cptr=argv[i]; if(*cptr=='-') cptr++; if(*cptr=='-') cptr++;
52 if(strncasecmp(cptr, "TEST", 1)==0) {
53 test=1; continue;
54 } else {
55 error++; break;
56 }
57 }
58 if(error>0) {
59 fprintf(stderr, "Error: specify --help for usage.\n");
60 return(1);
61 }
62 /* Print help or version? */
63 if(help) {tpcPrintUsage(argv[0], info, stdout); return(0);}
64 if(version) {tpcPrintBuild(argv[0], stdout); return(0);}
65
66 if(test==0) return(0);
67
68 if(verbose>0) printf("running tests for library functions...\n");
69 TPCSTATUS status; statusInit(&status); status.verbose=verbose;
70 statusSet(&status, __func__, __FILE__, __LINE__, 0);
71
72 if(verbose>0) printf("running tests for library functions...\n");
73 i=10;
74 /* elements */
75 i++; if((ret=test_elementName(&status))!=0) {
76 fprintf(stderr, "failed (%d).\n", ret);
77 statusPrint(stderr, &status); statusFree(&status);
78 return(i);
79 }
80 i++; if((ret=test_elementSymbol(&status))!=0) {
81 fprintf(stderr, "failed (%d).\n", ret);
82 statusPrint(stderr, &status); statusFree(&status);
83 return(i);
84 }
85 i++; if((ret=test_elementIdentify(&status))!=0) {
86 fprintf(stderr, "failed (%d).\n", ret);
87 statusPrint(stderr, &status); statusFree(&status);
88 return(i);
89 }
90 /* isotope */
91 i++; if(test_isotopeHalflife(verbose)!=0) {fprintf(stderr, "failed.\n"); return(i);}
92 i++; if(test_isotopeBranching(verbose)!=0) {fprintf(stderr, "failed.\n"); return(i);}
93 i++; if(test_isotopeName(verbose)!=0) {fprintf(stderr, "failed.\n"); return(i);}
94 i++; if(test_isotopeIdentifyHalflife(verbose)!=0) {fprintf(stderr, "failed.\n"); return(i);}
95 i++; if(test_isotopeIdentify(verbose)!=0) {fprintf(stderr, "failed.\n"); return(i);}
96 /* decay */
97 i++; if((ret=test_decayDescr(&status))!=0) {
98 fprintf(stderr, "failed (%d).\n", ret);
99 statusPrint(stderr, &status); statusFree(&status);
100 return(i);
101 }
102 i++; if(test_lambdaFromHalflife(verbose)!=0) {fprintf(stderr, "failed.\n"); return(i);}
103 i++; if(test_lambdaFromIsotope(verbose)!=0) {fprintf(stderr, "failed.\n"); return(i);}
104 i++; if(test_decayCorrectionFactorFromLambda(verbose)!=0) {fprintf(stderr, "failed.\n"); return(i);}
105 i++; if(test_decayCorrectionFactorFromIsotope(verbose)!=0) {fprintf(stderr, "failed.\n"); return(i);}
106 /* ranoise */
107 i++; if((ret=test_noiseSD4Frame(&status))!=0) {
108 fprintf(stderr, "failed (%d).\n", ret);
109 statusPrint(stderr, &status); statusFree(&status);
110 return(i);
111 }
112
113 if(verbose>0) printf("\nAll tests passed.\n\n");
114 statusFree(&status);
115 return(0);
116}
117/*****************************************************************************/
118
119/*****************************************************************************/
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 library libtpcextensions.
Header file for library libtpcisotope.