00001 #include <ctype.h>
00002 #include <stdio.h>
00003 #include <string.h>
00004 #include <stdlib.h>
00005
00006 #include "mitkLog.h"
00007
00008
00009
00010
00011 int mitkCameraVisualizationTest(int, char*[]);
00012 int mitkClaronInterfaceTest(int, char*[]);
00013 int mitkClaronToolTest(int, char*[]);
00014 int mitkClaronTrackingDeviceTest(int, char*[]);
00015 int mitkInternalTrackingToolTest(int, char*[]);
00016 int mitkNavigationDataDisplacementFilterTest(int, char*[]);
00017 int mitkNavigationDataLandmarkTransformFilterTest(int, char*[]);
00018 int mitkNavigationDataObjectVisualizationFilterTest(int, char*[]);
00019 int mitkNavigationDataTest(int, char*[]);
00020 int mitkNavigationDataRecorderTest(int, char*[]);
00021 int mitkNavigationDataReferenceTransformFilterTest(int, char*[]);
00022 int mitkNavigationDataSequentialPlayerTest(int, char*[]);
00023 int mitkNavigationDataToMessageFilterTest(int, char*[]);
00024 int mitkNavigationDataToNavigationDataFilterTest(int, char*[]);
00025 int mitkNavigationDataToPointSetFilterTest(int, char*[]);
00026 int mitkNavigationDataTransformFilterTest(int, char*[]);
00027 int mitkNDIPassiveToolTest(int, char*[]);
00028 int mitkNDIProtocolTest(int, char*[]);
00029 int mitkNDITrackingDeviceTest(int, char*[]);
00030 int mitkTimeStampTest(int, char*[]);
00031 int mitkTrackingVolumeTest(int, char*[]);
00032 int mitkTrackingDeviceTest(int, char*[]);
00033 int mitkTrackingToolTest(int, char*[]);
00034 int mitkVirtualTrackingDeviceTest(int, char*[]);
00035 int mitkTrackingDeviceSourceTest(int, char*[]);
00036 int mitkNavigationToolReaderAndWriterTest(int, char*[]);
00037 int mitkNavigationToolStorageTest(int, char*[]);
00038 int mitkNavigationToolStorageSerializerAndDeserializerTest(int, char*[]);
00039 int mitkNavigationToolTest(int, char*[]);
00040
00041
00042
00043
00044 typedef int (*MainFuncPointer)(int , char*[]);
00045 typedef struct
00046 {
00047 const char* name;
00048 MainFuncPointer func;
00049 } functionMapEntry;
00050
00051 functionMapEntry cmakeGeneratedFunctionMapEntries[] = {
00052 {
00053 "mitkCameraVisualizationTest",
00054 mitkCameraVisualizationTest
00055 },
00056 {
00057 "mitkClaronInterfaceTest",
00058 mitkClaronInterfaceTest
00059 },
00060 {
00061 "mitkClaronToolTest",
00062 mitkClaronToolTest
00063 },
00064 {
00065 "mitkClaronTrackingDeviceTest",
00066 mitkClaronTrackingDeviceTest
00067 },
00068 {
00069 "mitkInternalTrackingToolTest",
00070 mitkInternalTrackingToolTest
00071 },
00072 {
00073 "mitkNavigationDataDisplacementFilterTest",
00074 mitkNavigationDataDisplacementFilterTest
00075 },
00076 {
00077 "mitkNavigationDataLandmarkTransformFilterTest",
00078 mitkNavigationDataLandmarkTransformFilterTest
00079 },
00080 {
00081 "mitkNavigationDataObjectVisualizationFilterTest",
00082 mitkNavigationDataObjectVisualizationFilterTest
00083 },
00084 {
00085 "mitkNavigationDataTest",
00086 mitkNavigationDataTest
00087 },
00088 {
00089 "mitkNavigationDataRecorderTest",
00090 mitkNavigationDataRecorderTest
00091 },
00092 {
00093 "mitkNavigationDataReferenceTransformFilterTest",
00094 mitkNavigationDataReferenceTransformFilterTest
00095 },
00096 {
00097 "mitkNavigationDataSequentialPlayerTest",
00098 mitkNavigationDataSequentialPlayerTest
00099 },
00100 {
00101 "mitkNavigationDataToMessageFilterTest",
00102 mitkNavigationDataToMessageFilterTest
00103 },
00104 {
00105 "mitkNavigationDataToNavigationDataFilterTest",
00106 mitkNavigationDataToNavigationDataFilterTest
00107 },
00108 {
00109 "mitkNavigationDataToPointSetFilterTest",
00110 mitkNavigationDataToPointSetFilterTest
00111 },
00112 {
00113 "mitkNavigationDataTransformFilterTest",
00114 mitkNavigationDataTransformFilterTest
00115 },
00116 {
00117 "mitkNDIPassiveToolTest",
00118 mitkNDIPassiveToolTest
00119 },
00120 {
00121 "mitkNDIProtocolTest",
00122 mitkNDIProtocolTest
00123 },
00124 {
00125 "mitkNDITrackingDeviceTest",
00126 mitkNDITrackingDeviceTest
00127 },
00128 {
00129 "mitkTimeStampTest",
00130 mitkTimeStampTest
00131 },
00132 {
00133 "mitkTrackingVolumeTest",
00134 mitkTrackingVolumeTest
00135 },
00136 {
00137 "mitkTrackingDeviceTest",
00138 mitkTrackingDeviceTest
00139 },
00140 {
00141 "mitkTrackingToolTest",
00142 mitkTrackingToolTest
00143 },
00144 {
00145 "mitkVirtualTrackingDeviceTest",
00146 mitkVirtualTrackingDeviceTest
00147 },
00148 {
00149 "mitkTrackingDeviceSourceTest",
00150 mitkTrackingDeviceSourceTest
00151 },
00152 {
00153 "mitkNavigationToolReaderAndWriterTest",
00154 mitkNavigationToolReaderAndWriterTest
00155 },
00156 {
00157 "mitkNavigationToolStorageTest",
00158 mitkNavigationToolStorageTest
00159 },
00160 {
00161 "mitkNavigationToolStorageSerializerAndDeserializerTest",
00162 mitkNavigationToolStorageSerializerAndDeserializerTest
00163 },
00164 {
00165 "mitkNavigationToolTest",
00166 mitkNavigationToolTest
00167 },
00168
00169 {0,0}
00170 };
00171
00172
00173
00174
00175 char* lowercase(const char *string)
00176 {
00177 char *new_string, *p;
00178
00179 #ifdef __cplusplus
00180 new_string = static_cast<char *>(malloc(sizeof(char) *
00181 static_cast<size_t>(strlen(string) + 1)));
00182 #else
00183 new_string = (char *)(malloc(sizeof(char) * (size_t)(strlen(string) + 1)));
00184 #endif
00185
00186 if (!new_string)
00187 {
00188 return 0;
00189 }
00190 strcpy(new_string, string);
00191 p = new_string;
00192 while (*p != 0)
00193 {
00194 #ifdef __cplusplus
00195 *p = static_cast<char>(tolower(*p));
00196 #else
00197 *p = (char)(tolower(*p));
00198 #endif
00199
00200 ++p;
00201 }
00202 return new_string;
00203 }
00204
00205 int main(int ac, char *av[])
00206 {
00207 int i, NumTests, testNum, partial_match;
00208 char *arg, *test_name;
00209 int count;
00210 int testToRun = -1;
00211
00212
00213
00214 for(count =0; cmakeGeneratedFunctionMapEntries[count].name != 0; count++)
00215 {
00216 }
00217 NumTests = count;
00218
00219
00220 if (ac < 2)
00221 {
00222
00223 printf("Available tests:\n");
00224 for (i =0; i < NumTests; ++i)
00225 {
00226 printf("%3d. %s\n", i, cmakeGeneratedFunctionMapEntries[i].name);
00227 }
00228 printf("To run a test, enter the test number: ");
00229 fflush(stdout);
00230 testNum = 0;
00231 if( scanf("%d", &testNum) != 1 )
00232 {
00233 printf("Couldn't parse that input as a number\n");
00234 return -1;
00235 }
00236 if (testNum >= NumTests)
00237 {
00238 printf("%3d is an invalid test number.\n", testNum);
00239 return -1;
00240 }
00241 testToRun = testNum;
00242 ac--;
00243 av++;
00244 }
00245 partial_match = 0;
00246 arg = 0;
00247
00248 if(testToRun == -1 && ac > 1)
00249 {
00250 partial_match = (strcmp(av[1], "-R") == 0) ? 1 : 0;
00251 }
00252 if (partial_match && ac < 3)
00253 {
00254 printf("-R needs an additional parameter.\n");
00255 return -1;
00256 }
00257 if(testToRun == -1)
00258 {
00259 arg = lowercase(av[1 + partial_match]);
00260 }
00261 for (i =0; i < NumTests && testToRun == -1; ++i)
00262 {
00263 test_name = lowercase(cmakeGeneratedFunctionMapEntries[i].name);
00264 if (partial_match && strstr(test_name, arg) != NULL)
00265 {
00266 testToRun = i;
00267 ac -=2;
00268 av += 2;
00269 }
00270 else if (!partial_match && strcmp(test_name, arg) == 0)
00271 {
00272 testToRun = i;
00273 ac--;
00274 av++;
00275 }
00276 free(test_name);
00277 }
00278 if(arg)
00279 {
00280 free(arg);
00281 }
00282 if(testToRun != -1)
00283 {
00284 int result;
00285 mitk::LoggingBackend::Register(); ;
00286 result = (*cmakeGeneratedFunctionMapEntries[testToRun].func)(ac, av);
00287 mitk::LoggingBackend::Unregister();
00288 return result;
00289 }
00290
00291
00292
00293 printf("Available tests:\n");
00294 for (i =0; i < NumTests; ++i)
00295 {
00296 printf("%3d. %s\n", i, cmakeGeneratedFunctionMapEntries[i].name);
00297 }
00298 printf("Failed: %s is an invalid test name.\n", av[1]);
00299
00300 return -1;
00301 }