18#include "mitkCommon.h" 
   19#include "mitkTestingMacros.h" 
   21#include "mitkBaseData.h" 
   22#include "mitkDataNode.h" 
   23#include "mitkSurface.h" 
   24#include "mitkStandaloneDataStorage.h" 
   25#include "mitkDataStorage.h" 
   27#include "mitkIGTConfig.h" 
   28#include <mitkIOUtil.h> 
   38static void TestInstantiation()
 
   41  mitk::NavigationToolWriter::Pointer myWriter = mitk::NavigationToolWriter::New();
 
   42  MITK_TEST_CONDITION_REQUIRED(myWriter.IsNotNull(),
"Testing instantiation")
 
   45static void TestWrite()
 
   50  std::string toolFileName(MITK_IGT_DATA_DIR);
 
   51  toolFileName.append(
"/ClaronTool");
 
   52  mitk::NavigationTool::Pointer myNavigationTool = mitk::NavigationTool::New();
 
   53  myNavigationTool->SetCalibrationFile(toolFileName);
 
   55  mitk::DataNode::Pointer myNode = mitk::DataNode::New();
 
   56  myNode->SetName(
"ClaronTool");
 
   58  std::string surfaceFileName(MITK_IGT_DATA_DIR);
 
   59  surfaceFileName.append(
"/ClaronTool.stl");
 
   60  m_testSurface = mitk::IOUtil::Load<mitk::Surface>( surfaceFileName );
 
   63  myNavigationTool->SetDataNode(myNode);
 
   64  myNavigationTool->SetIdentifier(
"ClaronTool#1");
 
   65  myNavigationTool->SetSerialNumber(
"0815");
 
   70  mitk::NavigationToolWriter::Pointer myWriter = mitk::NavigationToolWriter::New();
 
   71  std::string filename = mitk::IOUtil::GetTempPath() + 
"TestTool.tool";
 
   73  MITK_TEST_OUTPUT(<<
"---- Testing navigation tool writer with first test tool (claron tool) ----");
 
   74  bool test = myWriter->DoWrite(filename,myNavigationTool);
 
   75  MITK_TEST_CONDITION_REQUIRED(test,
"OK");
 
   80  mitk::NavigationToolReader::Pointer myReader = mitk::NavigationToolReader::New();
 
   81  std::string filename = mitk::IOUtil::GetTempPath() + 
"TestTool.tool";
 
   82  mitk::NavigationTool::Pointer readTool = myReader->DoRead(filename);
 
   83  MITK_TEST_OUTPUT(<<
"---- Testing navigation tool reader with first test tool (claron tool) ----");
 
   86  MITK_TEST_CONDITION_REQUIRED(
dynamic_cast<mitk::Surface*
>(readTool->GetDataNode()->GetData())->GetSizeOfPolyDataSeries()==
m_testSurface->GetSizeOfPolyDataSeries(),
"Test if surface was restored correctly ...");
 
   92  MITK_TEST_CONDITION_REQUIRED(readTool->GetSerialNumber()==
"0815",
"Testing Serial Number");
 
   94  std::ifstream TestFile(readTool->GetCalibrationFile().c_str());
 
   95  MITK_TEST_CONDITION_REQUIRED(TestFile,
"Testing If Calibration File Exists");
 
   99static void TestWrite2()
 
  103  mitk::NavigationTool::Pointer myNavigationTool = mitk::NavigationTool::New();
 
  105  mitk::DataNode::Pointer myNode = mitk::DataNode::New();
 
  106  myNode->SetName(
"AuroraTool");
 
  108  std::string surfaceFileName(MITK_IGT_DATA_DIR);
 
  109  surfaceFileName.append(
"/EMTool.stl");
 
  110  m_testSurface = mitk::IOUtil::Load<mitk::Surface>( surfaceFileName );
 
  113  myNavigationTool->SetDataNode(myNode);
 
  114  myNavigationTool->SetIdentifier(
"AuroraTool#1");
 
  115  myNavigationTool->SetSerialNumber(
"0816");
 
  120  mitk::NavigationToolWriter::Pointer myWriter = mitk::NavigationToolWriter::New();
 
  121  std::string filename = mitk::IOUtil::GetTempPath() + 
"TestTool2.tool";
 
  123  MITK_TEST_OUTPUT(<<
"---- Testing navigation tool writer with second tool (aurora tool) ----");
 
  124  bool test = myWriter->DoWrite(filename,myNavigationTool);
 
  125  MITK_TEST_CONDITION_REQUIRED(test,
"OK");
 
  128static void TestRead2()
 
  130  mitk::NavigationToolReader::Pointer myReader = mitk::NavigationToolReader::New();
 
  131  std::string filename = mitk::IOUtil::GetTempPath() + 
"TestTool2.tool";
 
  132  mitk::NavigationTool::Pointer readTool = myReader->DoRead(filename);
 
  133  MITK_TEST_OUTPUT(<<
"---- Testing navigation tool reader  with second tool (aurora tool) ----");
 
  136  MITK_TEST_CONDITION_REQUIRED(
dynamic_cast<mitk::Surface*
>(readTool->GetDataNode()->GetData())->GetSizeOfPolyDataSeries()==
m_testSurface->GetSizeOfPolyDataSeries(),
"Test if surface was restored correctly ...");
 
  143  MITK_TEST_CONDITION_REQUIRED(readTool->GetSerialNumber()==
"0816",
"Testing Serial Number");
 
  145  MITK_TEST_CONDITION_REQUIRED(readTool->GetCalibrationFile()==
"none",
"Testing Calibration File");
 
  151  std::string tempFile1 = mitk::IOUtil::GetTempPath() + 
"TestTool.tool";
 
  152  std::remove(tempFile1.c_str());
 
  153  std::string tempFile2 = mitk::IOUtil::GetTempPath() + 
"TestTool2.tool";
 
  154  std::remove(tempFile2.c_str());
 
  157static void TestReadInvalidData()
 
  159  mitk::NavigationToolReader::Pointer myReader = mitk::NavigationToolReader::New();
 
  160  mitk::NavigationTool::Pointer readTool = myReader->DoRead(
"invalidTool");
 
  162  MITK_TEST_CONDITION_REQUIRED(readTool.IsNull(), 
"Testing return value if filename is invalid");
 
  163  MITK_TEST_CONDITION_REQUIRED(myReader->GetErrorMessage() == 
"Cannot open 'invalidTool' for reading", 
"Testing error message in this case");
 
  166static void TestWriteInvalidFilename()
 
  169  mitk::NavigationTool::Pointer myNavigationTool = mitk::NavigationTool::New();
 
  170  mitk::DataNode::Pointer myNode = mitk::DataNode::New();
 
  171  myNode->SetName(
"AuroraTool");
 
  172  std::string surfaceFileName(MITK_IGT_DATA_DIR);
 
  173  surfaceFileName.append(
"/EMTool.stl");
 
  174  m_testSurface = mitk::IOUtil::Load<mitk::Surface>( surfaceFileName );
 
  176  myNavigationTool->SetDataNode(myNode);
 
  177  myNavigationTool->SetIdentifier(
"AuroraTool#1");
 
  178  myNavigationTool->SetSerialNumber(
"0816");
 
  183  mitk::NavigationToolWriter::Pointer myWriter = mitk::NavigationToolWriter::New();
 
  184  std::string filename = 
"NH:/sfdsfsdsf.&%%%";
 
  186  MITK_TEST_OUTPUT(<<
"---- Testing write invalid file ----");
 
  187  bool test = myWriter->DoWrite(filename,myNavigationTool);
 
  188  MITK_TEST_CONDITION_REQUIRED(!test,
"testing write");
 
  189  MITK_TEST_CONDITION_REQUIRED(myWriter->GetErrorMessage() == 
"Could not open a zip file for writing: 'NH:/sfdsfsdsf.&%%%'",
"testing error message");
 
  192static void TestWriteInvalidData()
 
  194  mitk::NavigationTool::Pointer myNavigationTool;
 
  198  mitk::NavigationToolWriter::Pointer myWriter = mitk::NavigationToolWriter::New();
 
  199  std::string filename = 
"NH:/sfdsfsdsf.&%%%";
 
  201  MITK_TEST_OUTPUT(<<
"---- Testing write invalid tool ----");
 
  202  bool test = myWriter->DoWrite(filename,myNavigationTool);
 
  203  MITK_TEST_CONDITION_REQUIRED(!test,
"testing write");
 
  204  MITK_TEST_CONDITION_REQUIRED(myWriter->GetErrorMessage() == 
"Cannot write a navigation tool containing invalid tool data, aborting!",
"testing error message");
 
  212  MITK_TEST_BEGIN(
"NavigationToolWriter")
 
  219  TestReadInvalidData();
 
  220  TestWriteInvalidData();
 
  221  TestWriteInvalidFilename();