Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkSplineVtkMapper3DTest.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 // MITK
14 #include <mitkIOUtil.h>
17 #include <mitkSplineVtkMapper3D.h>
18 #include <mitkTestFixture.h>
19 #include <mitkTestingMacros.h>
20 
21 #include <vtkDebugLeaks.h>
22 
23 class mitkSplineVtkMapper3DTestSuite : public mitk::TestFixture
24 {
25  CPPUNIT_TEST_SUITE(mitkSplineVtkMapper3DTestSuite);
26 
28  vtkDebugLeaks::SetExitError(0);
29 
30  MITK_TEST(RenderSpline);
31  MITK_TEST(RenderBlueSpline);
32  MITK_TEST(RenderThickSpline);
33  // MITK_TEST(RenderThickTranslucentSpline);
34  MITK_TEST(RenderLowResolutionSpline);
35  CPPUNIT_TEST_SUITE_END();
36 
37 private:
39  mitk::RenderingTestHelper m_RenderingTestHelper;
40  std::vector<std::string> m_CommandlineArgs;
41  std::string m_PathToPointSet;
42 
43 public:
49  mitkSplineVtkMapper3DTestSuite() : m_RenderingTestHelper(640, 480) {}
54  void setUp()
55  {
56  m_RenderingTestHelper = mitk::RenderingTestHelper(640, 480);
57 
58  // disables anti-aliasing which is enabled on several graphics cards and
59  // causes problems when doing a pixel-wise comparison to a reference image
60  m_RenderingTestHelper.GetVtkRenderWindow()->SetMultiSamples(0);
61 
62  m_PathToPointSet =
63  GetTestDataFilePath("InteractionTestData/ReferenceData/PointSetDataInteractor_PointsAdd2d3d.mps");
64 
65  // Build a command line for the vtkTesting::Test method.
66  // See VTK documentation and RenderingTestHelper for more information.
67  // Use the following command line option to save the difference image
68  // and the test image in some tmp folder
69  // m_CommandlineArgs.push_back("-T");
70  // m_CommandlineArgs.push_back("/path/to/save/tmp/difference/images/");
71  m_CommandlineArgs.push_back("-V");
72  }
73 
74  void tearDown() {}
75  void RenderSpline()
76  {
78  node->SetData(mitk::IOUtil::Load(m_PathToPointSet)[0]);
79 
81  node->SetMapper(mitk::BaseRenderer::StandardMapperSlot::Standard3D, mapper);
82 
83  m_RenderingTestHelper.AddNodeToStorage(node);
84  m_RenderingTestHelper.SetMapperIDToRender3D();
85 
86  // reference screenshot for this test
87  m_CommandlineArgs.push_back(GetTestDataFilePath("RenderingTestData/ReferenceScreenshots/spline_linewidth_1.png"));
88  // Convert vector of strings to argc/argv
89  mitk::RenderingTestHelper::ArgcHelperClass arg(m_CommandlineArgs);
90  CPPUNIT_ASSERT(m_RenderingTestHelper.CompareRenderWindowAgainstReference(arg.GetArgc(), arg.GetArgv()) == true);
91  }
92 
93  void RenderBlueSpline()
94  {
96  node->SetData(mitk::IOUtil::Load(m_PathToPointSet)[0]);
97  node->SetProperty("color", mitk::ColorProperty::New(0.0f, 0.0f, 1.0f));
98 
100  node->SetMapper(mitk::BaseRenderer::StandardMapperSlot::Standard3D, mapper);
101 
102  m_RenderingTestHelper.AddNodeToStorage(node);
103  m_RenderingTestHelper.SetMapperIDToRender3D();
104  // reference screenshot for this test
105  m_CommandlineArgs.push_back(
106  GetTestDataFilePath("RenderingTestData/ReferenceScreenshots/spline_blue_linewidth_1.png"));
107  // Convert vector of strings to argc/argv
108  mitk::RenderingTestHelper::ArgcHelperClass arg(m_CommandlineArgs);
109  CPPUNIT_ASSERT(m_RenderingTestHelper.CompareRenderWindowAgainstReference(arg.GetArgc(), arg.GetArgv()) == true);
110  }
111 
112  void RenderThickSpline()
113  {
115  node->SetData(mitk::IOUtil::Load(m_PathToPointSet)[0]);
116 
117  node->SetProperty("line width", mitk::IntProperty::New(8));
118 
120  node->SetMapper(mitk::BaseRenderer::StandardMapperSlot::Standard3D, mapper);
121 
122  m_RenderingTestHelper.AddNodeToStorage(node);
123  m_RenderingTestHelper.SetMapperIDToRender3D();
124  // reference screenshot for this test
125  m_CommandlineArgs.push_back(GetTestDataFilePath("RenderingTestData/ReferenceScreenshots/spline_linewidth_8.png"));
126  // Convert vector of strings to argc/argv
127  mitk::RenderingTestHelper::ArgcHelperClass arg(m_CommandlineArgs);
128  CPPUNIT_ASSERT(m_RenderingTestHelper.CompareRenderWindowAgainstReference(arg.GetArgc(), arg.GetArgv()) == true);
129  }
130 
131  // Currently, rending of objects with opacity < 1.0 fails on the dashboard
132  // see bug 19575
133  // void RenderThickTranslucentSpline()
134  //{
135  // mitk::DataNode::Pointer node = mitk::DataNode::New();
136  // node->SetData(mitk::IOUtil::Load(m_PathToPointSet)[0]);
137  // node->SetOpacity(0.5f);
138 
139  // node->SetProperty("line width", mitk::IntProperty::New(8));
140 
141  // mitk::SplineVtkMapper3D::Pointer mapper = mitk::SplineVtkMapper3D::New();
142  // node->SetMapper(mitk::BaseRenderer::StandardMapperSlot::Standard3D, mapper);
143 
144  // m_RenderingTestHelper.AddNodeToStorage(node);
145  // m_RenderingTestHelper.SetMapperIDToRender3D();
146  // //reference screenshot for this test
147  // m_CommandlineArgs.push_back(GetTestDataFilePath("RenderingTestData/ReferenceScreenshots/spline_translucent_linewidth_8.png"));
148  // //Convert vector of strings to argc/argv
149  // mitk::RenderingTestHelper::ArgcHelperClass arg(m_CommandlineArgs);
150  // CPPUNIT_ASSERT(m_RenderingTestHelper.CompareRenderWindowAgainstReference(arg.GetArgc(), arg.GetArgv()) == true);
151  //}
152 
153  void RenderLowResolutionSpline()
154  {
156  node->SetData(mitk::IOUtil::Load(m_PathToPointSet)[0]);
157 
159  node->SetMapper(mitk::BaseRenderer::StandardMapperSlot::Standard3D, mapper);
160 
161  mapper->SetSplineResolution(50);
162 
163  m_RenderingTestHelper.AddNodeToStorage(node);
164  m_RenderingTestHelper.SetMapperIDToRender3D();
165  // reference screenshot for this test
166  m_CommandlineArgs.push_back(
167  GetTestDataFilePath("RenderingTestData/ReferenceScreenshots/spline_lowRes_linewidth_1.png"));
168  // Convert vector of strings to argc/argv
169  mitk::RenderingTestHelper::ArgcHelperClass arg(m_CommandlineArgs);
170  CPPUNIT_ASSERT(m_RenderingTestHelper.CompareRenderWindowAgainstReference(arg.GetArgc(), arg.GetArgv()) == true);
171  }
172 };
173 MITK_TEST_SUITE_REGISTRATION(mitkSplineVtkMapper3D)
static Pointer New()
MITK_TEST_SUITE_REGISTRATION(mitkImageToItk)
vtkRenderWindow * GetVtkRenderWindow()
Getter for the vtkRenderWindow which should be used to call vtkRegressionTestImage.
static Pointer New()
#define MITK_TEST(TESTMETHOD)
Adds a test to the current test suite.
void SetMapperIDToRender3D()
SetMapperIDToRender3D Convenience method to render in a 3D renderwindow.
static std::string GetTestDataFilePath(const std::string &testData)
Get the absolute path for test data.
bool CompareRenderWindowAgainstReference(int argc, char *argv[], double threshold=10.0)
CompareRenderWindowAgainstReference Convenience method to compare the image rendered in the internal ...
static Pointer New()
Test fixture for parameterized tests.
The ArgcHelperClass class is a convinience class to convert a vector of strings to the standard c++ a...
static Pointer New()
void AddNodeToStorage(mitk::DataNode::Pointer node)
AddNodeToStorage Add a node to the datastorage and perform a reinit which is necessary for rendering...
static DataStorage::SetOfObjects::Pointer Load(const std::string &path, DataStorage &storage, const ReaderOptionsFunctorBase *optionsCallback=nullptr)
Load a file into the given DataStorage.
Definition: mitkIOUtil.cpp:489