#include "gtest/gtest.h" #include "RimDockWindowController.h" #include "RimSummaryPlot.h" #include "cafPdmDefaultObjectFactory.h" #include //-------------------------------------------------------------------------------------------------- /// handleViewerDeletion() used to dereference viewPdmObject() (m_viewToControl) unconditionally. /// Calling it before setViewToControl() has ever been called (m_viewToControl is null) must not crash. //-------------------------------------------------------------------------------------------------- TEST( RimDockWindowControllerTest, HandleViewerDeletionWithoutViewToControlDoesNotCrash ) { RimDockWindowController controller; EXPECT_NO_FATAL_FAILURE( controller.handleViewerDeletion() ); } //-------------------------------------------------------------------------------------------------- /// The dock manager identifies dock widgets by the dock window id. Copied views, including plots created from a plot /// template, must get a new id, while reading a project (or undoing a delete) must keep it. //-------------------------------------------------------------------------------------------------- TEST( RimDockWindowControllerTest, DockWindowIdIsNotCopied ) { RimSummaryPlot plot; const QString dockId = plot.dockWindowName(); ASSERT_FALSE( dockId.isEmpty() ); std::unique_ptr copy( plot.copyObject() ); ASSERT_TRUE( copy ); EXPECT_NE( dockId, copy->dockWindowName() ); const QString xml = plot.writeObjectToXmlString(); std::unique_ptr fromTemplate( caf::PdmXmlObjectHandle::readUnknownObjectFromXmlString( xml, caf::PdmDefaultObjectFactory::instance(), true ) ); auto templatePlot = dynamic_cast( fromTemplate.get() ); ASSERT_TRUE( templatePlot ); EXPECT_NE( dockId, templatePlot->dockWindowName() ); std::unique_ptr fromProject( caf::PdmXmlObjectHandle::readUnknownObjectFromXmlString( xml, caf::PdmDefaultObjectFactory::instance(), false ) ); auto projectPlot = dynamic_cast( fromProject.get() ); ASSERT_TRUE( projectPlot ); EXPECT_EQ( dockId, projectPlot->dockWindowName() ); }