Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkImageCastTest.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 "mitkTestFixture.h"
14 #include "mitkTestingMacros.h"
15 
16 #include "mitkImageCast.h"
17 #include "mitkImageToItk.h"
18 
19 class mitkImageCastTestSuite : public mitk::TestFixture
20 {
21  CPPUNIT_TEST_SUITE(mitkImageCastTestSuite);
22  MITK_TEST(Cast_ToMultipleConstItkImages_Succeeds);
23  MITK_TEST(Cast_ToMultipleNonConstItkImages_Fails);
24  CPPUNIT_TEST_SUITE_END();
25 
26 private:
33  mitk::Image::Pointer CreateTestImageFixedValue(const mitk::PixelType &pixelType, unsigned int size)
34  {
36  unsigned int dimensions[] = {size, size, size};
37  mitkImage->Initialize(pixelType, 3, dimensions);
38  return mitkImage;
39  }
40 
41 public:
42  void Cast_ToMultipleConstItkImages_Succeeds()
43  {
44  mitk::PixelType pixelType = mitk::MakeScalarPixelType<short>();
45  mitk::Image::ConstPointer mitkConstImage(CreateTestImageFixedValue(pixelType, 3).GetPointer());
46  CPPUNIT_ASSERT(mitkConstImage.IsNotNull());
47 
48  typedef itk::Image<short, 3> ItkImageType;
49  // This locks the MITK image for reading
50  ItkImageType::ConstPointer itkImage =
51  mitk::ImageToItkImage<ItkImageType::PixelType, ItkImageType::ImageDimension>(mitkConstImage);
52 
53  // Trying to get another const itk::Image should work
54  CPPUNIT_ASSERT((mitk::ImageToItkImage<ItkImageType::PixelType, ItkImageType::ImageDimension>(mitkConstImage)));
55  }
56 
57  void Cast_ToMultipleNonConstItkImages_Fails()
58  {
59  mitk::PixelType pixelType = mitk::MakeScalarPixelType<short>();
60  mitk::Image::Pointer mitkImage = CreateTestImageFixedValue(pixelType, 3);
61  mitk::Image::ConstPointer mitkConstImage(mitkImage.GetPointer());
62  CPPUNIT_ASSERT(mitkImage.IsNotNull());
63 
64  typedef itk::Image<short, 3> ItkImageType;
65  // This locks the MITK image for reading (we use the const image)
66  ItkImageType::ConstPointer itkImage =
67  mitk::ImageToItkImage<ItkImageType::PixelType, ItkImageType::ImageDimension>(mitkConstImage);
68 
69  // Using the non-const MITK image to convert to ITK should fail
70  CPPUNIT_ASSERT_THROW((mitk::ImageToItkImage<ItkImageType::PixelType, ItkImageType::ImageDimension>(mitkImage)),
72  }
73 };
74 
75 MITK_TEST_SUITE_REGISTRATION(mitkImageCast)
MITK_TEST_SUITE_REGISTRATION(mitkImageToItk)
#define MITK_TEST(TESTMETHOD)
Adds a test to the current test suite.
An object of this class represents an exception of MITK. Please don&#39;t instantiate exceptions manually...
Definition: mitkException.h:45
itk::Image< TPixel, VDimension >::Pointer CreateTestImageFixedValue(vcl_size_t size, TPixel value)
Test fixture for parameterized tests.
static Pointer New()
Class for defining the data type of pixels.
Definition: mitkPixelType.h:51