File: itkTestDriverInclude.h

package info (click to toggle)
insighttoolkit5 5.4.3-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 704,384 kB
  • sloc: cpp: 783,592; ansic: 628,724; xml: 44,704; fortran: 34,250; python: 22,874; sh: 4,078; pascal: 2,636; lisp: 2,158; makefile: 464; yacc: 328; asm: 205; perl: 203; lex: 146; tcl: 132; javascript: 98; csh: 81
file content (165 lines) | stat: -rw-r--r-- 5,414 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
/*=========================================================================
 *
 *  Copyright NumFOCUS
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *         https://www.apache.org/licenses/LICENSE-2.0.txt
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 *=========================================================================*/
/*=========================================================================
 *
 *  Portions of this file are subject to the VTK Toolkit Version 3 copyright.
 *
 *  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
 *
 *  For complete copyright, license and disclaimer of warranty information
 *  please refer to the NOTICE file at the top of the ITK source tree.
 *
 *=========================================================================*/
#ifndef itkTestDriverInclude_h
#define itkTestDriverInclude_h
//
// This file is used by the TestDriver executables generated by CMake's
// create_test_sourcelist. It defines a function, ProcessArguments
// that processes the command line for the test driver prior to
// invoking the test. It also defines the RegressionTestImage function
// that is called after a test has been run by the driver.
// command line options prior to invoking the test.
//

#include <algorithm>
#include <fstream>
#include <iostream>
#include <map>
#include <string>
#include <vector>

#include "itksys/Process.h"
#include "itksys/SystemTools.hxx"
#include "vnl/vnl_sample.h"

#include "itkFloatingPointExceptions.h"
#include "itkImageIOBase.h"
#include "itkIntTypes.h"
#include "itkWin32Header.h"

#define ITK_TEST_DIMENSION_MAX 6

extern int
RegressionTestImage(const char *       testImageFilename,
                    const char *       baselineImageFilename,
                    int                reportErrors,
                    double             intensityTolerance,
                    itk::SizeValueType numberOfPixelsTolerance = 0,
                    unsigned int       radiusTolerance = 0,
                    bool               verifyInputInformation = true,
                    double             coordinateTolerance = 1.0e-6,
                    double             directionTolerance = 1.0e-6);

extern int
HashTestImage(const char * testImageFilename, const std::string md5hash);


extern std::map<std::string, int>
RegressionTestBaselines(char *);

using ComparePairType = std::pair<char *, char *>;

// A structure to hold regression test parameters
struct RegressionTestParameters
{
  std::vector<ComparePairType> compareList;
  double                       intensityTolerance;
  unsigned int                 numberOfPixelsTolerance;
  unsigned int                 radiusTolerance;
  bool                         verifyInputInformation;
  double                       coordinateTolerance;
  double                       directionTolerance;
};

extern RegressionTestParameters &
GetRegressionTestParameters();


using HashPairType = std::pair<const char *, std::vector<std::string>>;

extern std::vector<HashPairType> &
GetHashTestList();

using ArgumentStringType = char **;


// Types to hold parameters that should be processed later
using ArgumentsList = std::vector<char *>;

struct ProcessedOutputType
{
  bool externalProcessMustBeCalled;

  ArgumentsList args;
  ArgumentsList add_before_libpath;
  ArgumentsList add_before_env;
  ArgumentsList add_before_env_with_sep;
};

// A structure to hold redirect output parameters
struct RedirectOutputParameters
{
  bool        redirect;
  std::string fileName;
};

extern RedirectOutputParameters &
GetRedirectOutputParameters();

extern void
usage();

extern int
ProcessArguments(int * ac, ArgumentStringType * av, ProcessedOutputType * processedOutput = nullptr);


/// Get the PixelType and ComponentType from fileName
extern void
GetImageType(const char * fileName, itk::IOPixelEnum & pixelType, itk::IOComponentEnum & componentType);

extern int
RegressionTestImage(const char *       testImageFilename,
                    const char *       baselineImageFilename,
                    int                reportErrors,
                    double             intensityTolerance,
                    itk::SizeValueType numberOfPixelsTolerance,
                    unsigned int       radiusTolerance,
                    bool               verifyInputInformation,
                    double             coordinateTolerance,
                    double             directionTolerance);


extern int
HashTestImage(const char * testImageFilename, const std::vector<std::string> & baselineMD5Vector);

//
// Generate all of the possible baselines
// The possible baselines are generated from the baselineFilename using the
// following algorithm:
// 1) strip the suffix
// 2) append a digit .x
// 3) append the original suffix.
// It the file exists, increment x and continue
//
extern std::map<std::string, int>
RegressionTestBaselines(char * baselineFilename);

// Needed for explicit instantiate
//#include "itkTestingComparisonImageFilter.hxx"

#endif