Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkSurfaceVtkMapper2DTest.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 <mitkTestFixture.h>
18 #include <mitkTestingMacros.h>
19 
20 class mitkSurfaceVtkMapper2DTestSuite : public mitk::TestFixture
21 {
22  CPPUNIT_TEST_SUITE(mitkSurfaceVtkMapper2DTestSuite);
23  MITK_TEST(RenderBall);
24  MITK_TEST(RenderOpaqueBall);
25  MITK_TEST(RenderRedBall);
26  MITK_TEST(RenderBallWithGeometry);
27  MITK_TEST(RenderRedBinary);
28  CPPUNIT_TEST_SUITE_END();
29 
30 private:
32  mitk::RenderingTestHelper m_RenderingTestHelper;
33  std::vector<std::string> m_CommandlineArgs;
34  std::string m_PathToBall;
35  std::string m_PathToBinary;
36 
37 public:
43  mitkSurfaceVtkMapper2DTestSuite() : m_RenderingTestHelper(640, 480) {}
48  void setUp()
49  {
50  m_RenderingTestHelper = mitk::RenderingTestHelper(640, 480);
51 
52  m_PathToBall = GetTestDataFilePath("ball.stl");
53  m_PathToBinary = GetTestDataFilePath("binary.stl");
54 
55  // Build a command line for the vtkTesting::Test method.
56  // See VTK documentation and RenderingTestHelper for more information.
57  // Use the following command line option to save the difference image
58  // and the test image in some tmp folder
59  // m_CommandlineArgs.push_back("-T");
60  // m_CommandlineArgs.push_back("/path/to/save/tmp/difference/images/");
61  m_CommandlineArgs.push_back("-V");
62  }
63 
64  void tearDown() {}
65  void RenderBall()
66  {
68  node->SetData(mitk::IOUtil::Load(m_PathToBall)[0]);
69  m_RenderingTestHelper.AddNodeToStorage(node);
70 
71  // reference screenshot for this test
72  m_CommandlineArgs.push_back(GetTestDataFilePath("RenderingTestData/ReferenceScreenshots/ball640x480REF.png"));
73  // Convert vector of strings to argc/argv
74  mitk::RenderingTestHelper::ArgcHelperClass arg(m_CommandlineArgs);
75  CPPUNIT_ASSERT(m_RenderingTestHelper.CompareRenderWindowAgainstReference(arg.GetArgc(), arg.GetArgv()) == true);
76  }
77 
78  void RenderBallWithGeometry()
79  {
81  node->SetData(mitk::IOUtil::Load(m_PathToBall)[0]);
82  // Modify the geometry a little
83  mitk::Vector3D spacing;
84  spacing[0] = 0.5;
85  spacing[1] = 1.5;
86  spacing[2] = 0.75;
87  node->GetData()->GetGeometry()->SetSpacing(spacing);
88  m_RenderingTestHelper.AddNodeToStorage(node);
89 
90  // reference screenshot for this test
91  m_CommandlineArgs.push_back(
92  GetTestDataFilePath("RenderingTestData/ReferenceScreenshots/ballWithGeometry640x480REF.png"));
93  // Convert vector of strings to argc/argv
94  mitk::RenderingTestHelper::ArgcHelperClass arg(m_CommandlineArgs);
95  CPPUNIT_ASSERT(m_RenderingTestHelper.CompareRenderWindowAgainstReference(arg.GetArgc(), arg.GetArgv()) == true);
96  }
97 
98  void RenderOpaqueBall()
99  {
101  node->SetData(mitk::IOUtil::Load(m_PathToBall)[0]);
102  node->SetOpacity(0.5);
103  m_RenderingTestHelper.AddNodeToStorage(node);
104 
105  // reference screenshot for this test
106  m_CommandlineArgs.push_back(
107  GetTestDataFilePath("RenderingTestData/ReferenceScreenshots/ballOpacity640x480REF.png"));
108  // Convert vector of strings to argc/argv
109  mitk::RenderingTestHelper::ArgcHelperClass arg(m_CommandlineArgs);
110  CPPUNIT_ASSERT(m_RenderingTestHelper.CompareRenderWindowAgainstReference(arg.GetArgc(), arg.GetArgv()) == true);
111  }
112 
113  void RenderRedBall()
114  {
116  node->SetData(mitk::IOUtil::Load(m_PathToBall)[0]);
117  node->SetProperty("color", mitk::ColorProperty::New(1.0f, 0.0f, 0.0f));
118  m_RenderingTestHelper.AddNodeToStorage(node);
119 
120  // reference screenshot for this test
121  m_CommandlineArgs.push_back(
122  GetTestDataFilePath("RenderingTestData/ReferenceScreenshots/ballColorRed640x480REF.png"));
123  // Convert vector of strings to argc/argv
124  mitk::RenderingTestHelper::ArgcHelperClass arg(m_CommandlineArgs);
125  CPPUNIT_ASSERT(m_RenderingTestHelper.CompareRenderWindowAgainstReference(arg.GetArgc(), arg.GetArgv()) == true);
126  }
127 
128  void RenderRedBinary()
129  {
131  node->SetData(mitk::IOUtil::Load(m_PathToBinary)[0]);
132  node->SetProperty("color", mitk::ColorProperty::New(1.0f, 0.0f, 0.0f));
133  m_RenderingTestHelper.AddNodeToStorage(node);
134 
135  // reference screenshot for this test
136  m_CommandlineArgs.push_back(
137  GetTestDataFilePath("RenderingTestData/ReferenceScreenshots/binaryColorRed640x480REF.png"));
138  // Convert vector of strings to argc/argv
139  mitk::RenderingTestHelper::ArgcHelperClass arg(m_CommandlineArgs);
140  CPPUNIT_ASSERT(m_RenderingTestHelper.CompareRenderWindowAgainstReference(arg.GetArgc(), arg.GetArgv()) == true);
141  }
142 };
143 MITK_TEST_SUITE_REGISTRATION(mitkSurfaceVtkMapper2D)
MITK_TEST_SUITE_REGISTRATION(mitkImageToItk)
static Pointer New()
#define MITK_TEST(TESTMETHOD)
Adds a test to the current test suite.
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...
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