TPCCLIB
Loading...
Searching...
No Matches
libtpcnlopt.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 "tpcnlopt.h"
20#include "test_tpcnlopt.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
74 drandSeed(1);
75
76 /* nlopt */
77 i++; if((ret=test_nloptInit(&status))!=0) {
78 fprintf(stderr, "failed (%d).\n", ret);
79 statusPrint(stderr, &status); statusFree(&status);
80 return(i);
81 }
82 i++; if((ret=test_nloptFree(&status))!=0) {
83 fprintf(stderr, "failed (%d).\n", ret);
84 statusPrint(stderr, &status); statusFree(&status);
85 return(i);
86 }
87 i++; if((ret=test_nloptAllocate(&status))!=0) {
88 fprintf(stderr, "failed (%d).\n", ret);
89 statusPrint(stderr, &status); statusFree(&status);
90 return(i);
91 }
92 i++; if((ret=test_nloptDuplicate(&status))!=0) {
93 fprintf(stderr, "failed (%d).\n", ret);
94 statusPrint(stderr, &status); statusFree(&status);
95 return(i);
96 }
97 i++; if((ret=test_nloptAddP(&status))!=0) {
98 fprintf(stderr, "failed (%d).\n", ret);
99 statusPrint(stderr, &status); statusFree(&status);
100 return(i);
101 }
102 i++; if((ret=test_nloptSortP(&status))!=0) {
103 fprintf(stderr, "failed (%d).\n", ret);
104 statusPrint(stderr, &status); statusFree(&status);
105 return(i);
106 }
107 i++; if((ret=test_nloptMeanP(&status))!=0) {
108 fprintf(stderr, "failed (%d).\n", ret);
109 statusPrint(stderr, &status); statusFree(&status);
110 return(i);
111 }
112 i++; if((ret=test_nloptLimitFixedNr(&status))!=0) {
113 fprintf(stderr, "failed (%d).\n", ret);
114 statusPrint(stderr, &status); statusFree(&status);
115 return(i);
116 }
117 i++; if((ret=test_nloptFixedNr(&status))!=0) {
118 fprintf(stderr, "failed (%d).\n", ret);
119 statusPrint(stderr, &status); statusFree(&status);
120 return(i);
121 }
122 i++; if((ret=test_nloptRemoveEmpties(&status))!=0) {
123 fprintf(stderr, "failed (%d).\n", ret);
124 statusPrint(stderr, &status); statusFree(&status);
125 return(i);
126 }
127 /* constraints */
128 i++; if((ret=test_nloptCheckParameters(&status))!=0) {
129 fprintf(stderr, "failed (%d).\n", ret);
130 statusPrint(stderr, &status); statusFree(&status);
131 return(i);
132 }
133 i++; if((ret=test_nloptForceLimits(&status))!=0) {
134 fprintf(stderr, "failed (%d).\n", ret);
135 statusPrint(stderr, &status); statusFree(&status);
136 return(i);
137 }
138 /* rndpoint */
139 i++; if((ret=test_nloptRandomPoint(&status))!=0) {
140 fprintf(stderr, "failed (%d).\n", ret);
141 statusPrint(stderr, &status); statusFree(&status);
142 return(i);
143 }
144 i++; if((ret=test_nloptGaussianPoint(&status))!=0) {
145 fprintf(stderr, "failed (%d).\n", ret);
146 statusPrint(stderr, &status); statusFree(&status);
147 return(i);
148 }
149 /* nlopt1d */
150 i++; if((ret=test_nlopt1D(&status))!=0) {
151 fprintf(stderr, "failed (%d).\n", ret);
152 statusPrint(stderr, &status); statusFree(&status);
153 return(i);
154 }
155 /* simplex */
156 i++; if((ret=test_nloptSimplex(&status))!=0) {
157 fprintf(stderr, "failed (%d).\n", ret);
158 statusPrint(stderr, &status); statusFree(&status);
159 return(i);
160 }
161 i++; if((ret=test_nloptSimplexARRS(&status))!=0) {
162 fprintf(stderr, "failed (%d).\n", ret);
163 statusPrint(stderr, &status); statusFree(&status);
164 return(i);
165 }
166 i++; if((ret=test_nloptSimplexMS(&status))!=0) {
167 fprintf(stderr, "failed (%d).\n", ret);
168 statusPrint(stderr, &status); statusFree(&status);
169 return(i);
170 }
171 /* praxis */
172 i++; if((ret=test_nloptPowellBrent(&status))!=0) {
173 fprintf(stderr, "failed (%d).\n", ret);
174 statusPrint(stderr, &status); statusFree(&status);
175 return(i);
176 }
177 /* mpso */
178 i++; if((ret=test_nloptMPSO(&status))!=0) {
179 fprintf(stderr, "failed (%d).\n", ret);
180 statusPrint(stderr, &status); statusFree(&status);
181 return(i);
182 }
183 /* tgo */
184 i++; if((ret=test_nloptITGO1(&status))!=0) {
185 fprintf(stderr, "failed (%d).\n", ret);
186 statusPrint(stderr, &status); statusFree(&status);
187 return(i);
188 }
189 i++; if((ret=test_nloptITGO2(&status))!=0) {
190 fprintf(stderr, "failed (%d).\n", ret);
191 statusPrint(stderr, &status); statusFree(&status);
192 return(i);
193 }
194 i++; if((ret=test_nloptIATGO(&status))!=0) {
195 fprintf(stderr, "failed (%d).\n", ret);
196 statusPrint(stderr, &status); statusFree(&status);
197 return(i);
198 }
199
200 if(verbose>0) printf("\nAll tests passed.\n\n");
201 statusFree(&status);
202 return(0);
203}
204/*****************************************************************************/
205
206/*****************************************************************************/
unsigned int drandSeed(short int seed)
Make and optionally set the seed for rand(), drand, drandRange, and drandGaussian().
Definition gaussdev.c:27
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 libtpcnlopt.