VTK
dox/Rendering/vtkTesting.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkTesting.h
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00067 #ifndef __vtkTesting_h
00068 #define __vtkTesting_h
00069 
00070 #include "vtkObject.h"
00071 #include <vtkstd/vector> // STL Header used for argv
00072 #include <vtkstd/string> // STL Header used for argv
00073 
00074 class vtkRenderWindow;
00075 class vtkImageData;
00076 class vtkDataArray;
00077 class vtkDataSet;
00078 class vtkRenderWindowInteractor;
00079 
00080 class VTK_RENDERING_EXPORT vtkTesting : public vtkObject
00081 {
00082 public:
00083   static vtkTesting *New();
00084   vtkTypeMacro(vtkTesting,vtkObject);
00085   void PrintSelf(ostream& os, vtkIndent indent);
00086 
00087 //BTX
00088   enum ReturnValue {
00089     FAILED = 0,
00090     PASSED = 1,
00091     NOT_RUN = 2,
00092     DO_INTERACTOR = 3
00093   };
00094 
00095   static int Test(int argc, char *argv[], vtkRenderWindow *rw, double thresh);
00096 
00098 
00116   static int InteractorEventLoop( int argc, char *argv[], 
00117       vtkRenderWindowInteractor *iren, const char *stream = NULL );
00119   
00120 //ETX
00121   
00123 
00124   vtkSetClampMacro(FrontBuffer, int, 0, 1);
00125   vtkBooleanMacro(FrontBuffer, int);
00126   vtkGetMacro(FrontBuffer, int);
00128 
00130 
00132   virtual int RegressionTest(double thresh);
00133   virtual int RegressionTest(double thresh,ostream &os);
00135 
00137 
00138   virtual int RegressionTest(vtkImageData* image, double thresh);
00139   virtual int RegressionTest(vtkImageData* image, double thresh, ostream& os);
00141 
00143 
00147   int CompareAverageOfL2Norm(vtkDataSet *pdA, vtkDataSet *pdB, double tol);
00148   // Description:
00149   // Compute the average L2 norm between two data arrays "daA" and "daB" 
00150   // and compare against "tol".
00151   int CompareAverageOfL2Norm(vtkDataArray *daA, vtkDataArray *daB, double tol);
00153 
00155 
00157   virtual void SetRenderWindow(vtkRenderWindow* rw);
00158   vtkGetObjectMacro(RenderWindow, vtkRenderWindow);
00160 
00162 
00163   vtkSetStringMacro(ValidImageFileName);
00164   const char *GetValidImageFileName();
00166 
00168 
00169   vtkGetMacro(ImageDifference, double);
00171 
00173 
00178   void AddArgument(const char *argv);
00179   void AddArguments(int argc,const char **argv);
00181 
00182   //BTX
00184 
00187   char *GetArgument(const char *arg);
00188   //ETX 
00190 
00193   void CleanArguments();
00194   
00196 
00197   const char *GetDataRoot();
00198   vtkSetStringMacro(DataRoot);
00200 
00202 
00203   const char *GetTempDirectory();
00204   vtkSetStringMacro(TempDirectory);
00206 
00208   int IsValidImageSpecified();
00209 
00211   int IsInteractiveModeSpecified();
00212 
00214   int IsFlagSpecified(const char *flag);
00215 
00217 
00219   vtkSetMacro(BorderOffset, int);
00220   vtkGetMacro(BorderOffset, int);
00222 
00224 
00225   vtkSetMacro(Verbose, int);
00226   vtkGetMacro(Verbose, int);  
00228 
00229 protected:
00230   vtkTesting();
00231   ~vtkTesting();
00232 
00233   static char* IncrementFileName(const char* fname, int count);
00234   static int LookForFile(const char* newFileName);
00235 
00236   int FrontBuffer;
00237   vtkRenderWindow* RenderWindow;
00238   char* ValidImageFileName;
00239   double ImageDifference;
00240   char *TempDirectory;
00241   int BorderOffset;
00242   int Verbose;
00243   
00244 //BTX
00245   vtkstd::vector<vtkstd::string> Args;
00246 //ETX
00247   char *DataRoot;
00248   double StartWallTime;
00249   double StartCPUTime;
00250   
00251 private:
00252   vtkTesting(const vtkTesting&);  // Not implemented.
00253   void operator=(const vtkTesting&);  // Not implemented.
00254 };
00255 
00256 #endif
00257 
00258