00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "mitkDataNode.h"
00019
00020 #include <vtkWindow.h>
00021 #include "mitkVtkPropRenderer.h"
00022
00023 #include "mitkTestingMacros.h"
00024 #include "mitkGlobalInteraction.h"
00025
00026 #include <iostream>
00027
00028
00029 #include <mitkRenderWindowFrame.h>
00030 #include <mitkGeometryData.h>
00031 #include <mitkGeometry2DData.h>
00032 #include <mitkGradientBackground.h>
00033 #include <mitkManufacturerLogo.h>
00034 #include <mitkPointSet.h>
00035 #include <mitkImage.h>
00036 #include <mitkSurface.h>
00037
00038
00039 #include <mitkGeometry2DDataMapper2D.h>
00040 #include <mitkGeometry2DDataMapper2D.h>
00041 #include <mitkImageMapperGL2D.h>
00042 #include <mitkPointSetGLMapper2D.h>
00043 #include <mitkPolyDataGLMapper2D.h>
00044 #include <mitkSurfaceGLMapper2D.h>
00045
00046 #include <mitkGeometry2DDataVtkMapper3D.h>
00047 #include <mitkPointSetVtkMapper3D.h>
00048 #include <mitkSurfaceVtkMapper3D.h>
00049 #include <mitkVolumeDataVtkMapper3D.h>
00050
00051
00052 #include <mitkAffineInteractor.h>
00053 #include <mitkPointSetInteractor.h>
00054
00055
00056
00057
00058
00067 class mitkDataNodeTestClass { public:
00068
00069 static void TestDataSetting(mitk::DataNode::Pointer dataNode)
00070 {
00071
00072 mitk::BaseData::Pointer baseData;
00073
00074
00075 dataNode->SetData(baseData);
00076 MITK_TEST_CONDITION( baseData == dataNode->GetData(), "Testing if a NULL pointer was set correctly" )
00077
00078 baseData = mitk::RenderWindowFrame::New();
00079 dataNode->SetData(baseData);
00080 MITK_TEST_CONDITION( baseData == dataNode->GetData(), "Testing if a RenderWindowFrame object was set correctly" )
00081
00082
00083 baseData = mitk::GeometryData::New();
00084 dataNode->SetData(baseData);
00085 MITK_TEST_CONDITION( baseData == dataNode->GetData(), "Testing if a GeometryData object was set correctly" )
00086
00087 baseData = mitk::Geometry2DData::New();
00088 dataNode->SetData(baseData);
00089 MITK_TEST_CONDITION( baseData == dataNode->GetData(), "Testing if a Geometry2DData object was set correctly" )
00090
00091 baseData = mitk::GradientBackground::New();
00092 dataNode->SetData(baseData);
00093 MITK_TEST_CONDITION( baseData == dataNode->GetData(), "Testing if a GradientBackground object was set correctly" )
00094
00095 baseData = mitk::ManufacturerLogo::New();
00096 dataNode->SetData(baseData);
00097 MITK_TEST_CONDITION( baseData == dataNode->GetData(), "Testing if a ManufacturerLogo object was set correctly" )
00098
00099 baseData = mitk::PointSet::New();
00100 dataNode->SetData(baseData);
00101 MITK_TEST_CONDITION( baseData == dataNode->GetData(), "Testing if a PointSet object was set correctly" )
00102
00103 baseData = mitk::Image::New();
00104 dataNode->SetData(baseData);
00105 MITK_TEST_CONDITION( baseData == dataNode->GetData(), "Testing if a Image object was set correctly" )
00106
00107 baseData = mitk::Surface::New();
00108 dataNode->SetData(baseData);
00109 MITK_TEST_CONDITION( baseData == dataNode->GetData(), "Testing if a Surface object was set correctly" )
00110 }
00111 static void TestMapperSetting(mitk::DataNode::Pointer dataNode)
00112 {
00113
00114
00115
00116
00117 mitk::Mapper::Pointer mapper;
00118
00119 dataNode->SetMapper(0,mapper);
00120 MITK_TEST_CONDITION( mapper == dataNode->GetMapper(0), "Testing if a NULL pointer was set correctly" )
00121
00122 mapper = mitk::Geometry2DDataMapper2D::New();
00123 dataNode->SetMapper(1,mapper);
00124 MITK_TEST_CONDITION( mapper == dataNode->GetMapper(1), "Testing if a Geometry2DDataMapper2D was set correctly" )
00125 MITK_TEST_CONDITION( dataNode == mapper->GetDataNode(), "Testing if the mapper returns the right DataNode" )
00126
00127 mapper = mitk::ImageMapperGL2D::New();
00128 dataNode->SetMapper(1,mapper);
00129 MITK_TEST_CONDITION( mapper == dataNode->GetMapper(1), "Testing if a ImageMapperGL2D was set correctly" )
00130 MITK_TEST_CONDITION( dataNode == mapper->GetDataNode(), "Testing if the mapper returns the right DataNode" )
00131
00132 mapper = mitk::PointSetGLMapper2D::New();
00133 dataNode->SetMapper(1,mapper);
00134 MITK_TEST_CONDITION( mapper == dataNode->GetMapper(1), "Testing if a PointSetGLMapper2D was set correctly" )
00135 MITK_TEST_CONDITION( dataNode == mapper->GetDataNode(), "Testing if the mapper returns the right DataNode" )
00136
00137 dataNode->SetMapper(1,mapper);
00138 MITK_TEST_CONDITION( mapper == dataNode->GetMapper(1), "Testing if a PolyDataGLMapper2D was set correctly" )
00139 MITK_TEST_CONDITION( dataNode == mapper->GetDataNode(), "Testing if the mapper returns the right DataNode" )
00140
00141 mapper = mitk::SurfaceGLMapper2D::New();
00142 dataNode->SetMapper(1,mapper);
00143 MITK_TEST_CONDITION( mapper == dataNode->GetMapper(1), "Testing if a SurfaceGLMapper2D was set correctly" )
00144 MITK_TEST_CONDITION( dataNode == mapper->GetDataNode(), "Testing if the mapper returns the right DataNode" )
00145
00146 mapper = mitk::Geometry2DDataVtkMapper3D::New();
00147 dataNode->SetMapper(1,mapper);
00148 MITK_TEST_CONDITION( mapper == dataNode->GetMapper(1), "Testing if a Geometry2DDataVtkMapper3D was set correctly" )
00149 MITK_TEST_CONDITION( dataNode == mapper->GetDataNode(), "Testing if the mapper returns the right DataNode" )
00150
00151 mapper = mitk::PointSetVtkMapper3D::New();
00152 dataNode->SetMapper(1,mapper);
00153 MITK_TEST_CONDITION( mapper == dataNode->GetMapper(1), "Testing if a PointSetVtkMapper3D was set correctly" )
00154 MITK_TEST_CONDITION( dataNode == mapper->GetDataNode(), "Testing if the mapper returns the right DataNode" )
00155
00156 mapper = mitk::SurfaceVtkMapper3D::New();
00157 dataNode->SetMapper(1,mapper);
00158 MITK_TEST_CONDITION( mapper == dataNode->GetMapper(1), "Testing if a SurfaceVtkMapper3D was set correctly" )
00159 MITK_TEST_CONDITION( dataNode == mapper->GetDataNode(), "Testing if the mapper returns the right DataNode" )
00160
00161 mapper = mitk::VolumeDataVtkMapper3D::New();
00162 dataNode->SetMapper(1,mapper);
00163 MITK_TEST_CONDITION( mapper == dataNode->GetMapper(1), "Testing if a VolumeDataVtkMapper3D was set correctly" )
00164 MITK_TEST_CONDITION( dataNode == mapper->GetDataNode(), "Testing if the mapper returns the right DataNode" )
00165
00166
00167
00168
00169
00170
00171 }
00172 static void TestInteractorSetting(mitk::DataNode::Pointer dataNode)
00173 {
00174
00175
00176
00177
00178 mitk::Interactor::Pointer interactor;
00179
00180 MITK_TEST_CONDITION( interactor == dataNode->GetInteractor(), "Testing if a NULL pointer was set correctly (Interactor)" )
00181
00182 interactor = mitk::AffineInteractor::New("AffineInteractions click to select", dataNode);
00183 dataNode->EnableInteractor();
00184 dataNode->DisableInteractor();
00185 MITK_TEST_CONDITION( interactor == dataNode->GetInteractor(), "Testing if a AffineInteractor was set correctly" )
00186
00187 interactor = mitk::PointSetInteractor::New("AffineInteractions click to select", dataNode);
00188 MITK_TEST_CONDITION( interactor == dataNode->GetInteractor(), "Testing if a PointSetInteractor was set correctly" )
00189 }
00190 static void TestPropertyList(mitk::DataNode::Pointer dataNode)
00191 {
00192
00193 mitk::PropertyList::Pointer propertyList = dataNode->GetPropertyList();
00194
00195
00196 MITK_TEST_CONDITION(dataNode->GetPropertyList() != NULL, "Testing if the constructor set the propertylist" )
00197
00198 dataNode->SetIntProperty("int", -31337);
00199 int x;
00200 dataNode->GetIntProperty("int", x);
00201 MITK_TEST_CONDITION(x == -31337, "Testing Set/GetIntProperty");
00202
00203 dataNode->SetBoolProperty("bool", true);
00204 bool b;
00205 dataNode->GetBoolProperty("bool", b);
00206 MITK_TEST_CONDITION(b == true, "Testing Set/GetBoolProperty");
00207 dataNode->SetFloatProperty("float", -31.337);
00208 float y;
00209 dataNode->GetFloatProperty("float", y);
00210 MITK_TEST_CONDITION(y - -31.337 < 0.01, "Testing Set/GetFloatProperty");
00211 dataNode->SetStringProperty("string", "MITK");
00212 std::string s = "GANZVIELPLATZ";
00213 dataNode->GetStringProperty("string", s);
00214 MITK_TEST_CONDITION(s == "MITK", "Testing Set/GetStringProperty");
00215
00216 std::string name = "MyTestName";
00217 dataNode->SetName(name.c_str());
00218 MITK_TEST_CONDITION(dataNode->GetName() == name, "Testing Set/GetName");
00219 name = "MySecondTestName";
00220 dataNode->SetName(name);
00221 MITK_TEST_CONDITION(dataNode->GetName() == name, "Testing Set/GetName(std::string)");
00222
00223 MITK_TEST_CONDITION(propertyList == dataNode->GetPropertyList(), "Testing if the propertylist has changed during the last tests" )
00224 }
00225
00226 static void TestSelected(mitk::DataNode::Pointer dataNode)
00227 {
00228 vtkRenderWindow *renderWindow = vtkRenderWindow::New();
00229
00230 mitk::VtkPropRenderer::Pointer base = mitk::VtkPropRenderer::New( "the first renderer", renderWindow, mitk::RenderingManager::GetInstance() );
00231
00232
00233 MITK_TEST_CONDITION(!dataNode->IsSelected(), "Testing if this node is not set as selected" )
00234
00235 dataNode->SetSelected(true);
00236 MITK_TEST_CONDITION(dataNode->IsSelected(), "Testing if this node is set as selected" )
00237 dataNode->SetSelected(false);
00238
00239 dataNode->SetSelected(true,base);
00240
00241 MITK_TEST_CONDITION(dataNode->IsSelected(base), "Testing if this node with right base renderer is set as selected" )
00242
00243
00244 renderWindow->Delete();
00245
00246 }
00247 static void TestGetMTime(mitk::DataNode::Pointer dataNode)
00248 {
00249 unsigned long time;
00250 time = dataNode->GetMTime();
00251 mitk::PointSet::Pointer pointSet = mitk::PointSet::New();
00252
00253 dataNode->SetData(pointSet);
00254 MITK_TEST_CONDITION( time != dataNode->GetMTime(), "Testing if the node timestamp is updated after adding data to the node" )
00255
00256 mitk::Point3D point;
00257 point.Fill(3.0);
00258 pointSet->SetPoint(0,point);
00259
00260
00261 MITK_TEST_CONDITION( pointSet->GetMTime() <= dataNode->GetMTime(), "Testing if the node timestamp is updated after base data was modified" )
00262
00263
00264 unsigned long lastModified = dataNode->GetMTime();
00265 dataNode->SetIntProperty("testIntProp", 2344);
00266 MITK_TEST_CONDITION( lastModified <= dataNode->GetMTime(), "Testing if the node timestamp is updated after property list was modified" )
00267
00268 }
00269 };
00270 int mitkDataNodeTest(int , char* [])
00271 {
00272
00273 MITK_TEST_BEGIN("DataNode")
00274
00275
00276 mitk::GlobalInteraction::GetInstance()->Initialize("global");
00277
00278
00279 mitk::DataNode::Pointer myDataNode = mitk::DataNode::New();
00280
00281
00282
00283
00284 MITK_TEST_CONDITION_REQUIRED(myDataNode.IsNotNull(),"Testing instantiation")
00285
00286
00287 mitkDataNodeTestClass::TestDataSetting(myDataNode);
00288 mitkDataNodeTestClass::TestMapperSetting(myDataNode);
00289
00290
00291 mitkDataNodeTestClass::TestInteractorSetting(myDataNode);
00292 mitkDataNodeTestClass::TestPropertyList(myDataNode);
00293 mitkDataNodeTestClass::TestSelected(myDataNode);
00294 mitkDataNodeTestClass::TestGetMTime(myDataNode);
00295
00296
00297
00298
00299
00300 MITK_TEST_END()
00301 }