diff --git a/Modules/Core/test/CMakeLists.txt b/Modules/Core/test/CMakeLists.txt
index dc8d4ee9b4..7839cb73bd 100644
--- a/Modules/Core/test/CMakeLists.txt
+++ b/Modules/Core/test/CMakeLists.txt
@@ -1,181 +1,177 @@
 # The core tests need relaxed compiler flags...
 # TODO fix core tests to compile without these additional no-error flags
 if(MSVC_VERSION)
   # disable deprecated warnings (they would lead to errors)
   mitkFunctionCheckCAndCXXCompilerFlags("/wd4996" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
 else()
   mitkFunctionCheckCAndCXXCompilerFlags("-Wno-error=deprecated" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
   mitkFunctionCheckCAndCXXCompilerFlags("-Wno-error=deprecated-declarations" CMAKE_C_FLAGS CMAKE_CXX_FLAGS)
 endif()
 
 MITK_CREATE_MODULE_TESTS()
 if(TARGET ${TESTDRIVER})
   mitk_use_modules(TARGET ${TESTDRIVER} PACKAGES ITK|IONRRD VTK|TestingRendering tinyxml2)
 
   mitkAddCustomModuleTest(mitkVolumeCalculatorTest_Png2D-bw mitkVolumeCalculatorTest
                           ${MITK_DATA_DIR}/Png2D-bw.png
                           ${MITK_DATA_DIR}/Pic2DplusT.nrrd
   )
 
 
   mitkAddCustomModuleTest(mitkEventConfigTest_CreateObjectInDifferentWays mitkEventConfigTest
                           ${MITK_SOURCE_DIR}/Modules/Core/test/resource/Interactions/StatemachineConfigTest.xml
   )
 
 
   mitkAddCustomModuleTest(mitkDataStorageTest_US4DCyl mitkDataStorageTest
                           ${MITK_DATA_DIR}/US4DCyl.nrrd
   )
 
 
   mitkAddCustomModuleTest(mitkPointSetReaderTest mitkPointSetReaderTest
                           ${MITK_DATA_DIR}/PointSetReaderTestData.mps
   )
 
   mitkAddCustomModuleTest(mitkImageTest_4DImageData mitkImageTest
                           ${MITK_DATA_DIR}/US4DCyl.nrrd
   )
 
   mitkAddCustomModuleTest(mitkImageTest_2D+tImageData mitkImageTest
                           ${MITK_DATA_DIR}/Pic2DplusT.nrrd
   )
 
   mitkAddCustomModuleTest(mitkImageTest_3DImageData mitkImageTest
                           ${MITK_DATA_DIR}/Pic3D.nrrd
   )
 
   mitkAddCustomModuleTest(mitkImageEqualTest mitkImageEqualTest)
 
   mitkAddCustomModuleTest(mitkImageTest_brainImage mitkImageTest
                           ${MITK_DATA_DIR}/brain.mhd
   )
 
-  mitkAddCustomModuleTest(mitkLevelWindowManagerTest mitkLevelWindowManagerTest
-                          ${MITK_DATA_DIR}/Pic3D.nrrd
-  )
-
   mitkAddCustomModuleTest(mitkMultiComponentImageDataComparisonFilterTest mitkMultiComponentImageDataComparisonFilterTest
                           ${MITK_DATA_DIR}/NrrdWritingTestImage.jpg
   )
 
   mitkAddCustomModuleTest(mitkImageToItkTest mitkImageToItkTest
                           ${MITK_DATA_DIR}/Pic3D.nrrd
   )
 
   mitkAddCustomModuleTest(mitkImageSliceSelectorTest mitkImageSliceSelectorTest
                           ${MITK_DATA_DIR}/Pic2DplusT.nrrd
   )
 
   mitkAddCustomModuleTest(mitkRotatedSlice4DTest mitkRotatedSlice4DTest
                           ${MITK_DATA_DIR}/UltrasoundImages/4D_TEE_Data_MV.dcm
   )
 
   mitkAddCustomModuleRenderingTest(mitkImageVtkMapper2D_rgbaImage640x480 mitkImageVtkMapper2DTest
                           ${MITK_DATA_DIR}/RenderingTestData/rgbaImage.png #input image to load in data storage
                           -V ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/rgbaImage640x480REF.png #corresponding reference screenshot
   )
   mitkAddCustomModuleRenderingTest(mitkImageVtkMapper2D_pic3d640x480 mitkImageVtkMapper2DTest #test for standard Pic3D axial slice
                           ${MITK_DATA_DIR}/Pic3D.nrrd #input image to load in data storage
                           -V ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/pic3d640x480REF.png #corresponding reference screenshot
   )
   mitkAddCustomModuleRenderingTest(mitkImageVtkMapper2D_pic3dColorBlue640x480 mitkImageVtkMapper2DColorTest #test for color property (=blue) Pic3D sagittal slice
                           ${MITK_DATA_DIR}/Pic3D.nrrd #input image to load in data storage
                           -V ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/pic3dColorBlue640x480REF.png #corresponding reference screenshot
   )
   mitkAddCustomModuleRenderingTest(mitkImageVtkMapper2D_pic3dLevelWindow640x480 mitkImageVtkMapper2DLevelWindowTest #test for levelwindow property (=blood) #Pic3D sagittal slice
                           ${MITK_DATA_DIR}/Pic3D.nrrd #input image to load in data storage
                           -V ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/pic3dLevelWindowBlood640x480REF.png #corresponding reference #screenshot
   )
   mitkAddCustomModuleRenderingTest(mitkImageVtkMapper2D_pic3dSwivel640x480 mitkImageVtkMapper2DSwivelTest #test for a randomly chosen Pic3D swivelled slice
                           ${MITK_DATA_DIR}/Pic3D.nrrd #input image to load in data storage
                           -V ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/pic3dSwivel640x480REF.png #corresponding reference screenshot
   )
   mitkAddCustomModuleRenderingTest(mitkPointSetVtkMapper2D_openMeAlone640x480 mitkPointSetVtkMapper2DTest
                           ${MITK_DATA_DIR}/RenderingTestData/openMeAlone.mps #input point set to load in data storage
                           -V ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/openMeAlone640x480REF.png #corresponding reference screenshot
   )
   mitkAddCustomModuleRenderingTest(mitkPointSetVtkMapper2D_Pic3DPointSetForPic3D640x480 mitkPointSetVtkMapper2DImageTest
                           ${MITK_DATA_DIR}/Pic3D.nrrd ${MITK_DATA_DIR}/RenderingTestData/PointSetForPic3D.mps #input point set and image to load in data storage
                           -V ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/Pic3DPointSetForPic3D640x480REF.png #corresponding reference screenshot
   )
   mitkAddCustomModuleRenderingTest(mitkPointSetVtkMapper2D_openMeAloneGlyphType640x480 mitkPointSetVtkMapper2DGlyphTypeTest
                            ${MITK_DATA_DIR}/RenderingTestData/openMeAlone.mps #input point set to load in data storage
                           -V ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/openMeAloneGlyphType640x480REF.png #corresponding reference screenshot
   )
   mitkAddCustomModuleRenderingTest(mitkPointSetVtkMapper2D_openMeAloneTransformed640x480 mitkPointSetVtkMapper2DTransformedPointsTest
                            ${MITK_DATA_DIR}/RenderingTestData/openMeAlone.mps #input point set to load in data storage
                           -V ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/openMeAloneTransformedPoints640x480REF.png #corresponding reference screenshot
   )
   # Currently not working on windows because of a rendering timing issue
   # see bug 18083 for details
   if(NOT WIN32)
     mitkAddCustomModuleRenderingTest(mitkSurfaceDepthSortingTransparency_StanfordBunnySTL640x480 mitkSurfaceDepthSortingTest
                             ${MITK_DATA_DIR}/RenderingTestData/Stanford_bunny.stl
                             -V ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/Stanford_bunnySTLDepthSorting640x480REF.png)
   endif()
 
   # BUG 18695 - tests deactivated, because win 32 bit continuous renders images slightly different. TODO!
   #Test reslice interpolation
   #note: nearest mode is already tested by swivel test
   #mitkAddCustomModuleRenderingTest(ResliceInterpolationIsLinear mitkImageVtkMapper2DResliceInterpolationPropertyTest
   #                        1 #linear
   #                        ${MITK_DATA_DIR}/Pic3D.nrrd
   #                        -V
   #                        ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/pic3dRefLinear.png #corresponding reference screenshot LINEAR
   #)
 
   #mitkAddCustomModuleRenderingTest(ResliceInterpolationIsCubic mitkImageVtkMapper2DResliceInterpolationPropertyTest
   #                        3 #cubic
   #                        ${MITK_DATA_DIR}/Pic3D.nrrd
   #                        -V
   #                        ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/pic3dRefCubic.png #corresponding reference screenshot CUBIC
   #)
   #End test reslice interpolation
 
   # Testing of the rendering of binary images
   #mitkAddCustomModuleRenderingTest(mitkImageVtkMapper2D_binaryTestImage640x480 mitkImageVtkMapper2DTest #test for standard Pic3D axial slice
   #                        ${MITK_DATA_DIR}/RenderingTestData/binaryImage.nrrd #input image to load in data storage
   #                        -V ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/binaryImage640x480REF.png #corresponding reference screenshot
   #)
   #mitkAddCustomModuleRenderingTest(mitkImageVtkMapper2D_binaryTestImageWithRef640x480 mitkImageVtkMapper2DTest #test for standard Pic3D axial slice
   #                        ${MITK_DATA_DIR}/Pic3D.nrrd ${MITK_DATA_DIR}/RenderingTestData/binaryImage.nrrd #input image to load in data storage
   #                        -V ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/binaryImageWithRef640x480REF.png #corresponding reference screenshot
   #)
   # End of binary image tests
 
   mitkAddCustomModuleRenderingTest(mitkSurfaceVtkMapper3DTest_TextureProperty mitkSurfaceVtkMapper3DTest
                           ${MITK_DATA_DIR}/RenderingTestData/earth.jpg
                           -V ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/texturedSphere640x480REF.png #corresponding reference screenshot
   )
 
   mitkAddCustomModuleRenderingTest(mitkImageVtkMapper2DTransferFunctionTest_Png2D-bw mitkImageVtkMapper2DTransferFunctionTest
                           ${MITK_DATA_DIR}/Png2D-bw.png
                           -V ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/Png2D-bw-TransferFunctionRGBImage640x480REF.png #corresponding reference screenshot
   )
 
   mitkAddCustomModuleRenderingTest(mitkImageVtkMapper2DOpacityTransferFunctionTest_Png2D-bw mitkImageVtkMapper2DOpacityTransferFunctionTest
                           ${MITK_DATA_DIR}/Png2D-bw.png
                           -V ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/Png2D-bw-OpacityTransferFunctionRGBImage640x480REF.png #corresponding reference screenshot
   )
 
   ############################## DISABLED TESTS
 
   mitkAddCustomModuleRenderingTest(mitkImageVtkMapper2DLookupTableTest_Png2D-bw mitkImageVtkMapper2DLookupTableTest
                           ${MITK_DATA_DIR}/Png2D-bw.png
                           -V ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/Png2D-bw-LookupTableRGBImage640x480REF.png #corresponding reference screenshot
   )
 
   #mitkAddCustomModuleRenderingTest(mitkImageTest_color2DImage mitkImageTest
   #                        ${MITK_DATA_DIR}/NrrdWritingTestImage.jpg
   #)
 
   #mitkAddCustomModuleRenderingTest(mitkNodeDependentPointSetInteractorTest mitkNodeDependentPointSetInteractorTest
   #                        ${MITK_DATA_DIR}/Pic3D.pic.gz ${MITK_DATA_DIR}/BallBinary30x30x30.pic.gz
   #)
 
   mitkAddCustomModuleRenderingTest(mitkPlaneGeometryDataMapper2DTest mitkPlaneGeometryDataMapper2DTest
                           ${MITK_DATA_DIR}/Pic3D.nrrd #input image to load in data storage
                           -V ${MITK_DATA_DIR}/RenderingTestData/ReferenceScreenshots/PlaneGeometryMapper640x480REF.png #corresponding reference screenshot
   )
 
 endif() # TARGET ${TESTDRIVER}
diff --git a/Modules/Core/test/files.cmake b/Modules/Core/test/files.cmake
index 201b7c43ef..d641b9f2f4 100644
--- a/Modules/Core/test/files.cmake
+++ b/Modules/Core/test/files.cmake
@@ -1,198 +1,197 @@
 # tests with no extra command line parameter
 set(MODULE_TESTS
   # IMPORTANT: If you plan to deactivate / comment out a test please write a bug number to the commented out line of code.
   #
   #     Example: #mitkMyTest #this test is commented out because of bug 12345
   #
   # It is important that the bug is open and that the test will be activated again before the bug is closed. This assures that
   # no test is forgotten after it was commented out. If there is no bug for your current problem, please add a new one and
   # mark it as critical.
 
   ################## DISABLED TESTS #################################################
   #mitkAbstractTransformGeometryTest.cpp #seems as tested class mitkExternAbstractTransformGeometry doesnt exist any more
   #mitkStateMachineContainerTest.cpp #rewrite test, indirect since no longer exported Bug 14529
   #mitkRegistrationBaseTest.cpp #tested class  mitkRegistrationBase doesn't exist any more
   #mitkSegmentationInterpolationTest.cpp #file doesn't exist!
   #mitkPipelineSmartPointerCorrectnessTest.cpp #file doesn't exist!
   #mitkITKThreadingTest.cpp #test outdated because itk::Semaphore was removed from ITK
   #mitkAbstractTransformPlaneGeometryTest.cpp #mitkVtkAbstractTransformPlaneGeometry doesn't exist any more
   #mitkTestUtilSharedLibrary.cpp #Linker problem with this test...
   #mitkTextOverlay2DSymbolsRenderingTest.cpp #Implementation of the tested feature is not finished yet. Ask Christoph or see bug 15104 for details.
 
   ################# RUNNING TESTS ###################################################
   mitkAccessByItkTest.cpp
   mitkCoreObjectFactoryTest.cpp
   mitkDataNodeTest.cpp
   mitkMaterialTest.cpp
   mitkActionTest.cpp
   mitkDispatcherTest.cpp
   mitkEnumerationPropertyTest.cpp
   mitkFileReaderRegistryTest.cpp
   #mitkFileWriterRegistryTest.cpp
   mitkFloatToStringTest.cpp
   mitkGenericPropertyTest.cpp
   mitkGeometry3DTest.cpp
   mitkGeometry3DEqualTest.cpp
   mitkGeometryDataIOTest.cpp
   mitkGeometryDataToSurfaceFilterTest.cpp
   mitkImageCastTest.cpp
   mitkImageDataItemTest.cpp
   mitkImageGeneratorTest.cpp
   mitkIOUtilTest.cpp
   mitkBaseDataTest.cpp
   mitkImportItkImageTest.cpp
   mitkGrabItkImageMemoryTest.cpp
   mitkInstantiateAccessFunctionTest.cpp
   mitkLevelWindowTest.cpp
   mitkMessageTest.cpp
   mitkPixelTypeTest.cpp
   mitkPlaneGeometryTest.cpp
   mitkPointSetTest.cpp
   mitkPointSetEqualTest.cpp
   mitkPointSetFileIOTest.cpp
   mitkPointSetOnEmptyTest.cpp
   mitkPointSetLocaleTest.cpp
   mitkPointSetWriterTest.cpp
   mitkPointSetPointOperationsTest.cpp
   mitkProgressBarTest.cpp
   mitkPropertyTest.cpp
   mitkPropertyListTest.cpp
   mitkPropertyPersistenceTest.cpp
   mitkPropertyPersistenceInfoTest.cpp
   mitkPropertyRelationRuleBaseTest.cpp
   mitkPropertyRelationsTest.cpp
   mitkSlicedGeometry3DTest.cpp
   mitkSliceNavigationControllerTest.cpp
   mitkSurfaceTest.cpp
   mitkSurfaceEqualTest.cpp
   mitkSurfaceToSurfaceFilterTest.cpp
   mitkTimeGeometryTest.cpp
   mitkProportionalTimeGeometryTest.cpp
   mitkUndoControllerTest.cpp
   mitkVtkWidgetRenderingTest.cpp
   mitkVerboseLimitedLinearUndoTest.cpp
   mitkWeakPointerTest.cpp
   mitkTransferFunctionTest.cpp
   mitkStepperTest.cpp
   mitkRenderingManagerTest.cpp
   mitkCompositePixelValueToStringTest.cpp
   vtkMitkThickSlicesFilterTest.cpp
   mitkNodePredicateSourceTest.cpp
   mitkNodePredicateDataPropertyTest.cpp
   mitkNodePredicateFunctionTest.cpp
   mitkVectorTest.cpp
   mitkClippedSurfaceBoundsCalculatorTest.cpp
   mitkExceptionTest.cpp
   mitkExtractSliceFilterTest.cpp
   mitkLogTest.cpp
   mitkImageDimensionConverterTest.cpp
   mitkLoggingAdapterTest.cpp
   mitkUIDGeneratorTest.cpp
   mitkPlanePositionManagerTest.cpp
   mitkAffineTransformBaseTest.cpp
   mitkPropertyAliasesTest.cpp
   mitkPropertyDescriptionsTest.cpp
   mitkPropertyExtensionsTest.cpp
   mitkPropertyFiltersTest.cpp
   mitkPropertyKeyPathTest.cpp
   mitkTinyXMLTest.cpp
   mitkRawImageFileReaderTest.cpp
   mitkInteractionEventTest.cpp
   mitkLookupTableTest.cpp
   mitkSTLFileReaderTest.cpp
   mitkPointTypeConversionTest.cpp
   mitkVectorTypeConversionTest.cpp
   mitkMatrixTypeConversionTest.cpp
   mitkArrayTypeConversionTest.cpp
   mitkSurfaceToImageFilterTest.cpp
   mitkBaseGeometryTest.cpp
   mitkImageToSurfaceFilterTest.cpp
   mitkEqualTest.cpp
   mitkLineTest.cpp
   mitkArbitraryTimeGeometryTest.cpp
   mitkItkImageIOTest.cpp
-  mitkLevelWindowManagerCppUnitTest.cpp
   mitkVectorPropertyTest.cpp
   mitkTemporoSpatialStringPropertyTest.cpp
   mitkPropertyNameHelperTest.cpp
   mitkNodePredicateGeometryTest.cpp
   mitkNodePredicateSubGeometryTest.cpp
   mitkPreferenceListReaderOptionsFunctorTest.cpp
   mitkGenericIDRelationRuleTest.cpp
   mitkSourceImageRelationRuleTest.cpp
   mitkTemporalJoinImagesFilterTest.cpp
 )
 
 set(MODULE_RENDERING_TESTS
   mitkPointSetDataInteractorTest.cpp
   mitkSurfaceVtkMapper2DTest.cpp
   mitkSurfaceVtkMapper2D3DTest.cpp
 )
 
 # test with image filename as an extra command line parameter
 set(MODULE_IMAGE_TESTS
   mitkImageTimeSelectorTest.cpp #only runs on images
   mitkImageAccessorTest.cpp #only runs on images
 )
 
 set(MODULE_SURFACE_TESTS
   mitkSurfaceVtkWriterTest.cpp #only runs on surfaces
 )
 
 # list of images for which the tests are run
 set(MODULE_TESTIMAGE
   US4DCyl.nrrd
   Pic3D.nrrd
   Pic2DplusT.nrrd
   BallBinary30x30x30.nrrd
   Png2D-bw.png
 )
 set(MODULE_TESTSURFACE
   binary.stl
   ball.stl
 )
 
 set(MODULE_CUSTOM_TESTS
     mitkDataStorageTest.cpp
     mitkDataNodeTest.cpp
     mitkEventConfigTest.cpp
     mitkPointSetLocaleTest.cpp
     mitkImageTest.cpp
     mitkImageVtkMapper2DTest.cpp
     mitkImageVtkMapper2DLevelWindowTest.cpp
     mitkImageVtkMapper2DOpacityTest.cpp
     mitkImageVtkMapper2DResliceInterpolationPropertyTest.cpp
     mitkImageVtkMapper2DColorTest.cpp
     mitkImageVtkMapper2DSwivelTest.cpp
     mitkImageVtkMapper2DTransferFunctionTest.cpp
     mitkImageVtkMapper2DOpacityTransferFunctionTest.cpp
     mitkImageVtkMapper2DLookupTableTest.cpp
     mitkSurfaceVtkMapper3DTest.cpp
     mitkVolumeCalculatorTest.cpp
     mitkLevelWindowManagerTest.cpp
     mitkPointSetVtkMapper2DTest.cpp
     mitkPointSetVtkMapper2DImageTest.cpp
     mitkPointSetVtkMapper2DGlyphTypeTest.cpp
     mitkPointSetVtkMapper2DTransformedPointsTest.cpp
     mitkVTKRenderWindowSizeTest.cpp
     mitkMultiComponentImageDataComparisonFilterTest.cpp
     mitkImageToItkTest.cpp
     mitkImageSliceSelectorTest.cpp
     mitkPointSetReaderTest.cpp
     mitkImageEqualTest.cpp
     mitkRotatedSlice4DTest.cpp
     mitkPlaneGeometryDataMapper2DTest.cpp
 )
 
 # Currently not working on windows because of a rendering timing issue
 # see bug 18083 for details
 if(NOT WIN32)
  set(MODULE_CUSTOM_TESTS ${MODULE_CUSTOM_TESTS} mitkSurfaceDepthSortingTest.cpp)
 endif()
 
 set(RESOURCE_FILES
   Interactions/AddAndRemovePoints.xml
   Interactions/globalConfig.xml
   Interactions/StatemachineTest.xml
   Interactions/StatemachineConfigTest.xml
 )
diff --git a/Modules/Core/test/mitkLevelWindowManagerCppUnitTest.cpp b/Modules/Core/test/mitkLevelWindowManagerCppUnitTest.cpp
deleted file mode 100644
index ece270c293..0000000000
--- a/Modules/Core/test/mitkLevelWindowManagerCppUnitTest.cpp
+++ /dev/null
@@ -1,150 +0,0 @@
-/*============================================================================
-
-The Medical Imaging Interaction Toolkit (MITK)
-
-Copyright (c) German Cancer Research Center (DKFZ)
-All rights reserved.
-
-Use of this source code is governed by a 3-clause BSD license that can be
-found in the LICENSE file.
-
-============================================================================*/
-
-#include "mitkTestingMacros.h"
-#include <mitkTestFixture.h>
-
-#include "mitkLevelWindowManager.h"
-#include "mitkStandaloneDataStorage.h"
-#include <itkComposeImageFilter.h>
-#include <itkEventObject.h>
-#include <itkImageDuplicator.h>
-#include <itkImageIterator.h>
-#include <mitkImageCast.h>
-
-class mitkLevelWindowManagerCppUnitTestSuite : public mitk::TestFixture
-{
-  CPPUNIT_TEST_SUITE(mitkLevelWindowManagerCppUnitTestSuite);
-  MITK_TEST(TestMultiComponentRescaling);
-  CPPUNIT_TEST_SUITE_END();
-
-private:
-  mitk::Image::Pointer m_mitkMultiComponentImage;
-  mitk::Image::Pointer m_mitkImageComponent1;
-  mitk::Image::Pointer m_mitkImageComponent2;
-
-public:
-  void setUp() override
-  {
-    typedef itk::Image<double, 3> ImageType;
-    typedef itk::ImageRegionIterator<ImageType> ImageIteratorType;
-    typedef itk::ImageDuplicator<ImageType> DuplicatorType;
-    typedef itk::ComposeImageFilter<ImageType> CompositeFilterType;
-
-    // generate two images with one component
-    ImageType::Pointer imageComponent1 = itk::Image<double, 3>::New();
-    ImageType::IndexType start;
-    start.Fill(0);
-    ImageType::SizeType size;
-    size.Fill(5);
-    ImageType::RegionType region;
-    region.SetSize(size);
-    region.SetIndex(start);
-    imageComponent1->SetRegions(region);
-    imageComponent1->Allocate();
-
-    DuplicatorType::Pointer duplicator = DuplicatorType::New();
-    duplicator->SetInputImage(imageComponent1);
-    duplicator->Update();
-    ImageType::Pointer imageComponent2 = duplicator->GetOutput();
-
-    // give them differing data
-    ImageIteratorType iterator1(imageComponent1, imageComponent1->GetLargestPossibleRegion());
-    iterator1.GoToBegin();
-    int i = 0;
-    while (!iterator1.IsAtEnd())
-    {
-      iterator1.Set((double)i);
-      ++iterator1;
-      ++i;
-    }
-
-    ImageIteratorType iterator2(imageComponent2, imageComponent2->GetLargestPossibleRegion());
-    iterator2.GoToBegin();
-    i = 2000;
-    while (!iterator2.IsAtEnd())
-    {
-      iterator2.Set((double)i);
-      ++iterator2;
-      ++i;
-    }
-
-    // copy into single VectorImage
-    CompositeFilterType::Pointer compositeFilter = CompositeFilterType::New();
-    compositeFilter->SetInput(0, imageComponent1);
-    compositeFilter->SetInput(1, imageComponent2);
-    compositeFilter->Update();
-    itk::VectorImage<double, 3>::Pointer multiComponentImage = compositeFilter->GetOutput();
-
-    // cast images to mitk
-    mitk::CastToMitkImage(multiComponentImage, m_mitkMultiComponentImage);
-    mitk::CastToMitkImage(imageComponent1, m_mitkImageComponent1);
-    mitk::CastToMitkImage(imageComponent2, m_mitkImageComponent2);
-  }
-
-  static mitk::LevelWindow getLevelWindowForImage(mitk::Image *image, unsigned component)
-  {
-    mitk::LevelWindowManager::Pointer manager;
-    manager = mitk::LevelWindowManager::New();
-    mitk::StandaloneDataStorage::Pointer ds = mitk::StandaloneDataStorage::New();
-
-    try
-    {
-      manager->SetDataStorage(ds);
-    }
-    catch (std::exception &e)
-    {
-      MITK_ERROR << "Exception: " << e.what();
-    }
-
-    mitk::DataNode::Pointer node = mitk::DataNode::New();
-    node->SetData(image);
-    ds->Add(node);
-
-    node->SetBoolProperty("selected", true);
-    node->SetIntProperty("Image.Displayed Component", component);
-
-    mitk::LevelWindow levelWindow;
-    node->GetLevelWindow(levelWindow);
-    return levelWindow; // node is an image node because of predicates
-  }
-
-  void TestMultiComponentRescaling()
-  {
-    // compute level windows for the three images
-    mitk::LevelWindow imageComponent1LevelWindow = getLevelWindowForImage(m_mitkImageComponent1, 0);
-    mitk::LevelWindow imageComponent2LevelWindow = getLevelWindowForImage(m_mitkImageComponent2, 0);
-    // calculate level window for second component in multi-component image
-    mitk::LevelWindow multiComponentImageLevelWindow = getLevelWindowForImage(m_mitkMultiComponentImage, 1);
-
-    // compare level window boundaries. the multicomponent image level window
-    // should match the second image, since the second component was selected
-    CPPUNIT_ASSERT_EQUAL_MESSAGE("default lower bounds equal",
-                                 imageComponent2LevelWindow.GetDefaultLowerBound(),
-                                 multiComponentImageLevelWindow.GetDefaultLowerBound());
-
-    CPPUNIT_ASSERT_EQUAL_MESSAGE("default upper bounds equal",
-                                 imageComponent2LevelWindow.GetDefaultUpperBound(),
-                                 multiComponentImageLevelWindow.GetDefaultUpperBound());
-
-    CPPUNIT_ASSERT_EQUAL_MESSAGE(
-      "range equal", imageComponent2LevelWindow.GetRange(), multiComponentImageLevelWindow.GetRange());
-
-    CPPUNIT_ASSERT(imageComponent1LevelWindow.GetDefaultLowerBound() !=
-                   multiComponentImageLevelWindow.GetDefaultLowerBound());
-
-    CPPUNIT_ASSERT(imageComponent1LevelWindow.GetDefaultUpperBound() !=
-                   multiComponentImageLevelWindow.GetDefaultUpperBound());
-  }
-};
-
-MITK_TEST_SUITE_REGISTRATION(mitkLevelWindowManagerCppUnit)
diff --git a/Modules/Core/test/mitkLevelWindowManagerTest.cpp b/Modules/Core/test/mitkLevelWindowManagerTest.cpp
deleted file mode 100644
index 1d7de8c01e..0000000000
--- a/Modules/Core/test/mitkLevelWindowManagerTest.cpp
+++ /dev/null
@@ -1,621 +0,0 @@
-/*============================================================================
-
-The Medical Imaging Interaction Toolkit (MITK)
-
-Copyright (c) German Cancer Research Center (DKFZ)
-All rights reserved.
-
-Use of this source code is governed by a 3-clause BSD license that can be
-found in the LICENSE file.
-
-============================================================================*/
-
-#include "itkMersenneTwisterRandomVariateGenerator.h"
-#include "mitkLevelWindowManager.h"
-#include "mitkRenderingModeProperty.h"
-#include "mitkStandaloneDataStorage.h"
-#include <itkComposeImageFilter.h>
-#include <itkEventObject.h>
-#include <itkImageDuplicator.h>
-#include <itkImageIterator.h>
-#include <itkMersenneTwisterRandomVariateGenerator.h>
-#include <mitkIOUtil.h>
-#include <mitkImageCast.h>
-#include <mitkTestingMacros.h>
-
-class mitkLevelWindowManagerTestClass
-{
-public:
-  static void TestInstantiation()
-  {
-    mitk::LevelWindowManager::Pointer manager;
-    manager = mitk::LevelWindowManager::New();
-    MITK_TEST_CONDITION_REQUIRED(manager.IsNotNull(), "Testing mitk::LevelWindowManager::New()");
-  }
-
-  static void TestSetGetDataStorage()
-  {
-    mitk::LevelWindowManager::Pointer manager;
-    manager = mitk::LevelWindowManager::New();
-    MITK_TEST_OUTPUT(<< "Creating DataStorage: ");
-    mitk::StandaloneDataStorage::Pointer ds = mitk::StandaloneDataStorage::New();
-
-    bool success = true;
-    try
-    {
-      manager->SetDataStorage(ds);
-    }
-    catch (std::exception &e)
-    {
-      success = false;
-      MITK_ERROR << "Exception: " << e.what();
-    }
-    MITK_TEST_CONDITION_REQUIRED(success, "Testing mitk::LevelWindowManager SetDataStorage() ");
-    MITK_TEST_CONDITION_REQUIRED(ds == manager->GetDataStorage(), "Testing mitk::LevelWindowManager GetDataStorage ");
-  }
-
-  static void TestMethodsWithInvalidParameters()
-  {
-    mitk::LevelWindowManager::Pointer manager;
-    manager = mitk::LevelWindowManager::New();
-    mitk::StandaloneDataStorage::Pointer ds = mitk::StandaloneDataStorage::New();
-    manager->SetDataStorage(ds);
-
-    bool success = false;
-    mitk::LevelWindowProperty::Pointer levelWindowProperty = mitk::LevelWindowProperty::New();
-    try
-    {
-      manager->SetLevelWindowProperty(levelWindowProperty);
-    }
-    catch (const mitk::Exception &)
-    {
-      success = true;
-    }
-    MITK_TEST_CONDITION(success, "Testing mitk::LevelWindowManager SetLevelWindowProperty with invalid parameter");
-  }
-
-  static void TestOtherMethods()
-  {
-    mitk::LevelWindowManager::Pointer manager;
-    manager = mitk::LevelWindowManager::New();
-    mitk::StandaloneDataStorage::Pointer ds = mitk::StandaloneDataStorage::New();
-    manager->SetDataStorage(ds);
-
-    MITK_TEST_CONDITION(manager->IsAutoTopMost(), "Testing mitk::LevelWindowManager isAutoTopMost");
-
-    // It is not clear what the following code is supposed to test. The expression in
-    // the catch(...) block does have no effect, so success is always true.
-    // Related bugs are 13894 and 13889
-    /*
-  bool success = true;
-  try
-  {
-    mitk::LevelWindow levelWindow = manager->GetLevelWindow();
-    manager->SetLevelWindow(levelWindow);
-  }
-  catch (...)
-  {
-    success == false;
-  }
-  MITK_TEST_CONDITION(success,"Testing mitk::LevelWindowManager GetLevelWindow() and SetLevelWindow()");
-     */
-
-    manager->SetAutoTopMostImage(true);
-    MITK_TEST_CONDITION(manager->IsAutoTopMost(), "Testing mitk::LevelWindowManager isAutoTopMost()");
-  }
-
-  static void TestRemoveObserver(std::string testImageFile)
-  {
-    mitk::LevelWindowManager::Pointer manager;
-    manager = mitk::LevelWindowManager::New();
-    mitk::StandaloneDataStorage::Pointer ds = mitk::StandaloneDataStorage::New();
-    manager->SetDataStorage(ds);
-
-    // add multiple objects to the data storage => multiple observers should be created
-    mitk::Image::Pointer image1 = mitk::IOUtil::Load<mitk::Image>(testImageFile);
-    mitk::DataNode::Pointer node1 = mitk::DataNode::New();
-    node1->SetData(image1);
-    mitk::Image::Pointer image2 = mitk::IOUtil::Load<mitk::Image>(testImageFile);
-    mitk::DataNode::Pointer node2 = mitk::DataNode::New();
-    node2->SetData(image2);
-    ds->Add(node1);
-    ds->Add(node2);
-
-    MITK_TEST_CONDITION_REQUIRED(manager->GetRelevantNodes()->size() == 2, "Test if nodes have been added");
-    MITK_TEST_CONDITION_REQUIRED(
-      static_cast<int>(manager->GetRelevantNodes()->size()) == manager->GetNumberOfObservers(),
-      "Test if number of nodes is similar to number of observers");
-
-    mitk::Image::Pointer image3 = mitk::IOUtil::Load<mitk::Image>(testImageFile);
-    mitk::DataNode::Pointer node3 = mitk::DataNode::New();
-    node3->SetData(image3);
-    ds->Add(node3);
-    MITK_TEST_CONDITION_REQUIRED(manager->GetRelevantNodes()->size() == 3, "Test if another node have been added");
-    MITK_TEST_CONDITION_REQUIRED(
-      static_cast<int>(manager->GetRelevantNodes()->size()) == manager->GetNumberOfObservers(),
-      "Test if number of nodes is similar to number of observers");
-
-    ds->Remove(node1);
-    MITK_TEST_CONDITION_REQUIRED(manager->GetRelevantNodes()->size() == 2, "Deleted node 1 (test GetRelevantNodes())");
-    MITK_TEST_CONDITION_REQUIRED(manager->GetNumberOfObservers() == 2, "Deleted node 1 (test GetNumberOfObservers())");
-
-    ds->Remove(node2);
-    MITK_TEST_CONDITION_REQUIRED(manager->GetRelevantNodes()->size() == 1, "Deleted node 2 (test GetRelevantNodes())");
-    MITK_TEST_CONDITION_REQUIRED(manager->GetNumberOfObservers() == 1, "Deleted node 2 (test GetNumberOfObservers())");
-
-    ds->Remove(node3);
-    MITK_TEST_CONDITION_REQUIRED(manager->GetRelevantNodes()->size() == 0, "Deleted node 3 (test GetRelevantNodes())");
-    MITK_TEST_CONDITION_REQUIRED(manager->GetNumberOfObservers() == 0, "Deleted node 3 (test GetNumberOfObservers())");
-  }
-
-  static bool VerifyRenderingModes()
-  {
-    bool ok = (mitk::RenderingModeProperty::LOOKUPTABLE_LEVELWINDOW_COLOR == 1) &&
-              (mitk::RenderingModeProperty::COLORTRANSFERFUNCTION_LEVELWINDOW_COLOR == 2) &&
-              (mitk::RenderingModeProperty::LOOKUPTABLE_COLOR == 3) &&
-              (mitk::RenderingModeProperty::COLORTRANSFERFUNCTION_COLOR == 4);
-
-    return ok;
-  }
-
-  static void TestLevelWindowSliderVisibility(std::string testImageFile)
-  {
-    bool renderingModesValid = mitkLevelWindowManagerTestClass::VerifyRenderingModes();
-    if (!renderingModesValid)
-    {
-      MITK_ERROR << "Exception: Image Rendering.Mode property value types inconsistent.";
-    }
-
-    mitk::LevelWindowManager::Pointer manager;
-    manager = mitk::LevelWindowManager::New();
-    mitk::StandaloneDataStorage::Pointer ds = mitk::StandaloneDataStorage::New();
-    manager->SetDataStorage(ds);
-
-    // add multiple objects to the data storage => multiple observers should be created
-    mitk::Image::Pointer image1 = mitk::IOUtil::Load<mitk::Image>(testImageFile);
-    mitk::DataNode::Pointer node1 = mitk::DataNode::New();
-    node1->SetData(image1);
-    ds->Add(node1);
-
-    mitk::DataNode::Pointer node2 = mitk::IOUtil::Load(testImageFile, *ds)->GetElement(0);
-    mitk::DataNode::Pointer node3 = mitk::IOUtil::Load(testImageFile, *ds)->GetElement(0);
-    std::vector<mitk::DataNode::Pointer> nodeVec;
-    // nodeVec.resize( 3 );
-    nodeVec.push_back(node1);
-    nodeVec.push_back(node2);
-    nodeVec.push_back(node3);
-
-    typedef itk::Statistics::MersenneTwisterRandomVariateGenerator RandomGeneratorType;
-    RandomGeneratorType::Pointer rnd = RandomGeneratorType::New();
-    rnd->Initialize();
-
-    for (unsigned int i = 0; i < 8; ++i)
-    {
-      unsigned int parity = i;
-
-      for (unsigned int img = 0; img < 3; ++img)
-      {
-        if (parity & 1)
-        {
-          int mode = rnd->GetIntegerVariate() % 3;
-          nodeVec[img]->SetProperty("Image Rendering.Mode", mitk::RenderingModeProperty::New(mode));
-        }
-        else
-        {
-          int mode = rnd->GetIntegerVariate() % 2;
-          nodeVec[img]->SetProperty("Image Rendering.Mode", mitk::RenderingModeProperty::New(3 + mode));
-        }
-        parity >>= 1;
-      }
-
-      MITK_TEST_CONDITION(
-        renderingModesValid && ((!manager->GetLevelWindowProperty() && !i) || (manager->GetLevelWindowProperty() && i)),
-        "Testing level window property member according to rendering mode");
-    }
-  }
-
-  static void TestSetLevelWindowProperty(std::string testImageFile)
-  {
-    mitk::LevelWindowManager::Pointer manager = mitk::LevelWindowManager::New();
-    mitk::StandaloneDataStorage::Pointer ds = mitk::StandaloneDataStorage::New();
-    manager->SetDataStorage(ds);
-
-    // add multiple objects to the data storage => multiple observers should be created
-    mitk::DataNode::Pointer node3 = mitk::IOUtil::Load(testImageFile, *ds)->GetElement(0);
-    mitk::DataNode::Pointer node2 = mitk::IOUtil::Load(testImageFile, *ds)->GetElement(0);
-    mitk::DataNode::Pointer node1 = mitk::IOUtil::Load(testImageFile, *ds)->GetElement(0);
-
-    node3->SetIntProperty("layer", 1);
-    node2->SetIntProperty("layer", 2);
-    node1->SetIntProperty("layer", 3);
-
-    manager->SetAutoTopMostImage(true);
-
-    bool isImageForLevelWindow1, isImageForLevelWindow2, isImageForLevelWindow3;
-    node1->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow1);
-    node2->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow2);
-    node3->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow3);
-
-    MITK_TEST_CONDITION(isImageForLevelWindow1 && !isImageForLevelWindow2 && !isImageForLevelWindow3,
-                        "Testing exclusive imageForLevelWindow property for node 1.");
-
-    manager->SetAutoTopMostImage(false);
-
-    mitk::LevelWindowProperty::Pointer prop =
-      dynamic_cast<mitk::LevelWindowProperty *>(node2->GetProperty("levelwindow"));
-    manager->SetLevelWindowProperty(prop);
-    node1->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow1);
-    node2->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow2);
-    node3->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow3);
-
-    MITK_TEST_CONDITION(!isImageForLevelWindow1 && isImageForLevelWindow2 && !isImageForLevelWindow3,
-                        "Testing exclusive imageForLevelWindow property for node 2.");
-
-    prop = dynamic_cast<mitk::LevelWindowProperty *>(node3->GetProperty("levelwindow"));
-    manager->SetLevelWindowProperty(prop);
-    node1->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow1);
-    node2->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow2);
-    node3->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow3);
-
-    MITK_TEST_CONDITION(!isImageForLevelWindow1 && !isImageForLevelWindow2 && isImageForLevelWindow3,
-                        "Testing exclusive imageForLevelWindow property for node 3.");
-
-    prop = dynamic_cast<mitk::LevelWindowProperty *>(node1->GetProperty("levelwindow"));
-    manager->SetLevelWindowProperty(prop);
-    node1->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow1);
-    node2->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow2);
-    node3->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow3);
-
-    MITK_TEST_CONDITION(isImageForLevelWindow1 && !isImageForLevelWindow2 && !isImageForLevelWindow3,
-                        "Testing exclusive imageForLevelWindow property for node 3.");
-  }
-
-  static void TestImageForLevelWindowOnVisibilityChange(std::string testImageFile)
-  {
-    mitk::LevelWindowManager::Pointer manager = mitk::LevelWindowManager::New();
-    mitk::StandaloneDataStorage::Pointer ds = mitk::StandaloneDataStorage::New();
-    manager->SetDataStorage(ds);
-
-    // add multiple objects to the data storage => multiple observers should be created
-    mitk::DataNode::Pointer node3 = mitk::IOUtil::Load(testImageFile, *ds)->GetElement(0);
-    mitk::DataNode::Pointer node2 = mitk::IOUtil::Load(testImageFile, *ds)->GetElement(0);
-    mitk::DataNode::Pointer node1 = mitk::IOUtil::Load(testImageFile, *ds)->GetElement(0);
-
-    node3->SetIntProperty("layer", 1);
-    node2->SetIntProperty("layer", 2);
-    node1->SetIntProperty("layer", 3);
-
-    manager->SetAutoTopMostImage(false);
-
-    bool isImageForLevelWindow1, isImageForLevelWindow2, isImageForLevelWindow3;
-    node1->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow1);
-    node2->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow2);
-    node3->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow3);
-
-    MITK_TEST_CONDITION(isImageForLevelWindow1 && !isImageForLevelWindow2 && !isImageForLevelWindow3,
-                        "Testing initial imageForLevelWindow setting.");
-
-    node1->SetVisibility(false);
-    node1->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow1);
-    node2->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow2);
-    node3->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow3);
-
-    MITK_TEST_CONDITION(!isImageForLevelWindow1 && isImageForLevelWindow2 && !isImageForLevelWindow3,
-                        "Testing exclusive imageForLevelWindow property for node 2.");
-
-    node2->SetVisibility(false);
-    node1->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow1);
-    node2->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow2);
-    node3->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow3);
-
-    MITK_TEST_CONDITION(!isImageForLevelWindow1 && !isImageForLevelWindow2 && isImageForLevelWindow3,
-                        "Testing exclusive imageForLevelWindow property for node 3.");
-
-    node3->SetVisibility(false);
-    node1->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow1);
-    node2->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow2);
-    node3->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow3);
-
-    MITK_TEST_CONDITION(!isImageForLevelWindow1 && !isImageForLevelWindow2 && isImageForLevelWindow3,
-                        "Testing exclusive imageForLevelWindow property for node 3.");
-
-    node1->SetVisibility(true);
-    node1->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow1);
-    node2->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow2);
-    node3->GetBoolProperty("imageForLevelWindow", isImageForLevelWindow3);
-
-    MITK_TEST_CONDITION(isImageForLevelWindow1 && !isImageForLevelWindow2 && !isImageForLevelWindow3,
-                        "Testing exclusive imageForLevelWindow property for node 3.");
-  }
-
-  static void TestImageForLevelWindowOnRandomPropertyChange(std::string testImageFile)
-  {
-    typedef std::vector<bool> BoolVecType;
-    typedef itk::Statistics::MersenneTwisterRandomVariateGenerator RandomGeneratorType;
-
-    // initialize the data storage
-    mitk::LevelWindowManager::Pointer manager = mitk::LevelWindowManager::New();
-    mitk::StandaloneDataStorage::Pointer ds = mitk::StandaloneDataStorage::New();
-    manager->SetDataStorage(ds);
-
-    mitk::DataNode::Pointer node3 = mitk::IOUtil::Load(testImageFile, *ds)->GetElement(0);
-    mitk::DataNode::Pointer node2 = mitk::IOUtil::Load(testImageFile, *ds)->GetElement(0);
-    mitk::DataNode::Pointer node1 = mitk::IOUtil::Load(testImageFile, *ds)->GetElement(0);
-
-    node3->SetIntProperty("layer", 1);
-    node2->SetIntProperty("layer", 2);
-    node1->SetIntProperty("layer", 3);
-
-    // node visibilities
-    std::vector<bool> nodesVisible;
-    nodesVisible.resize(3);
-    std::fill(nodesVisible.begin(), nodesVisible.end(), true);
-
-    // which node has the level window
-    std::vector<bool> nodesForLevelWindow;
-    nodesForLevelWindow.resize(3);
-    std::fill(nodesForLevelWindow.begin(), nodesForLevelWindow.end(), false);
-
-    // the nodes themselves
-    std::vector<mitk::DataNode::Pointer> nodes;
-    nodes.push_back(node1);
-    nodes.push_back(node2);
-    nodes.push_back(node3);
-
-    // status quo
-    manager->SetAutoTopMostImage(false);
-
-    bool lvlWin1, lvlWin2, lvlWin3;
-    node1->GetBoolProperty("imageForLevelWindow", lvlWin1);
-    node2->GetBoolProperty("imageForLevelWindow", lvlWin2);
-    node3->GetBoolProperty("imageForLevelWindow", lvlWin3);
-
-    MITK_TEST_CONDITION(lvlWin1 && !lvlWin2 && !lvlWin3, "Testing initial imageForLevelWindow setting.");
-
-    nodesForLevelWindow[0] = lvlWin1;
-    nodesForLevelWindow[1] = lvlWin2;
-    nodesForLevelWindow[2] = lvlWin3;
-
-    // prepare randomized visibility changes
-    RandomGeneratorType::Pointer ranGen = RandomGeneratorType::New();
-    ranGen->Initialize();
-
-    int ranCount = 100;
-    int validCount = 0;
-    int invalidCount = 0;
-    int mustHaveLvlWindow = 4;
-    for (int run = 0; run < ranCount; ++run)
-    {
-      // toggle node visibility
-      int ran = ranGen->GetIntegerVariate(2);
-      nodes[ran]->SetBoolProperty("imageForLevelWindow", !nodesForLevelWindow[ran]);
-
-      // one node must have the level window
-      std::vector<bool>::const_iterator found = std::find(nodesForLevelWindow.begin(), nodesForLevelWindow.end(), true);
-      if (found == nodesForLevelWindow.end())
-      {
-        break;
-      }
-
-      // all invisible?
-      found = std::find(nodesVisible.begin(), nodesVisible.end(), true);
-
-      if (!nodesForLevelWindow[ran])
-      {
-        mustHaveLvlWindow = pow(2, 2 - ran);
-      }
-      else
-      {
-        mustHaveLvlWindow = 4;
-      }
-
-      // get the current status
-      node1->GetBoolProperty("imageForLevelWindow", lvlWin1);
-      node2->GetBoolProperty("imageForLevelWindow", lvlWin2);
-      node3->GetBoolProperty("imageForLevelWindow", lvlWin3);
-      nodesForLevelWindow[0] = lvlWin1;
-      nodesForLevelWindow[1] = lvlWin2;
-      nodesForLevelWindow[2] = lvlWin3;
-
-      int hasLevelWindow = 0;
-      for (int i = 0; i < 3; ++i)
-      {
-        if (nodesForLevelWindow[i])
-        {
-          hasLevelWindow += pow(2, 2 - i);
-        }
-      }
-
-      validCount += hasLevelWindow == mustHaveLvlWindow ? 1 : 0;
-
-      // test sensitivity
-      int falseran = 0;
-      while (falseran == 0)
-      {
-        falseran = ranGen->GetIntegerVariate(7);
-      }
-      BoolVecType falseNodes;
-      falseNodes.push_back((falseran & 1) == 1 ? !lvlWin1 : lvlWin1);
-      falseran >>= 1;
-      falseNodes.push_back((falseran & 1) == 1 ? !lvlWin2 : lvlWin2);
-      falseran >>= 1;
-      falseNodes.push_back((falseran & 1) == 1 ? !lvlWin3 : lvlWin3);
-      int falseLevelWindow = 0;
-      for (int i = 0; i < 3; ++i)
-      {
-        if (falseNodes[i])
-        {
-          falseLevelWindow += pow(2, 2 - i);
-        }
-      }
-
-      invalidCount += falseLevelWindow == mustHaveLvlWindow ? 0 : 1;
-
-      // in case of errors proceed anyway
-      mustHaveLvlWindow = hasLevelWindow;
-    }
-
-    MITK_TEST_CONDITION(validCount == ranCount, "Testing proper node for level window property.");
-    MITK_TEST_CONDITION(invalidCount == ranCount, "Sensitivity test.");
-  }
-
-  static void TestImageForLevelWindowOnRandomVisibilityChange(std::string testImageFile)
-  {
-    typedef std::vector<bool> BoolVecType;
-    typedef itk::Statistics::MersenneTwisterRandomVariateGenerator RandomGeneratorType;
-
-    // initialize the data storage
-    mitk::LevelWindowManager::Pointer manager = mitk::LevelWindowManager::New();
-    mitk::StandaloneDataStorage::Pointer ds = mitk::StandaloneDataStorage::New();
-    manager->SetDataStorage(ds);
-
-    mitk::DataNode::Pointer node3 = mitk::IOUtil::Load(testImageFile, *ds)->GetElement(0);
-    mitk::DataNode::Pointer node2 = mitk::IOUtil::Load(testImageFile, *ds)->GetElement(0);
-    mitk::DataNode::Pointer node1 = mitk::IOUtil::Load(testImageFile, *ds)->GetElement(0);
-
-    node3->SetIntProperty("layer", 1);
-    node2->SetIntProperty("layer", 2);
-    node1->SetIntProperty("layer", 3);
-
-    // node visibilities
-    std::vector<bool> nodesVisible;
-    nodesVisible.resize(3);
-    std::fill(nodesVisible.begin(), nodesVisible.end(), true);
-
-    // which node has the level window
-    std::vector<bool> nodesForLevelWindow;
-    nodesForLevelWindow.resize(3);
-    std::fill(nodesForLevelWindow.begin(), nodesForLevelWindow.end(), false);
-
-    // the nodes themselves
-    std::vector<mitk::DataNode::Pointer> nodes;
-    nodes.push_back(node1);
-    nodes.push_back(node2);
-    nodes.push_back(node3);
-
-    // status quo
-    manager->SetAutoTopMostImage(false);
-
-    bool lvlWin1, lvlWin2, lvlWin3;
-    node1->GetBoolProperty("imageForLevelWindow", lvlWin1);
-    node2->GetBoolProperty("imageForLevelWindow", lvlWin2);
-    node3->GetBoolProperty("imageForLevelWindow", lvlWin3);
-
-    MITK_TEST_CONDITION(lvlWin1 && !lvlWin2 && !lvlWin3, "Testing initial imageForLevelWindow setting.");
-
-    nodesForLevelWindow[0] = lvlWin1;
-    nodesForLevelWindow[1] = lvlWin2;
-    nodesForLevelWindow[2] = lvlWin3;
-
-    // prepare randomized visibility changes
-    RandomGeneratorType::Pointer ranGen = RandomGeneratorType::New();
-    ranGen->Initialize();
-
-    int ranCount = 100;
-    int validCount = 0;
-    int invalidCount = 0;
-    int mustHaveLvlWindow = 4;
-    for (int run = 0; run < ranCount; ++run)
-    {
-      // toggle node visibility
-      int ran = ranGen->GetIntegerVariate(2);
-      nodesVisible[ran] = !nodesVisible[ran];
-      nodes[ran]->SetVisibility(nodesVisible[ran]);
-
-      // one node must have the level window
-      std::vector<bool>::const_iterator found = std::find(nodesForLevelWindow.begin(), nodesForLevelWindow.end(), true);
-      if (found == nodesForLevelWindow.end())
-      {
-        break;
-      }
-      int ind = found - nodesForLevelWindow.begin();
-
-      // all invisible?
-      found = std::find(nodesVisible.begin(), nodesVisible.end(), true);
-      bool allInvisible = (found == nodesVisible.end());
-
-      // which node shall get the level window now
-      if (!allInvisible && !nodesVisible[ind])
-      {
-        int count = 0;
-        for (std::vector<bool>::const_iterator it = nodesVisible.begin(); it != nodesVisible.end(); ++it, ++count)
-        {
-          if (*it)
-          {
-            mustHaveLvlWindow = pow(2, 2 - count);
-            break;
-          }
-        }
-      }
-
-      // get the current status
-      node1->GetBoolProperty("imageForLevelWindow", lvlWin1);
-      node2->GetBoolProperty("imageForLevelWindow", lvlWin2);
-      node3->GetBoolProperty("imageForLevelWindow", lvlWin3);
-      nodesForLevelWindow[0] = lvlWin1;
-      nodesForLevelWindow[1] = lvlWin2;
-      nodesForLevelWindow[2] = lvlWin3;
-
-      int hasLevelWindow = 0;
-      for (int i = 0; i < 3; ++i)
-      {
-        if (nodesForLevelWindow[i])
-        {
-          hasLevelWindow += pow(2, 2 - i);
-        }
-      }
-
-      validCount += hasLevelWindow == mustHaveLvlWindow ? 1 : 0;
-
-      // test sensitivity
-      int falseran = 0;
-      while (falseran == 0)
-      {
-        falseran = ranGen->GetIntegerVariate(7);
-      }
-      BoolVecType falseNodes;
-      falseNodes.push_back((falseran & 1) == 1 ? !lvlWin1 : lvlWin1);
-      falseran >>= 1;
-      falseNodes.push_back((falseran & 1) == 1 ? !lvlWin2 : lvlWin2);
-      falseran >>= 1;
-      falseNodes.push_back((falseran & 1) == 1 ? !lvlWin3 : lvlWin3);
-      int falseLevelWindow = 0;
-      for (int i = 0; i < 3; ++i)
-      {
-        if (falseNodes[i])
-        {
-          falseLevelWindow += pow(2, 2 - i);
-        }
-      }
-
-      invalidCount += falseLevelWindow == mustHaveLvlWindow ? 0 : 1;
-
-      // in case of errors proceed anyway
-      mustHaveLvlWindow = hasLevelWindow;
-    }
-
-    MITK_TEST_CONDITION(validCount == ranCount, "Testing proper node for level window property.");
-    MITK_TEST_CONDITION(invalidCount == ranCount, "Sensitivity test.");
-  }
-};
-
-int mitkLevelWindowManagerTest(int argc, char *args[])
-{
-  MITK_TEST_BEGIN("mitkLevelWindowManager");
-
-  MITK_TEST_CONDITION_REQUIRED(argc >= 2, "Testing if test file is given.");
-  std::string testImage = args[1];
-
-  mitkLevelWindowManagerTestClass::TestInstantiation();
-  mitkLevelWindowManagerTestClass::TestSetGetDataStorage();
-  mitkLevelWindowManagerTestClass::TestMethodsWithInvalidParameters();
-  mitkLevelWindowManagerTestClass::TestOtherMethods();
-  mitkLevelWindowManagerTestClass::TestRemoveObserver(testImage);
-  mitkLevelWindowManagerTestClass::TestLevelWindowSliderVisibility(testImage);
-  mitkLevelWindowManagerTestClass::TestSetLevelWindowProperty(testImage);
-  mitkLevelWindowManagerTestClass::TestImageForLevelWindowOnVisibilityChange(testImage);
-  mitkLevelWindowManagerTestClass::TestImageForLevelWindowOnRandomVisibilityChange(testImage);
-  mitkLevelWindowManagerTestClass::TestImageForLevelWindowOnRandomPropertyChange(testImage);
-
-  MITK_TEST_END();
-}