Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkPlanarArrowTest.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 #include "mitkPlanarArrow.h"
14 #include "mitkPlaneGeometry.h"
15 #include "mitkTestingMacros.h"
16 
17 class mitkPlanarArrowTestClass
18 {
19 public:
20  static void TestPlanarArrowPlacement(mitk::PlanarArrow::Pointer PlanarArrow)
21  {
22  // Test for correct minimum number of control points in cross-mode
23  MITK_TEST_CONDITION(PlanarArrow->GetMinimumNumberOfControlPoints() == 2, "Minimum number of control points");
24 
25  // Test for correct maximum number of control points in cross-mode
26  MITK_TEST_CONDITION(PlanarArrow->GetMaximumNumberOfControlPoints() == 2, "Maximum number of control points");
27 
28  // Initial placement of PlanarArrow
29  mitk::Point2D p0;
30  p0[0] = 00.0;
31  p0[1] = 0.0;
32  PlanarArrow->PlaceFigure(p0);
33 
34  // Add second control point
35  mitk::Point2D p1;
36  p1[0] = 50.0;
37  p1[1] = 00.0;
38  PlanarArrow->SetControlPoint(1, p1);
39 
40  // Test for number of control points
41  MITK_TEST_CONDITION(PlanarArrow->GetNumberOfControlPoints() == 2, "Number of control points after placement");
42 
43  // Test for number of polylines
44  const mitk::PlanarFigure::PolyLineType polyLine0 = PlanarArrow->GetPolyLine(0);
45  auto iter = polyLine0.begin();
46  MITK_TEST_CONDITION(PlanarArrow->GetPolyLinesSize() == 1, "Number of polylines after placement");
47 
48  // Get polylines and check if the generated coordinates are OK
49  const mitk::Point2D &pp0 = *iter;
50  iter++;
51  const mitk::Point2D &pp1 = *iter;
52  MITK_TEST_CONDITION((pp0 == p0) && (pp1 == p1), "Correct polyline 1");
53 
54  // Test for number of measurement features
55  // none yet
56  }
57 };
64 int mitkPlanarArrowTest(int /* argc */, char * /*argv*/ [])
65 {
66  // always start with this!
67  MITK_TEST_BEGIN("PlanarArrow")
68 
69  // create PlaneGeometry on which to place the PlanarArrow
71  planeGeometry->InitializeStandardPlane(100.0, 100.0);
72 
73  // **************************************************************************
74  // 1. Instantiation and basic tests
76  PlanarArrow->SetPlaneGeometry(planeGeometry);
77 
78  // first test: did this work?
79  MITK_TEST_CONDITION_REQUIRED(PlanarArrow.IsNotNull(), "Testing instantiation");
80 
81  // Test placement of PlanarArrow by control points
82  mitkPlanarArrowTestClass::TestPlanarArrowPlacement(PlanarArrow);
83  PlanarArrow->EvaluateFeatures();
84 
85  mitk::PlanarArrow::Pointer clonedArrow = PlanarArrow->Clone();
86  MITK_TEST_CONDITION_REQUIRED(clonedArrow.IsNotNull(), "Testing cloning");
87  bool identical(true);
88  identical &= clonedArrow->GetMinimumNumberOfControlPoints() == PlanarArrow->GetMinimumNumberOfControlPoints();
89  identical &= clonedArrow->GetMaximumNumberOfControlPoints() == PlanarArrow->GetMaximumNumberOfControlPoints();
90  identical &= clonedArrow->IsClosed() == PlanarArrow->IsClosed();
91  identical &= clonedArrow->IsPlaced() == PlanarArrow->IsPlaced();
92  identical &= clonedArrow->GetNumberOfControlPoints() == PlanarArrow->GetNumberOfControlPoints();
93  identical &= clonedArrow->GetNumberOfControlPoints() == PlanarArrow->GetNumberOfControlPoints();
94  identical &= clonedArrow->GetSelectedControlPoint() == PlanarArrow->GetSelectedControlPoint();
95  identical &= clonedArrow->IsPreviewControlPointVisible() == PlanarArrow->IsPreviewControlPointVisible();
96  identical &= clonedArrow->GetPolyLinesSize() == PlanarArrow->GetPolyLinesSize();
97  identical &= clonedArrow->GetHelperPolyLinesSize() == PlanarArrow->GetHelperPolyLinesSize();
98  identical &= clonedArrow->ResetOnPointSelect() == PlanarArrow->ResetOnPointSelect();
99 
100  for (unsigned int i = 0; i < clonedArrow->GetNumberOfControlPoints(); ++i)
101  {
102  identical &= clonedArrow->GetControlPoint(i) == PlanarArrow->GetControlPoint(i);
103  }
104 
105  for (unsigned int i = 0; i < clonedArrow->GetPolyLinesSize(); ++i)
106  {
107  mitk::PlanarFigure::PolyLineType polyLine = clonedArrow->GetPolyLine(i);
108  for (unsigned int j = 0; j < polyLine.size(); ++j)
109  {
110  identical &= polyLine.at(j) == PlanarArrow->GetPolyLine(i).at(j);
111  }
112  }
113 
114  MITK_TEST_CONDITION_REQUIRED(identical, "Cloning completely successful");
115 
116  // always end with this!
117  MITK_TEST_END();
118 }
static Pointer New()
#define MITK_TEST_CONDITION_REQUIRED(COND, MSG)
section GeneralTestsDeprecatedOldTestingStyle Deprecated macros All tests with MITK_TEST_BEGIN()
#define MITK_TEST_CONDITION(COND, MSG)
static Pointer New()
std::vector< PolyLineElement > PolyLineType
and MITK_TEST_END()
int mitkPlanarArrowTest(int, char *[])