Files
ResInsight/Fwk/AppFwk/cafUserInterface/cafUserInterface_UnitTests/cafPdmUiTreeViewModelTest.cpp

195 lines
6.1 KiB
C++
Raw Normal View History

#include "gtest/gtest.h"
#include "cafPdmChildArrayField.h"
#include "cafPdmObject.h"
#include "cafPdmUiTreeView.h"
#include <QApplication>
2020-06-19 07:53:59 +02:00
#include <QModelIndex>
using namespace caf;
2020-06-19 07:53:59 +02:00
class SimpleObj : public caf::PdmObject
{
CAF_PDM_HEADER_INIT;
2020-06-19 07:53:59 +02:00
public:
2020-06-19 07:53:59 +02:00
SimpleObj()
: PdmObject()
{
2020-06-19 07:53:59 +02:00
CAF_PDM_InitObject( "SimpleObj", "", "Tooltip SimpleObj", "WhatsThis SimpleObj" );
}
~SimpleObj() {}
};
2020-06-19 07:53:59 +02:00
CAF_PDM_SOURCE_INIT( SimpleObj, "SimpleObj" );
2020-06-19 07:53:59 +02:00
class DemoPdmObject : public caf::PdmObject
{
CAF_PDM_HEADER_INIT;
2020-06-19 07:53:59 +02:00
public:
DemoPdmObject()
{
CAF_PDM_InitObject( "DemoPdmObject", "", "Tooltip DemoPdmObject", "WhatsThis DemoPdmObject" );
2020-06-19 07:53:59 +02:00
CAF_PDM_InitFieldNoDefault( &m_simpleObjPtrField, "SimpleObjPtrField", "SimpleObjPtrField", "", "Tooltip", "WhatsThis" );
}
2020-06-19 07:53:59 +02:00
~DemoPdmObject() { m_simpleObjPtrField.deleteAllChildObjects(); }
caf::PdmChildArrayField<caf::PdmObjectHandle*> m_simpleObjPtrField;
};
2020-06-19 07:53:59 +02:00
CAF_PDM_SOURCE_INIT( DemoPdmObject, "DemoPdmObject" );
//--------------------------------------------------------------------------------------------------
2020-06-19 07:53:59 +02:00
///
//--------------------------------------------------------------------------------------------------
2020-06-19 07:53:59 +02:00
TEST( PdmUiTreeViewModelTest, DeleteOneItemAndVerifyTreeOrdering )
{
SimpleObj* obj1 = new SimpleObj;
SimpleObj* obj2 = new SimpleObj;
SimpleObj* obj3 = new SimpleObj;
SimpleObj* obj4 = new SimpleObj;
DemoPdmObject* demoObj = new DemoPdmObject;
2020-06-19 07:53:59 +02:00
demoObj->m_simpleObjPtrField.push_back( obj1 );
demoObj->m_simpleObjPtrField.push_back( obj2 );
demoObj->m_simpleObjPtrField.push_back( obj3 );
demoObj->m_simpleObjPtrField.push_back( obj4 );
PdmUiTreeView treeView;
2020-06-19 07:53:59 +02:00
treeView.setPdmItem( demoObj );
QModelIndex mi;
2020-06-19 07:53:59 +02:00
mi = treeView.findModelIndex( obj1 );
EXPECT_TRUE( mi.isValid() );
2020-06-19 07:53:59 +02:00
demoObj->m_simpleObjPtrField.removeChildObject( obj1 );
demoObj->m_simpleObjPtrField().uiCapability()->updateConnectedEditors();
2020-06-19 07:53:59 +02:00
mi = treeView.findModelIndex( obj1 );
EXPECT_FALSE( mi.isValid() );
}
//--------------------------------------------------------------------------------------------------
2020-06-19 07:53:59 +02:00
///
//--------------------------------------------------------------------------------------------------
2020-06-19 07:53:59 +02:00
TEST( PdmUiTreeViewModelTest, AddOneItemAndVerifyTreeOrdering )
{
SimpleObj* obj1 = new SimpleObj;
SimpleObj* obj2 = new SimpleObj;
SimpleObj* obj3 = new SimpleObj;
SimpleObj* obj4 = new SimpleObj;
DemoPdmObject* demoObj = new DemoPdmObject;
2020-06-19 07:53:59 +02:00
demoObj->m_simpleObjPtrField.push_back( obj1 );
demoObj->m_simpleObjPtrField.push_back( obj2 );
demoObj->m_simpleObjPtrField.push_back( obj3 );
PdmUiTreeView treeView;
2020-06-19 07:53:59 +02:00
treeView.setPdmItem( demoObj );
QModelIndex mi;
2020-06-19 07:53:59 +02:00
mi = treeView.findModelIndex( obj4 );
EXPECT_FALSE( mi.isValid() );
2020-06-19 07:53:59 +02:00
demoObj->m_simpleObjPtrField.push_back( obj4 );
demoObj->m_simpleObjPtrField().uiCapability()->updateConnectedEditors();
2020-06-19 07:53:59 +02:00
mi = treeView.findModelIndex( obj4 );
EXPECT_TRUE( mi.isValid() );
}
//--------------------------------------------------------------------------------------------------
2020-06-19 07:53:59 +02:00
///
//--------------------------------------------------------------------------------------------------
2020-06-19 07:53:59 +02:00
TEST( PdmUiTreeViewModelTest, ChangeOrderingAndVerifyTreeOrdering )
{
SimpleObj* obj1 = new SimpleObj;
SimpleObj* obj2 = new SimpleObj;
SimpleObj* obj3 = new SimpleObj;
SimpleObj* obj4 = new SimpleObj;
DemoPdmObject* demoObj = new DemoPdmObject;
2020-06-19 07:53:59 +02:00
demoObj->m_simpleObjPtrField.push_back( obj1 );
demoObj->m_simpleObjPtrField.push_back( obj2 );
demoObj->m_simpleObjPtrField.push_back( obj3 );
demoObj->m_simpleObjPtrField.push_back( obj4 );
PdmUiTreeView treeView;
2020-06-19 07:53:59 +02:00
treeView.setPdmItem( demoObj );
QModelIndex mi;
2020-06-19 07:53:59 +02:00
mi = treeView.findModelIndex( obj4 );
EXPECT_EQ( 3, mi.row() );
demoObj->m_simpleObjPtrField.clear();
2020-06-19 07:53:59 +02:00
demoObj->m_simpleObjPtrField.push_back( obj1 );
demoObj->m_simpleObjPtrField.push_back( obj4 );
demoObj->m_simpleObjPtrField.push_back( obj3 );
demoObj->m_simpleObjPtrField.push_back( obj2 );
demoObj->m_simpleObjPtrField().uiCapability()->updateConnectedEditors();
2020-06-19 07:53:59 +02:00
mi = treeView.findModelIndex( obj4 );
EXPECT_EQ( 1, mi.row() );
}
//--------------------------------------------------------------------------------------------------
2020-06-19 07:53:59 +02:00
///
//--------------------------------------------------------------------------------------------------
2020-06-19 07:53:59 +02:00
TEST( PdmUiTreeViewModelTest, ChangeDeepInTreeNotifyRootAndVerifyTreeOrdering )
{
DemoPdmObject* root = new DemoPdmObject;
SimpleObj* rootObj1 = new SimpleObj;
2020-06-19 07:53:59 +02:00
root->m_simpleObjPtrField.push_back( rootObj1 );
DemoPdmObject* demoObj = new DemoPdmObject;
2020-06-19 07:53:59 +02:00
root->m_simpleObjPtrField.push_back( demoObj );
SimpleObj* obj1 = new SimpleObj;
SimpleObj* obj2 = new SimpleObj;
SimpleObj* obj3 = new SimpleObj;
SimpleObj* obj4 = new SimpleObj;
2020-06-19 07:53:59 +02:00
demoObj->m_simpleObjPtrField.push_back( obj1 );
demoObj->m_simpleObjPtrField.push_back( obj2 );
demoObj->m_simpleObjPtrField.push_back( obj3 );
demoObj->m_simpleObjPtrField.push_back( obj4 );
PdmUiTreeView treeView;
2020-06-19 07:53:59 +02:00
treeView.setPdmItem( root );
QModelIndex mi;
2020-06-19 07:53:59 +02:00
mi = treeView.findModelIndex( obj4 );
EXPECT_EQ( 3, mi.row() );
2020-06-19 07:53:59 +02:00
demoObj->m_simpleObjPtrField.removeChildObject( obj4 );
root->m_simpleObjPtrField().uiCapability()->updateConnectedEditors();
2020-06-19 07:53:59 +02:00
mi = treeView.findModelIndex( obj4 );
EXPECT_FALSE( mi.isValid() );
}
//--------------------------------------------------------------------------------------------------
2020-06-19 07:53:59 +02:00
///
//--------------------------------------------------------------------------------------------------
2020-06-19 07:53:59 +02:00
TEST( PdmUiTreeViewModelTest, DISABLED_PerformanceLargeNumberOfItems )
{
2020-06-19 07:53:59 +02:00
// int objCount = 20000;
int objCount = 100000;
DemoPdmObject* demoObj = new DemoPdmObject;
2020-06-19 07:53:59 +02:00
for ( int i = 0; i < objCount; i++ )
{
2020-06-19 07:53:59 +02:00
demoObj->m_simpleObjPtrField.push_back( new SimpleObj );
}
PdmUiTreeView treeView;
2020-06-19 07:53:59 +02:00
treeView.setPdmItem( demoObj );
demoObj->m_simpleObjPtrField().uiCapability()->updateConnectedEditors();
}