00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "mitkNavigationDataDisplacementFilter.h"
00019 #include "mitkNavigationData.h"
00020
00021 #include "mitkTestingMacros.h"
00022
00023 #include <iostream>
00024 #include "mitkPropertyList.h"
00025 #include "mitkProperties.h"
00026
00030 int mitkNavigationDataDisplacementFilterTest(int , char* [])
00031 {
00032 MITK_TEST_BEGIN("NavigationDataDisplacementFilter")
00033
00034
00035 mitk::NavigationDataDisplacementFilter::Pointer myFilter = mitk::NavigationDataDisplacementFilter::New();
00036
00037
00038
00039
00040 MITK_TEST_CONDITION_REQUIRED(myFilter.IsNotNull(),"Testing instantiation");
00041
00042
00043 mitk::NavigationData::PositionType initialPos;
00044 mitk::FillVector3D(initialPos, 0.0, 0.0, 0.0);
00045 mitk::NavigationData::OrientationType initialOri(0.0, 0.0, 0.0, 0.0);
00046 mitk::ScalarType initialError(0.0);
00047 bool initialValid(true);
00048
00049 mitk::NavigationData::Pointer nd1 = mitk::NavigationData::New();
00050 nd1->SetPosition(initialPos);
00051 nd1->SetOrientation(initialOri);
00052 nd1->SetPositionAccuracy(initialError);
00053 nd1->SetDataValid(initialValid);
00054
00055 myFilter->SetInput(nd1);
00056 MITK_TEST_CONDITION(myFilter->GetInput() == nd1, "testing Set-/GetInput()");
00057
00058
00059 mitk::Vector3D offset;
00060 mitk::FillVector3D(offset, 1.0, 1.0, 1.0);
00061
00062 myFilter->SetOffset(offset);
00063 MITK_TEST_CONDITION(myFilter->GetOffset() == offset, "testing Set-/GetOffset()");
00064
00065 mitk::NavigationData* output = myFilter->GetOutput();
00066 MITK_TEST_CONDITION_REQUIRED(output != NULL, "Testing GetOutput()");
00067
00068 output->Update();
00069
00070 MITK_TEST_CONDITION(output->GetPosition() == (initialPos + offset), "Testing offset calculation");
00071 MITK_TEST_CONDITION(output->GetOrientation() == initialOri, "Testing if Orientation remains unchanged");
00072 MITK_TEST_CONDITION(output->IsDataValid() == initialValid, "Testing if DataValid remains unchanged");
00073
00074
00075 mitk::NavigationData::PositionType initialPos2;
00076 mitk::FillVector3D(initialPos2, -1000.0, 567.89, 0.0);
00077 mitk::NavigationData::Pointer nd2 = mitk::NavigationData::New();
00078 nd2->SetPosition(initialPos2);
00079 nd2->SetOrientation(initialOri);
00080 nd2->SetPositionAccuracy(initialError);
00081 nd2->SetDataValid(initialValid);
00082
00083 myFilter = NULL;
00084 myFilter = mitk::NavigationDataDisplacementFilter::New();
00085 myFilter->SetOffset(offset);
00086 myFilter->SetInput(0, nd1);
00087 myFilter->SetInput(1, nd2);
00088
00089 MITK_TEST_CONDITION(((myFilter->GetInput(0) == nd1)
00090 && (myFilter->GetInput(1) == nd2)), "testing Set-/GetInput(index, data)");
00091
00092 output = myFilter->GetOutput(0);
00093 mitk::NavigationData* output2 = myFilter->GetOutput(1);
00094 output2->Update();
00095 MITK_TEST_CONDITION(((output != NULL)
00096 && (output2 != NULL)), "testing GetOutput(index)");
00097
00098 MITK_TEST_CONDITION(output->GetPosition() == (initialPos + offset), "Testing offset calculation for output 0");
00099 MITK_TEST_CONDITION(output2->GetPosition() == (initialPos2 + offset), "Testing offset calculation for output 1");
00100
00101 MITK_TEST_CONDITION(output2->GetOrientation() == initialOri, "Testing if Orientation remains unchanged for output 1");
00102 MITK_TEST_CONDITION(output2->IsDataValid() == initialValid, "Testing if DataValid remains unchanged for output 1");
00103
00104
00105 output->Update();
00106 MITK_TEST_CONDITION((output->GetPosition() == (initialPos + offset))
00107 &&(output2->GetPosition() == (initialPos2 + offset)), "Testing offset calculation after second update()");
00108
00109
00110 mitk::NavigationData::PositionType pos2;
00111 mitk::FillVector3D(pos2, 123.456, -234.567, 789.987);
00112 nd1->SetPosition(pos2);
00113 MITK_TEST_CONDITION((output->GetPosition() == (initialPos + offset))
00114 &&(output2->GetPosition() == (initialPos2 + offset)), "Testing offset calculation after input change, before update()");
00115 output->Update();
00116 MITK_TEST_CONDITION((output->GetPosition() == (pos2 + offset))
00117 &&(output2->GetPosition() == (initialPos2 + offset)), "Testing offset calculation after input change, after update()");
00118
00119
00120 mitk::Vector3D offset2;
00121 mitk::FillVector3D(offset2, -1.2, 3.45, -6.789);
00122 myFilter->SetOffset(offset2);
00123 MITK_TEST_CONDITION((output->GetPosition() == (pos2 + offset))
00124 &&(output2->GetPosition() == (initialPos2 + offset)), "Testing offset calculation after offset parameter change, before update()");
00125 output->Update();
00126 MITK_TEST_CONDITION((output->GetPosition() == (pos2 + offset2))
00127 &&(output2->GetPosition() == (initialPos2 + offset2)), "Testing offset calculation after offset parameter , after update()");
00128
00129
00130 mitk::PropertyList::ConstPointer p = myFilter->GetParameters();
00131 MITK_TEST_CONDITION(p.IsNotNull(), "Testing GetParameters() has valid return type");
00132 mitk::Vector3D v;
00133 MITK_TEST_CONDITION(p->GetPropertyValue<mitk::Vector3D>("NavigationDataDisplacementFilter_Offset", v) == true, "PropertyList contains correct key?");
00134 MITK_TEST_CONDITION(v == offset2, "Offset Property contains correct value?");
00135 MITK_TEST_CONDITION(p->GetMap()->size() == 1, "PropertyList contains correct number of items?");
00136
00137 mitk::PropertyList::Pointer p2 = mitk::PropertyList::New();
00138 myFilter->SetParameters(p2);
00139 MITK_TEST_CONDITION(myFilter->GetOffset() == offset2, "Offset unchanged on SetParameters() with empty PropertyList?");
00140 p2->SetProperty("NavigationDataDisplacementFilter_WRONGNAME", mitk::Vector3DProperty::New(v));
00141 MITK_TEST_CONDITION(myFilter->GetOffset() == offset2, "Offset unchanged on SetParameters() with wrong propertyname?");
00142
00143 mitk::FillVector3D(v, -111.1, 0.0, 111.1);
00144 p2->SetProperty("NavigationDataDisplacementFilter_Offset", mitk::Vector3DProperty::New(v));
00145 myFilter->SetParameters(p2);
00146 MITK_TEST_CONDITION(myFilter->GetOffset() == v, "Offset updated correctly by SetParameters()?");
00147
00148 p2 = mitk::PropertyList::New();
00149 mitk::Vector3D v2;
00150 mitk::FillVector3D(v2, 0.0, 111.1, 0.0);
00151 p2->SetProperty("NavigationDataDisplacementFilter_Offset", mitk::Vector3DProperty::New(v2));
00152 myFilter->SetParameters(p2);
00153 MITK_TEST_CONDITION(myFilter->GetOffset() == v2, "Offset updated correctly by SetParameters()?");
00154
00155
00156 v = myFilter->GetOffset();
00157 myFilter->SetParameters(myFilter->GetParameters());
00158 MITK_TEST_CONDITION(myFilter->GetOffset() == v, "Offset unchanged after SetParameters(GetParamters())");
00159
00160
00161 MITK_TEST_END();
00162 }
00163