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.
 
 
 
 
 
 

170 lines
5.8 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkTestUtilities.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 vtkTestUtilities - Utility functions used for regression testing.
// .SECTION Description
// vtkTestUtilities provides methods to perform common testing operations.
// These include getting a command line argument or an environment variable,
// or a default value. Particularly, there are specialized methods to get the
// root directory for VTK Data, expanding a filename with this root directory.
#ifndef __vtkTestUtilities_h
#define __vtkTestUtilities_h
#include "vtkSystemIncludes.h"
struct vtkTestUtilities
{
// Description:
// Function necessary for accessing the root directory for VTK data. Try the
// -D command line argument or VTK_DATA_ROOT or a default value. The returned
// string has to be deleted (with delete[]) by the user.
static inline char* GetDataRoot(int argc, char* argv[]);
// Description:
// Given a file name, this function returns a new string which is (in theory)
// the full path. This path is constructed by prepending the file name with a
// command line argument (-D path) or VTK_DATA_ROOT env. variable. If slash
// is true, appends a slash to the resulting string. The returned string has
// to be deleted (with delete[]) by the user.
static inline char* ExpandDataFileName(int argc, char* argv[],
const char* fname,
int slash = 0);
// Description:
// Function returning either a command line argument, an environment variable
// or a default value. The returned string has to be deleted (with delete[])
// by the user.
static inline char* GetArgOrEnvOrDefault(const char* arg,
int argc, char* argv[],
const char* env,
const char* def);
// Description:
// Given a file name, this function returns a new string which is (in theory)
// the full path. This path is constructed by prepending the file name with a
// command line argument, an environment variable or a default value. If
// slash is true, appends a slash to the resulting string. The returned
// string has to be deleted (with delete[]) by the user.
static inline char* ExpandFileNameWithArgOrEnvOrDefault(const char* arg,
int argc, char* argv[],
const char* env,
const char* def,
const char* fname,
int slash = 0);
};
inline
char* vtkTestUtilities::GetDataRoot(int argc, char* argv[])
{
return vtkTestUtilities::GetArgOrEnvOrDefault(
"-D", argc, argv,
"VTK_DATA_ROOT",
"../../../../VTKData");
}
inline
char* vtkTestUtilities::ExpandDataFileName(int argc, char* argv[],
const char* fname,
int slash)
{
return vtkTestUtilities::ExpandFileNameWithArgOrEnvOrDefault(
"-D", argc, argv,
"VTK_DATA_ROOT",
"../../../../VTKData",
fname,
slash);
}
inline
char* vtkTestUtilities::GetArgOrEnvOrDefault(const char* arg,
int argc, char* argv[],
const char* env,
const char *def)
{
int index = -1;
for (int i = 0; i < argc; i++)
{
if (strcmp(arg, argv[i]) == 0 && i < argc - 1)
{
index = i + 1;
}
}
char* value;
if (index != -1)
{
value = new char[strlen(argv[index]) + 1];
strcpy(value, argv[index]);
}
else
{
char *foundenv = getenv(env);
if (foundenv)
{
value = new char[strlen(foundenv) + 1];
strcpy(value, foundenv);
}
else
{
value = new char[strlen(def) + 1];
strcpy(value, def);
}
}
return value;
}
inline
char* vtkTestUtilities::ExpandFileNameWithArgOrEnvOrDefault(const char* arg,
int argc,
char* argv[],
const char* env,
const char *def,
const char* fname,
int slash)
{
char* fullName;
char* value = vtkTestUtilities::GetArgOrEnvOrDefault(arg, argc, argv,
env,
def);
if (value)
{
fullName = new char[strlen(value) + strlen(fname) + 2 + (slash ? 1 : 0)];
fullName[0] = 0;
strcat(fullName, value);
int len = static_cast<int>(strlen(fullName));
fullName[len] = '/';
fullName[len+1] = 0;
strcat(fullName, fname);
}
else
{
fullName = new char[strlen(fname) + 1 + (slash ? 1 : 0)];
strcpy(fullName, fname);
}
if (slash)
{
strcat(fullName, "/");
}
delete[] value;
return fullName;
}
#endif // __vtkTestUtilities_h