TestingMacros.h File Reference

#include "vtkDebugLeaks.h"
#include "vtkSmartPointer.h"
#include "vtkMath.h"
#include "vtkMRMLStorageNode.h"
#include <vtkStringArray.h>
#include "vtkMatrix4x4.h"

Go to the source code of this file.

Defines

#define ctkCompare(ACTUAL_VALUE, EXPECTED_VALUE)
#define ctkExerciseMethod(OBJECT, SETTER, GETTER, VALUE_TO_SET, EXPECTED_VALUE)
#define ctkFail(MSG)   std::cerr << "line " << __LINE__ << " - " << MSG << std::endl;
#define ctkVerify(CONDITION)   ctkVerify2(CONDITION, "")
#define ctkVerify2(CONDITION, MSG)
#define DEBUG_LEAKS_ENABLE_EXIT_ERROR()   vtkDebugLeaks::SetExitError(true);
 turns on exiting with an error if there are leaks
#define EXERCISE_BASIC_DISPLAY_MRML_METHODS(className, node)
#define EXERCISE_BASIC_DISPLAYABLE_MRML_METHODS(className, node)
#define EXERCISE_BASIC_MRML_METHODS(className, node)
 Slicer Libs/MRML/vtkMRMLNode exercises.
#define EXERCISE_BASIC_OBJECT_METHODS(object)
 tests basic vtkObject methods
#define EXERCISE_BASIC_STORABLE_MRML_METHODS(className, node)
#define EXERCISE_BASIC_STORAGE_MRML_METHODS(className, node)
#define EXERCISE_BASIC_TRANSFORM_MRML_METHODS(className, node)
#define EXERCISE_BASIC_TRANSFORMABLE_MRML_METHODS(className, node)
#define TEST_ITK_SET_GET(variable, command)
 test itk set/get
#define TEST_ITK_SET_GET_VALUE(variable, command)
 test itk set/get
#define TEST_SET_GET_BOOLEAN(object, variable)
 test object by calling Set on the variable with false, true, 0, 1, On, Off
#define TEST_SET_GET_DOUBLE(object, variable, value)
#define TEST_SET_GET_DOUBLE_RANDOM(object, variable, max)
#define TEST_SET_GET_DOUBLE_RANGE(object, variable, min, max)
#define TEST_SET_GET_INT(object, variable, value)
#define TEST_SET_GET_INT_RANDOM(object, variable, max)
#define TEST_SET_GET_INT_RANGE(object, variable, min, max)
#define TEST_SET_GET_STRING(object, variable)
 test a string variable on the object by calling Set/Get
#define TEST_SET_GET_VECTOR3_DOUBLE(object, variable, x, y, z)
#define TEST_SET_GET_VECTOR3_DOUBLE_RANDOM(object, variable, max)
#define TEST_SET_GET_VECTOR3_DOUBLE_RANGE(object, variable, min, max)
#define TRY_EXPECT_ITK_EXCEPTION(command)
 try the itk command passed in, succeeding if catch an exception
#define TRY_EXPECT_NO_ITK_EXCEPTION(command)
 try the command passed in, succeeding if no exception

Define Documentation

#define ctkCompare ( ACTUAL_VALUE,
EXPECTED_VALUE   ) 
Value:
if (ACTUAL_VALUE != EXPECTED_VALUE)                     \
    {                                                     \
    ctkFail("Compare failed (" << #ACTUAL_VALUE << "!="   \
        << #EXPECTED_VALUE << ")" << std::endl            \
        << "  Current:" << ACTUAL_VALUE << std::endl      \
        << "  Expected:"<< EXPECTED_VALUE);               \
    return EXIT_FAILURE;                                  \
    }
#define ctkExerciseMethod ( OBJECT,
SETTER,
GETTER,
VALUE_TO_SET,
EXPECTED_VALUE   ) 
Value:
(OBJECT)->SETTER(VALUE_TO_SET);                                               \
  ctkCompare((OBJECT)->GETTER(), EXPECTED_VALUE)
#define ctkFail ( MSG   )     std::cerr << "line " << __LINE__ << " - " << MSG << std::endl;
#define ctkVerify ( CONDITION   )     ctkVerify2(CONDITION, "")
#define ctkVerify2 ( CONDITION,
MSG   ) 
Value:
if (!(CONDITION))                    \
    {                                  \
    ctkFail("Assert(" << #CONDITION    \
      << ") " << MSG);                 \
    return EXIT_FAILURE;               \
    }
 
#define DEBUG_LEAKS_ENABLE_EXIT_ERROR (  )     vtkDebugLeaks::SetExitError(true);

turns on exiting with an error if there are leaks

#define EXERCISE_BASIC_DISPLAY_MRML_METHODS ( className,
node   ) 

For testing nodes in Libs/MRML that are subclasses of the display node. Calls the basic mrml methods macro first.

#define EXERCISE_BASIC_DISPLAYABLE_MRML_METHODS ( className,
node   ) 

For testing nodes in Libs/MRML that are displayable. Calls the basic transformable mrml methods macro first.

#define EXERCISE_BASIC_MRML_METHODS ( className,
node   ) 

Slicer Libs/MRML/vtkMRMLNode exercises.

#define EXERCISE_BASIC_OBJECT_METHODS ( object   ) 
Value:
{ \
    if ( object == NULL ) \
      { \
      std::cerr << "EXERCISE_BASIC_OBJECT_METHODS( with NULL object )" << std::endl;  \
      return EXIT_FAILURE;  \
      } \
    object->Print( std::cout );  \
    std::cout << "Name of Class = " << object->GetClassName() << std::endl; \
    std::cout << "Name of Superclass = " << object->Superclass::GetClassName() << std::endl; \
    }

tests basic vtkObject methods

Referenced by DiffusionTensorEditorTest1(), vtkChangeTrackerGUITest(), vtkDataIOManagerLogicTest1(), vtkMRMLAnnotationAngleNodeTest1(), vtkMRMLAnnotationAngleStorageNodeTest1(), vtkMRMLAnnotationControlPointsNodeTest1(), vtkMRMLAnnotationControlPointsStorageNodeTest1(), vtkMRMLAnnotationDisplayNodeTest1(), vtkMRMLAnnotationFiducialNodeTest1(), vtkMRMLAnnotationFiducialsStorageNodeTest1(), vtkMRMLAnnotationLineDisplayNodeTest1(), vtkMRMLAnnotationLinesNodeTest1(), vtkMRMLAnnotationLinesStorageNodeTest1(), vtkMRMLAnnotationNodeTest1(), vtkMRMLAnnotationPointDisplayNodeTest1(), vtkMRMLAnnotationRulerNodeTest1(), vtkMRMLAnnotationRulerStorageNodeTest1(), vtkMRMLAnnotationStorageNodeTest1(), vtkMRMLArrayPlotNodeTest1(), vtkMRMLBSplineTransformNodeTest1(), vtkMRMLCameraNodeTest1(), vtkMRMLChangeTrackerNodeTest(), vtkMRMLClipModelsNodeTest1(), vtkMRMLColorNodeTest1(), vtkMRMLColorTableNodeTest1(), vtkMRMLColorTableStorageNodeTest1(), vtkMRMLCrosshairNodeTest1(), vtkMRMLdGEMRICProceduralColorNodeTest1(), vtkMRMLDiffusionImageVolumeNodeTest1(), vtkMRMLDiffusionTensorDisplayPropertiesNodeTest1(), vtkMRMLDiffusionTensorVolumeDisplayNodeTest1(), vtkMRMLDiffusionTensorVolumeNodeTest1(), vtkMRMLDiffusionTensorVolumeSliceDisplayNodeTest1(), vtkMRMLDiffusionWeightedVolumeDisplayNodeTest1(), vtkMRMLDiffusionWeightedVolumeNodeTest1(), vtkMRMLDisplayableNodeTest1(), vtkMRMLDisplayNodeTest1(), vtkMRMLDoubleArrayNodeTest1(), vtkMRMLFiberBundleDisplayNodeTest1(), vtkMRMLFiberBundleGlyphDisplayNodeTest1(), vtkMRMLFiberBundleLineDisplayNodeTest1(), vtkMRMLFiberBundleNodeTest1(), vtkMRMLFiberBundleStorageNodeTest1(), vtkMRMLFiberBundleTubeDisplayNodeTest1(), vtkMRMLFiducialListNodeTest1(), vtkMRMLFiducialListStorageNodeTest1(), vtkMRMLFreeSurferModelOverlayStorageNodeTest1(), vtkMRMLFreeSurferModelStorageNodeTest1(), vtkMRMLFreeSurferProceduralColorNodeTest1(), vtkMRMLGlyphableVolumeDisplayNodeTest1(), vtkMRMLGlyphableVolumeSliceDisplayNodeTest1(), vtkMRMLGlyphVolumeDisplayPropertiesNodeTest1(), vtkMRMLGridTransformNodeTest1(), vtkMRMLHierarchyNodeTest1(), vtkMRMLInteractionNodeTest1(), vtkMRMLLabelMapVolumeDisplayNodeTest1(), vtkMRMLLayoutNodeTest1(), vtkMRMLLinearTransformNodeTest1(), vtkMRMLMeasurementsAngleNodeTest1(), vtkMRMLMeasurementsNodeTest1(), vtkMRMLMeasurementsRulerNodeTest1(), vtkMRMLModelDisplayNodeTest1(), vtkMRMLModelHierarchyNodeTest1(), vtkMRMLModelNodeTest1(), vtkMRMLModelStorageNodeTest1(), vtkMRMLNodeTest1(), vtkMRMLNonlinearTransformNodeTest1(), vtkMRMLNRRDStorageNodeTest1(), vtkMRMLOrthogonalLinePlotNodeTest1(), vtkMRMLPETProceduralColorNodeTest1(), vtkMRMLPlotNodeTest1(), vtkMRMLProceduralColorNodeTest1(), vtkMRMLROIListNodeTest1(), vtkMRMLROINodeTest1(), vtkMRMLScalarVolumeDisplayNodeTest1(), vtkMRMLScalarVolumeNodeTest1(), vtkMRMLSceneSnapshotNodeTest1(), vtkMRMLSceneTest1(), vtkMRMLSceneTest2(), vtkMRMLSelectionNodeTest1(), vtkMRMLSliceCompositeNodeTest1(), vtkMRMLSliceNodeTest1(), vtkMRMLSnapshotClipNodeTest1(), vtkMRMLStorableNodeTest1(), vtkMRMLTensorVolumeNodeTest1(), vtkMRMLTimeSeriesVolumeNodeTest1(), vtkMRMLTransformableNodeTest1(), vtkMRMLTransformNodeTest1(), vtkMRMLTransformStorageNodeTest1(), vtkMRMLUnstructuredGridDisplayNodeTest1(), vtkMRMLUnstructuredGridNodeTest1(), vtkMRMLUnstructuredGridStorageNodeTest1(), vtkMRMLVectorVolumeDisplayNodeTest1(), vtkMRMLVectorVolumeNodeTest1(), vtkMRMLViewNodeTest1(), vtkMRMLVolumeArchetypeStorageNodeTest1(), vtkMRMLVolumeDisplayNodeTest1(), vtkMRMLVolumeHeaderlessStorageNodeTest1(), vtkMRMLVolumeNodeTest1(), vtkMRMLVolumePropertyNodeTest1(), vtkMRMLVolumePropertyStorageNodeTest1(), vtkMRMLXYPlotManagerNodeTest1(), vtkObserverManagerTest1(), vtkPichonFastMarchingTest(), vtkSlicerComponentGUITest1(), vtkSlicermiAnnotationModuleLogicTest1(), vtkSlicerModuleGUITest1(), and vtkSlicerSliceLogicTest1().

#define EXERCISE_BASIC_STORABLE_MRML_METHODS ( className,
node   ) 

For testing nodes in Libs/MRML that are storable. Calls the basic transformable mrml methods macro first.

#define EXERCISE_BASIC_STORAGE_MRML_METHODS ( className,
node   ) 

For testing nodes in Libs/MRML that are subclasses of the storage node. Calls the basic mrml methods macro first.

Referenced by vtkMRMLStorageNodeTest1().

#define EXERCISE_BASIC_TRANSFORM_MRML_METHODS ( className,
node   ) 
Value:
{                                                                  \
    EXERCISE_BASIC_STORABLE_MRML_METHODS( className, node );         \
    std::cout << "IsLinear = " << node->IsLinear()<< std:: endl;        \
    vtkSmartPointer<vtkGeneralTransform> g =  vtkSmartPointer<vtkGeneralTransform>::New(); \
    g = node->GetTransformToParent();                                   \
    if (g == NULL)                                                     \
      {                                                                 \
      std::cout << "Warning: transform node has a null transform to parent" << std::endl; \
      }                                                                 \
    std::cout << "IsTransformToWorldLinear = " << node->IsTransformToWorldLinear() << std::endl; \
    vtkSmartPointer < className > t = vtkSmartPointer < className >::New(); \
    std::cout << "IsTransformToNodeLinear = " << node->IsTransformToNodeLinear(t) << std::endl; \
    node->GetTransformToWorld(g);                                    \
    node->GetTransformToNode(t, g);                                     \
    vtkSmartPointer<vtkMatrix4x4> m =  vtkSmartPointer<vtkMatrix4x4>::New(); \
    int retval = node->GetMatrixTransformToWorld(m);                    \
    if (retval == 0)                                                    \
      {                                                                 \
      std::cout << "Warning: can't get matrix transform to world." << std::endl; \
      }                                                                 \
    retval = node->GetMatrixTransformToNode(t, m);                      \
    if (retval == 0)                                                    \
      {                                                                 \
      std::cout << "Warning: can't get matrix transform to node." << std::endl; \
      }                                                                 \
    std::cout << "IsTransformNodeMyParent = " << node->IsTransformNodeMyParent(t) << std::endl; \
    std::cout << "IsTransformNodeMyChild = " << node->IsTransformNodeMyChild(t) << std::endl; \
  }

For testing nodes in Libs/MRML that are transform nodes. Calls the basic storable mrml methods macro first.

#define EXERCISE_BASIC_TRANSFORMABLE_MRML_METHODS ( className,
node   ) 
Value:
{                                                                 \
    EXERCISE_BASIC_MRML_METHODS(className, node);                    \
    vtkMRMLTransformNode *tnode2 = node->GetParentTransformNode();  \
    if (tnode2 != NULL)\
      {\
      std::cerr << "ERROR: parent transform node is not null" << std::endl;\
      return EXIT_FAILURE; \
      }\
    node1->SetAndObserveTransformNodeID(NULL);\
    const char *node_tid = node1->GetTransformNodeID();\
    if (node_tid != NULL)                              \
      {\
      std::cerr << "ERROR: with observing transform node id" << std::endl;\
      return EXIT_FAILURE; \
      }\
    bool canApplyNonLinear = node->CanApplyNonLinearTransforms();\
    std::cout << "Node can apply non linear transforms? " << (canApplyNonLinear == true ? "yes" : "no") << std::endl;\
  }

For testing nodes in Libs/MRML that are transformable. Calls the basic mrml methods macro first.

#define TEST_ITK_SET_GET ( variable,
command   ) 
Value:
if( variable.GetPointer() != command )   \
    {   \
    std::cerr << "Error in " << #command << std::endl; \
    std::cerr << "Expected " << variable.GetPointer() << std::endl; \
    std::cerr << "but got  " << command << std::endl; \
    return EXIT_FAILURE; \
    }

test itk set/get

#define TEST_ITK_SET_GET_VALUE ( variable,
command   ) 
Value:
if( variable != command )   \
    {   \
    std::cerr << "Error in " << #command << std::endl; \
    std::cerr << "Expected " << variable << std::endl; \
    std::cerr << "but got  " << command << std::endl; \
    return EXIT_FAILURE; \
    }

test itk set/get

#define TEST_SET_GET_BOOLEAN ( object,
variable   ) 
Value:
object->Set##variable( false ); \
  object->Set##variable( true ); \
  if( object->Get##variable() != 1 ) \
    {   \
    std::cerr << "Error in Set/Get"#variable << ", Get"#variable << " is " << object->Get##variable() << " instead of 1" << std::endl; \
    return EXIT_FAILURE; \
    } \
  object->Set##variable( false ); \
  if( object->Get##variable() != 0 ) \
    {   \
    std::cerr << "Error in Set/Get"#variable << ", Get"#variable << " is " << object->Get##variable() << " instead of 0" << std::endl; \
    return EXIT_FAILURE; \
    } \
  object->variable##On(); \
  if( object->Get##variable() != 1 ) \
    {   \
    std::cerr << "Error in On/Get"#variable << ", Get"#variable << " is " << object->Get##variable() << " instead of 1" << std::endl; \
    return EXIT_FAILURE; \
    } \
  object->variable##Off(); \
  if( object->Get##variable() != 0 ) \
    {   \
    std::cerr << "Error in Off/Get"#variable << ", Get"#variable << " is " << object->Get##variable() << " instead of 0" << std::endl; \
    return EXIT_FAILURE; \
    }

test object by calling Set on the variable with false, true, 0, 1, On, Off

Referenced by vtkMRMLAnnotationDisplayNodeTest1(), vtkMRMLAnnotationLineDisplayNodeTest1(), vtkMRMLAnnotationPointDisplayNodeTest1(), vtkMRMLArrayPlotNodeTest1(), vtkMRMLBSplineTransformNodeTest1(), vtkMRMLCameraNodeTest1(), vtkMRMLChangeTrackerNodeTest(), vtkMRMLClipModelsNodeTest1(), vtkMRMLColorTableStorageNodeTest1(), vtkMRMLCrosshairNodeTest1(), vtkMRMLdGEMRICProceduralColorNodeTest1(), vtkMRMLDiffusionImageVolumeNodeTest1(), vtkMRMLDiffusionTensorVolumeDisplayNodeTest1(), vtkMRMLDiffusionTensorVolumeNodeTest1(), vtkMRMLDiffusionTensorVolumeSliceDisplayNodeTest1(), vtkMRMLDiffusionWeightedVolumeDisplayNodeTest1(), vtkMRMLDiffusionWeightedVolumeNodeTest1(), vtkMRMLDisplayNodeTest1(), vtkMRMLDoubleArrayNodeTest1(), vtkMRMLFiberBundleDisplayNodeTest1(), vtkMRMLFiberBundleGlyphDisplayNodeTest1(), vtkMRMLFiberBundleLineDisplayNodeTest1(), vtkMRMLFiberBundleNodeTest1(), vtkMRMLFiberBundleStorageNodeTest1(), vtkMRMLFiberBundleTubeDisplayNodeTest1(), vtkMRMLFiducialListNodeTest1(), vtkMRMLFiducialListStorageNodeTest1(), vtkMRMLFreeSurferModelOverlayStorageNodeTest1(), vtkMRMLFreeSurferModelStorageNodeTest1(), vtkMRMLFreeSurferProceduralColorNodeTest1(), vtkMRMLGlyphableVolumeDisplayNodeTest1(), vtkMRMLGlyphableVolumeSliceDisplayNodeTest1(), vtkMRMLGlyphVolumeDisplayPropertiesNodeTest1(), vtkMRMLGridTransformNodeTest1(), vtkMRMLHierarchyNodeTest1(), vtkMRMLInteractionNodeTest1(), vtkMRMLLabelMapVolumeDisplayNodeTest1(), vtkMRMLLayoutNodeTest1(), vtkMRMLLinearTransformNodeTest1(), vtkMRMLMeasurementsAngleNodeTest1(), vtkMRMLMeasurementsNodeTest1(), vtkMRMLMeasurementsRulerNodeTest1(), vtkMRMLModelDisplayNodeTest1(), vtkMRMLModelHierarchyNodeTest1(), vtkMRMLModelNodeTest1(), vtkMRMLNodeTest1(), vtkMRMLNonlinearTransformNodeTest1(), vtkMRMLNRRDStorageNodeTest1(), vtkMRMLOrthogonalLinePlotNodeTest1(), vtkMRMLPETProceduralColorNodeTest1(), vtkMRMLPlotNodeTest1(), vtkMRMLProceduralColorNodeTest1(), vtkMRMLROIListNodeTest1(), vtkMRMLROINodeTest1(), vtkMRMLScalarVolumeDisplayNodeTest1(), vtkMRMLScalarVolumeNodeTest1(), vtkMRMLSceneSnapshotNodeTest1(), vtkMRMLSelectionNodeTest1(), vtkMRMLSliceCompositeNodeTest1(), vtkMRMLSliceNodeTest1(), vtkMRMLSnapshotClipNodeTest1(), vtkMRMLTensorVolumeNodeTest1(), vtkMRMLTimeSeriesVolumeNodeTest1(), vtkMRMLTransformNodeTest1(), vtkMRMLTransformStorageNodeTest1(), vtkMRMLUnstructuredGridDisplayNodeTest1(), vtkMRMLUnstructuredGridNodeTest1(), vtkMRMLUnstructuredGridStorageNodeTest1(), vtkMRMLVectorVolumeDisplayNodeTest1(), vtkMRMLVectorVolumeNodeTest1(), vtkMRMLVolumeArchetypeStorageNodeTest1(), vtkMRMLVolumeDisplayNodeTest1(), vtkMRMLVolumeHeaderlessStorageNodeTest1(), vtkMRMLVolumeNodeTest1(), vtkMRMLVolumePropertyNodeTest1(), vtkMRMLVolumePropertyStorageNodeTest1(), and vtkMRMLXYPlotManagerNodeTest1().

#define TEST_SET_GET_DOUBLE ( object,
variable,
value   ) 
Value:
{                                             \
    object->Set##variable( value );               \
    if( object->Get##variable() != value )        \
      {                                         \
      std::cerr << "Error in Set/Get"#variable << " using value " << value << std::endl; \
      return EXIT_FAILURE;                                      \
      }                                                         \
  }

test a double variable on the object by setting it to input value using Set, and testing it via the Get

#define TEST_SET_GET_DOUBLE_RANDOM ( object,
variable,
max   ) 
Value:
{                                             \
    double val = vtkMath::Random() * max;     \
    object->Set##variable( val );               \
    if( object->Get##variable() != val )        \
      {                                         \
      std::cerr << "Error in  Set/Get"#variable << ", using random value " << val << std::endl; \
      return EXIT_FAILURE;                                      \
      }                                                         \
  }

test an integer variable on the object by setting it to a random value up to max using Set, and testing it via the Get

#define TEST_SET_GET_DOUBLE_RANGE ( object,
variable,
min,
max   ) 
Value:
{                                                                     \
    double epsilon = 1.0;                                               \
    double val = min - epsilon;                                         \
    TEST_SET_GET_DOUBLE( object, variable, val);                        \
    val = min;                                                          \
    TEST_SET_GET_DOUBLE( object, variable, val);                        \
    val = min + epsilon;                                                \
    TEST_SET_GET_DOUBLE( object, variable, val);                        \
    val = (min + max) / 2.0;                                            \
    TEST_SET_GET_DOUBLE( object, variable, val);                        \
    val = max - epsilon;                                                \
    TEST_SET_GET_DOUBLE( object, variable, val);                        \
    val = max;                                                          \
    TEST_SET_GET_DOUBLE( object, variable, val);                        \
    val = max + epsilon;                                                \
    TEST_SET_GET_DOUBLE( object, variable, val);                        \
  }

Test a double variable on object over the range, calls test set get in with min - epsilon, min, min + epsilon, (min+max)/2, max - epsilon, max, max + epsilon, where first and last test should report errors epsilon set to 1.0

#define TEST_SET_GET_INT ( object,
variable,
value   ) 
Value:
{                                                        \
    object->Set##variable( value );                        \
    if( object->Get##variable() != value )                 \
      {                                                    \
      std::cerr << "Error in Set/Get"#variable << " using value " << value << std::endl; \
      return EXIT_FAILURE;                                              \
      }                                                                 \
  }

test an integer variable on the object by setting it to input value using Set, and testing it via the Get

#define TEST_SET_GET_INT_RANDOM ( object,
variable,
max   ) 
Value:
{                                                         \
    int val = (int)(vtkMath::Random() * max);               \
    object->Set##variable( val );                           \
    if( object->Get##variable() != val )                    \
      {                                                     \
      std::cerr << "Error in Set/Get"#variable << " using random value " << val << std::endl; \
      return EXIT_FAILURE;                                  \
      }                                                     \
  }

test an integer variable on the object by setting it to a random value up to max using Set, and testing it via the Get

#define TEST_SET_GET_INT_RANGE ( object,
variable,
min,
max   ) 
Value:
{                                                         \
    int epsilon = 1;                                        \
    int val = min - epsilon;                                \
    TEST_SET_GET_INT( object, variable, val);               \
    val = min;                                              \
    TEST_SET_GET_INT( object, variable, val);               \
    val = min + epsilon;                                    \
    TEST_SET_GET_INT( object, variable, val);               \
    val = (min + max) / 2;                                  \
    TEST_SET_GET_INT( object, variable, val);               \
    val = max - epsilon;                                    \
    TEST_SET_GET_INT( object, variable, val);               \
    val = max;                                              \
    TEST_SET_GET_INT( object, variable, val);               \
    val = max + epsilon;                                    \
    TEST_SET_GET_INT( object, variable, val);               \
  }

Test an integer variable on object over the range, calls test set get in with min - epsilon, min, min + epsilon, (min+max)/2, max - epsilon, max, max + epsilon, where first and last test should report errors epsilon defined as 1

#define TEST_SET_GET_STRING ( object,
variable   ) 

test a string variable on the object by calling Set/Get

Referenced by vtkDataIOManagerLogicTest1(), vtkMRMLAnnotationDisplayNodeTest1(), vtkMRMLAnnotationLineDisplayNodeTest1(), vtkMRMLAnnotationPointDisplayNodeTest1(), vtkMRMLArrayPlotNodeTest1(), vtkMRMLBSplineTransformNodeTest1(), vtkMRMLCameraNodeTest1(), vtkMRMLChangeTrackerNodeTest(), vtkMRMLClipModelsNodeTest1(), vtkMRMLColorTableStorageNodeTest1(), vtkMRMLCrosshairNodeTest1(), vtkMRMLdGEMRICProceduralColorNodeTest1(), vtkMRMLDiffusionImageVolumeNodeTest1(), vtkMRMLDiffusionTensorVolumeDisplayNodeTest1(), vtkMRMLDiffusionTensorVolumeNodeTest1(), vtkMRMLDiffusionTensorVolumeSliceDisplayNodeTest1(), vtkMRMLDiffusionWeightedVolumeDisplayNodeTest1(), vtkMRMLDiffusionWeightedVolumeNodeTest1(), vtkMRMLDisplayNodeTest1(), vtkMRMLDoubleArrayNodeTest1(), vtkMRMLFiberBundleDisplayNodeTest1(), vtkMRMLFiberBundleGlyphDisplayNodeTest1(), vtkMRMLFiberBundleLineDisplayNodeTest1(), vtkMRMLFiberBundleNodeTest1(), vtkMRMLFiberBundleStorageNodeTest1(), vtkMRMLFiberBundleTubeDisplayNodeTest1(), vtkMRMLFiducialListNodeTest1(), vtkMRMLFiducialListStorageNodeTest1(), vtkMRMLFreeSurferModelOverlayStorageNodeTest1(), vtkMRMLFreeSurferModelStorageNodeTest1(), vtkMRMLFreeSurferProceduralColorNodeTest1(), vtkMRMLGlyphableVolumeDisplayNodeTest1(), vtkMRMLGlyphableVolumeSliceDisplayNodeTest1(), vtkMRMLGlyphVolumeDisplayPropertiesNodeTest1(), vtkMRMLGridTransformNodeTest1(), vtkMRMLHierarchyNodeTest1(), vtkMRMLInteractionNodeTest1(), vtkMRMLLabelMapVolumeDisplayNodeTest1(), vtkMRMLLayoutNodeTest1(), vtkMRMLLinearTransformNodeTest1(), vtkMRMLMeasurementsAngleNodeTest1(), vtkMRMLMeasurementsNodeTest1(), vtkMRMLMeasurementsRulerNodeTest1(), vtkMRMLModelDisplayNodeTest1(), vtkMRMLModelHierarchyNodeTest1(), vtkMRMLModelNodeTest1(), vtkMRMLNodeTest1(), vtkMRMLNonlinearTransformNodeTest1(), vtkMRMLNRRDStorageNodeTest1(), vtkMRMLOrthogonalLinePlotNodeTest1(), vtkMRMLPETProceduralColorNodeTest1(), vtkMRMLPlotNodeTest1(), vtkMRMLProceduralColorNodeTest1(), vtkMRMLROIListNodeTest1(), vtkMRMLROINodeTest1(), vtkMRMLScalarVolumeDisplayNodeTest1(), vtkMRMLScalarVolumeNodeTest1(), vtkMRMLSceneSnapshotNodeTest1(), vtkMRMLSceneTest1(), vtkMRMLSelectionNodeTest1(), vtkMRMLSliceCompositeNodeTest1(), vtkMRMLSliceNodeTest1(), vtkMRMLSnapshotClipNodeTest1(), vtkMRMLTensorVolumeNodeTest1(), vtkMRMLTimeSeriesVolumeNodeTest1(), vtkMRMLTransformNodeTest1(), vtkMRMLTransformStorageNodeTest1(), vtkMRMLUnstructuredGridDisplayNodeTest1(), vtkMRMLUnstructuredGridNodeTest1(), vtkMRMLUnstructuredGridStorageNodeTest1(), vtkMRMLVectorVolumeDisplayNodeTest1(), vtkMRMLVectorVolumeNodeTest1(), vtkMRMLVolumeArchetypeStorageNodeTest1(), vtkMRMLVolumeDisplayNodeTest1(), vtkMRMLVolumeHeaderlessStorageNodeTest1(), vtkMRMLVolumeNodeTest1(), vtkMRMLVolumePropertyNodeTest1(), vtkMRMLVolumePropertyStorageNodeTest1(), vtkMRMLXYPlotManagerNodeTest1(), vtkSlicerComponentGUITest1(), and vtkSlicerModuleGUITest1().

#define TEST_SET_GET_VECTOR3_DOUBLE ( object,
variable,
x,
y,
 ) 
Value:
{                                                                 \
    object->Set##variable( x, y, z );                               \
    double *val = object->Get##variable();                          \
    if( val == NULL || val[0] != x || val[1] != y || val[2] != z )  \
      {                                                             \
      std::cerr << "Error in Set/Get"#variable << std::endl;        \
      return EXIT_FAILURE;                                          \
      }                                                             \
  }

test a vector variable on the object by setting it to a the values x, y, z passed in using Set, and testing it via the Get

#define TEST_SET_GET_VECTOR3_DOUBLE_RANDOM ( object,
variable,
max   ) 
Value:
{                                                                  \
    double x = vtkMath::Random() * max;                              \
    double y = vtkMath::Random() * max;                              \
    double z = vtkMath::Random() * max;                              \
    object->Set##variable( x, y, z );                                \
    double *val = object->Get##variable();                           \
    if( val == NULL || val[0] != x || val[1] != y || val[2] != z )  \
      {                                                             \
      std::cerr << "Error in Set/Get"#variable << " with " << x << ", " << y << ", " << z << std::endl; \
      return EXIT_FAILURE;                                          \
      }                                                             \
  }

test a vector variable on the object by setting all it's elements to the same random value up to max using Set, and testing it via the Get

#define TEST_SET_GET_VECTOR3_DOUBLE_RANGE ( object,
variable,
min,
max   ) 
Value:
{                                                                     \
    double epsilon = 1.0;                                               \
    TEST_SET_GET_VECTOR3_DOUBLE(object, variable, min - epsilon, min - epsilon, min - epsilon); \
    TEST_SET_GET_VECTOR3_DOUBLE(object, variable, min, min, min);       \
    TEST_SET_GET_VECTOR3_DOUBLE(object, variable, min + epsilon, min + epsilon, min + epsilon); \
    double half = (min+max/2.0);                                        \
    TEST_SET_GET_VECTOR3_DOUBLE(object, variable, half, half, half);    \
    TEST_SET_GET_VECTOR3_DOUBLE(object, variable, max - epsilon, max - epsilon, max - epsilon); \
    TEST_SET_GET_VECTOR3_DOUBLE(object, variable, max, max, max);       \
    TEST_SET_GET_VECTOR3_DOUBLE(object, variable, max + epsilon, max + epsilon, max + epsilon); \
  }

Test a double vector variable on object over the range, calls test set get in with min - epsilon, min, min + epsilon, (min+max)/2, max - epsilon, max, max + epsilon, where first and last test should report errors. For now all three elements are set to the same thing each time. epsilon set to 1.0

#define TRY_EXPECT_ITK_EXCEPTION ( command   ) 
Value:
try \
    {  \
    std::cout << "Trying " << #command << std::endl; \
    command;  \
    std::cerr << "Failed to catch expected exception" << std::endl;  \
    return EXIT_FAILURE;  \
    }  \
  catch( itk::ExceptionObject & excp )  \
    {  \
    std::cout << "Caught expected exception" << std::endl;  \
    std::cout << excp << std::endl; \
    }

try the itk command passed in, succeeding if catch an exception

#define TRY_EXPECT_NO_ITK_EXCEPTION ( command   ) 
Value:
try \
    {  \
    std::cout << "Trying " << #command << std::endl; \
    command;  \
    }  \
  catch( itk::ExceptionObject & excp )  \
    {  \
    std::cerr << excp << std::endl; \
    return EXIT_FAILURE;  \
    }

try the command passed in, succeeding if no exception


Generated on 6 Apr 2011 for Slicer3 by  doxygen 1.6.1