You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.8 KiB
C
65 lines
1.8 KiB
C
3 weeks ago
|
#ifndef vtkMultiBaselineRegressionTest_h
|
||
|
#define vtkMultiBaselineRegressionTest_h
|
||
|
|
||
|
#include "vtkNew.h"
|
||
|
#include "vtkRenderWindow.h"
|
||
|
#include "vtkTesting.h"
|
||
|
|
||
|
#include "vtksys/SystemTools.hxx"
|
||
|
|
||
|
#include <string.h>
|
||
|
|
||
|
/**\brief Run a regression test with an explicitly-provided image filename.
|
||
|
*
|
||
|
* Unlike the traditional C++ image-based test macro (vtkRegressionTestImage),
|
||
|
* this templated function accepts the name of a baseline image.
|
||
|
* It uses the existing vtkTesting infrastructure to expand the image name
|
||
|
* into a full path by replacing the implied filename component of the valid
|
||
|
* image (specified with "-V" on the command line) with the given \a img
|
||
|
* value. The directory portion of the valid image path preceding is untouched.
|
||
|
*/
|
||
|
template <typename T>
|
||
|
int RegressionTestWithImageName(
|
||
|
int argc, char* argv[], T* rw, const std::string& img, double thresh = 10.)
|
||
|
{
|
||
|
vtkNew<vtkTesting> testing;
|
||
|
bool isImgPath = false;
|
||
|
for (int i = 0; i < argc; ++i)
|
||
|
{
|
||
|
if (!strcmp(argv[i], "-V"))
|
||
|
{
|
||
|
isImgPath = true;
|
||
|
}
|
||
|
else if (isImgPath)
|
||
|
{
|
||
|
isImgPath = false;
|
||
|
std::vector<std::string> components;
|
||
|
std::string originalImage = argv[i];
|
||
|
vtksys::SystemTools::SplitPath(originalImage, components);
|
||
|
// Substitute image filename for last component;
|
||
|
components.back() = img;
|
||
|
std::string tryme = vtksys::SystemTools::JoinPath(components);
|
||
|
testing->AddArgument(tryme.c_str());
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
testing->AddArgument(argv[i]);
|
||
|
}
|
||
|
|
||
|
if (testing->IsInteractiveModeSpecified())
|
||
|
{
|
||
|
return vtkTesting::DO_INTERACTOR;
|
||
|
}
|
||
|
|
||
|
if (testing->IsValidImageSpecified())
|
||
|
{
|
||
|
testing->SetRenderWindow(rw);
|
||
|
return testing->RegressionTestAndCaptureOutput(thresh, cout);
|
||
|
}
|
||
|
|
||
|
return vtkTesting::NOT_RUN;
|
||
|
}
|
||
|
|
||
|
#endif
|
||
|
// VTK-HeaderTest-Exclude: vtkMultiBaselineRegressionTest.h
|