Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

182 lines
4.8 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkTesting.h,v $
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkTesting - a unified VTK regression testing framework
// .SECTION Description
//
// This is a VTK regression testing framework. Looks like this:
//
// vtkTesting* t = vtkTesting::New();
//
// Two options for setting arguments
//
// Option 1:
// for ( cc = 1; cc < argc; cc ++ )
// {
// t->AddArgument(argv[cc]);
// }
//
// Option 2:
// t->AddArgument("-D");
// t->AddArgument(my_data_dir);
// t->AddArgument("-V");
// t->AddArgument(my_valid_image);
//
// ...
//
// Two options of doing testing:
//
// Option 1:
// t->SetRenderWindow(renWin);
// int res = t->RegressionTest(threshold);
//
// Option 2:
// int res = t->RegressionTest(test_image, threshold);
//
// ...
//
// if ( res == vtkTesting::PASSED )
// {
// Test passed
// }
// else
// {
// Test failed
// }
//
#ifndef __vtkTesting_h
#define __vtkTesting_h
#include "vtkObject.h"
#include <vtkstd/vector> // used for argv
#include <vtkstd/string> // used for argv
class vtkRenderWindow;
class vtkImageData;
class VTK_RENDERING_EXPORT vtkTesting : public vtkObject
{
public:
static vtkTesting *New();
vtkTypeRevisionMacro(vtkTesting,vtkObject);
void PrintSelf(ostream& os, vtkIndent indent);
//BTX
enum ReturnValue {
FAILED = 0,
PASSED = 1,
NOT_RUN = 2,
DO_INTERACTOR = 3
};
static int Test(int argc, char *argv[], vtkRenderWindow *rw, double thresh);
//ETX
// Description:
// Use front buffer for tests. By default use back buffer.
vtkSetClampMacro(FrontBuffer, int, 0, 1);
vtkBooleanMacro(FrontBuffer, int);
vtkGetMacro(FrontBuffer, int);
// Description:
// Perform the test and return result. At the same time the output will be
// written cout
virtual int RegressionTest(double thresh);
virtual int RegressionTest(double thresh,ostream &os);
// Description:
// Compare the image with the valid image.
virtual int RegressionTest(vtkImageData* image, double thresh);
virtual int RegressionTest(vtkImageData* image, double thresh, ostream& os);
// Description:
// Set and get the render window that will be used for regression testing.
virtual void SetRenderWindow(vtkRenderWindow* rw);
vtkGetObjectMacro(RenderWindow, vtkRenderWindow);
// Description:
// Set/Get the name of the valid image file
vtkSetStringMacro(ValidImageFileName);
const char *GetValidImageFileName();
// Description:
// Get the image difference.
vtkGetMacro(ImageDifference, double);
// Description:
// Pass the command line arguments into this class to be processed. Many of
// the Get methods such as GetValidImage and GetBaselineRoot rely on the
// arguments to be passed in prior to retrieving these values. Just call
// AddArgument for each argument that was passed into the command line
void AddArgument(const char *argv);
// Description
// This method delete all arguments in vtkTesting, this way you can reuse
// it in a loop where you would have multiple testing.
void CleanArguments();
// Description:
// Get some paramters from the command line arguments, env, or defaults
const char *GetDataRoot();
vtkSetStringMacro(DataRoot);
// Description:
// Get some paramters from the command line arguments, env, or defaults
const char *GetTempDirectory();
vtkSetStringMacro(TempDirectory);
// Description:
// Is a valid image specified on the command line areguments?
int IsValidImageSpecified();
// Description:
// Is the interactive mode specified?
int IsInteractiveModeSpecified();
// Description:
// Number of pixels added as borders to avoid problems with
// window decorations added by some window managers.
vtkSetMacro(BorderOffset, int);
vtkGetMacro(BorderOffset, int);
protected:
vtkTesting();
~vtkTesting();
static char* IncrementFileName(const char* fname, int count);
static int LookForFile(const char* newFileName);
int FrontBuffer;
vtkRenderWindow* RenderWindow;
char* ValidImageFileName;
double ImageDifference;
char *TempDirectory;
int BorderOffset;
//BTX
vtkstd::vector<vtkstd::string> Args;
//ETX
char *DataRoot;
double StartWallTime;
double StartCPUTime;
private:
vtkTesting(const vtkTesting&); // Not implemented.
void operator=(const vtkTesting&); // Not implemented.
};
#endif