Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkTemporoSpatialStringPropertyTest.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 
14 #include "mitkTestFixture.h"
15 #include "mitkTestingMacros.h"
16 
17 #include <limits>
18 
19 class mitkTemporoSpatialStringPropertyTestSuite : public mitk::TestFixture
20 {
21  CPPUNIT_TEST_SUITE(mitkTemporoSpatialStringPropertyTestSuite);
22 
23  MITK_TEST(GetValue);
24  MITK_TEST(HasValue);
25  MITK_TEST(SetValue);
26 
29 
30  CPPUNIT_TEST_SUITE_END();
31 
32 private:
33  std::string refJSON;
35 
36 public:
37  void setUp() override
38  {
39  refJSON = "{\"values\":[{\"t\":0, \"z\":0, \"value\":\"v_0_0\"}, {\"t\":3, \"z\":0, \"value\":\"v_3_0\"}, "
40  "{\"t\":3, \"z\":2, \"value\":\"v_3_2\"}, {\"t\":6, \"z\":1, \"value\":\"v_6_1\"}]}";
42  refProp->SetValue(0, 0, "v_0_0");
43  refProp->SetValue(3, 0, "v_3_0");
44  refProp->SetValue(3, 2, "v_3_2");
45  refProp->SetValue(6, 1, "v_6_1");
46  }
47 
48  void tearDown() override {}
49  void GetValue()
50  {
51  CPPUNIT_ASSERT(refProp->GetValue() == "v_0_0");
52 
53  CPPUNIT_ASSERT(refProp->GetValue(3, 0) == "v_3_0");
54  CPPUNIT_ASSERT(refProp->GetValue(3, 2) == "v_3_2");
55  CPPUNIT_ASSERT(refProp->GetValue(3, 1, false, true) == "v_3_0");
56  CPPUNIT_ASSERT(refProp->GetValue(3, 5, false, true) == "v_3_2");
57 
58  CPPUNIT_ASSERT(refProp->GetValueBySlice(0) == "v_0_0");
59  CPPUNIT_ASSERT(refProp->GetValueBySlice(4, true) == "v_0_0");
60 
61  CPPUNIT_ASSERT(refProp->GetValueByTimeStep(3) == "v_3_0");
62  CPPUNIT_ASSERT(refProp->GetValueByTimeStep(6) == "v_6_1");
63  CPPUNIT_ASSERT(refProp->GetValueByTimeStep(5, true) == "v_3_0");
64 
65  CPPUNIT_ASSERT(refProp->GetValueAsString() == "v_0_0");
66 
67  CPPUNIT_ASSERT(refProp->GetAvailableTimeSteps().size() == 3);
68  CPPUNIT_ASSERT(refProp->GetAvailableTimeSteps()[0] == 0);
69  CPPUNIT_ASSERT(refProp->GetAvailableTimeSteps()[1] == 3);
70  CPPUNIT_ASSERT(refProp->GetAvailableTimeSteps()[2] == 6);
71 
72  CPPUNIT_ASSERT(refProp->GetAvailableSlices(0).size() == 1);
73  CPPUNIT_ASSERT(refProp->GetAvailableSlices(0)[0] == 0);
74  CPPUNIT_ASSERT(refProp->GetAvailableSlices(3).size() == 2);
75  CPPUNIT_ASSERT(refProp->GetAvailableSlices(3)[0] == 0);
76  CPPUNIT_ASSERT(refProp->GetAvailableSlices(3)[1] == 2);
77 
78  CPPUNIT_ASSERT(refProp->GetAvailableSlices(2).size() == 0);
79  }
80 
81  void HasValue()
82  {
83  CPPUNIT_ASSERT(refProp->HasValue());
84 
85  CPPUNIT_ASSERT(refProp->HasValue(3, 0));
86  CPPUNIT_ASSERT(refProp->HasValue(3, 2));
87  CPPUNIT_ASSERT(refProp->HasValue(3, 1, false, true));
88  CPPUNIT_ASSERT(refProp->HasValue(3, 5, false, true));
89  CPPUNIT_ASSERT(!refProp->HasValue(3, 1));
90  CPPUNIT_ASSERT(!refProp->HasValue(3, 5));
91  CPPUNIT_ASSERT(refProp->HasValue(4, 2, true, true));
92  CPPUNIT_ASSERT(refProp->HasValue(4, 2, true, false));
93  CPPUNIT_ASSERT(!refProp->HasValue(4, 2, false, true));
94 
95  CPPUNIT_ASSERT(refProp->HasValueBySlice(0));
96  CPPUNIT_ASSERT(refProp->HasValueBySlice(4, true));
97  CPPUNIT_ASSERT(!refProp->HasValueBySlice(4));
98 
99  CPPUNIT_ASSERT(refProp->HasValueByTimeStep(3));
100  CPPUNIT_ASSERT(refProp->HasValueByTimeStep(6));
101  CPPUNIT_ASSERT(refProp->HasValueByTimeStep(5, true));
102  CPPUNIT_ASSERT(!refProp->HasValueByTimeStep(5));
103  }
104 
105  void SetValue()
106  {
107  CPPUNIT_ASSERT_NO_THROW(refProp->SetValue(8, 9, "v_8_9"));
108  CPPUNIT_ASSERT(refProp->GetValue(8, 9) == "v_8_9");
109 
110  CPPUNIT_ASSERT_NO_THROW(refProp->SetValue("newValue"));
111  CPPUNIT_ASSERT(refProp->GetValue(0, 0) == "newValue");
112  CPPUNIT_ASSERT(refProp->GetAvailableTimeSteps().size() == 1);
113  CPPUNIT_ASSERT(refProp->GetAvailableSlices(0).size() == 1);
114  }
115 
117  {
119  CPPUNIT_ASSERT(refJSON ==
120  data); //"Testing serializeTemporoSpatialStringPropertyToJSON() producing correct string.");
121  }
122 
124  {
127 
128  auto *tsProp = dynamic_cast<mitk::TemporoSpatialStringProperty *>(prop.GetPointer());
129 
130  CPPUNIT_ASSERT(
131  tsProp->GetValue(0, 0) ==
132  "v_0_0"); //"Testing deserializeJSONToTemporoSpatialStringProperty() producing property with correct value 1");
133  CPPUNIT_ASSERT(
134  tsProp->GetValue(3, 0) ==
135  "v_3_0"); //"Testing deserializeJSONToTemporoSpatialStringProperty() producing property with correct value 2");
136  CPPUNIT_ASSERT(
137  tsProp->GetValue(3, 2) ==
138  "v_3_2"); //"Testing deserializeJSONToTemporoSpatialStringProperty() producing property with correct value 3");
139  CPPUNIT_ASSERT(
140  tsProp->GetValue(6, 1) ==
141  "v_6_1"); //"Testing deserializeJSONToTemporoSpatialStringProperty() producing property with correct value 4");
142  CPPUNIT_ASSERT(*tsProp == *refProp); //"Testing deserializeJSONToTemporoSpatialStringProperty()");
143  }
144 };
145 
146 MITK_TEST_SUITE_REGISTRATION(mitkTemporoSpatialStringProperty)
MITK_TEST_SUITE_REGISTRATION(mitkImageToItk)
MITKCORE_EXPORT::std::string serializeTemporoSpatialStringPropertyToJSON(const mitk::BaseProperty *prop)
#define MITK_TEST(TESTMETHOD)
Adds a test to the current test suite.
Test fixture for parameterized tests.
MITKCORE_EXPORT mitk::BaseProperty::Pointer deserializeJSONToTemporoSpatialStringProperty(const std::string &value)
Property for time and space resolved string values.