mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
205 lines
6.0 KiB
C++
205 lines
6.0 KiB
C++
|
|
|
||
|
|
#include "gtest/gtest.h"
|
||
|
|
|
||
|
|
#include "cafPdmChildArrayField.h"
|
||
|
|
#include "cafPdmObject.h"
|
||
|
|
#include "cafPdmUiTreeView.h"
|
||
|
|
|
||
|
|
#include <QModelIndex>
|
||
|
|
#include <QApplication>
|
||
|
|
|
||
|
|
using namespace caf;
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
class SimpleObj: public caf::PdmObject
|
||
|
|
{
|
||
|
|
CAF_PDM_HEADER_INIT;
|
||
|
|
public:
|
||
|
|
SimpleObj() : PdmObject()
|
||
|
|
{
|
||
|
|
CAF_PDM_InitObject("SimpleObj", "", "Tooltip SimpleObj", "WhatsThis SimpleObj");
|
||
|
|
|
||
|
|
}
|
||
|
|
~SimpleObj() {}
|
||
|
|
|
||
|
|
};
|
||
|
|
CAF_PDM_SOURCE_INIT(SimpleObj, "SimpleObj");
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
class DemoPdmObject: public caf::PdmObject
|
||
|
|
{
|
||
|
|
CAF_PDM_HEADER_INIT;
|
||
|
|
public:
|
||
|
|
|
||
|
|
DemoPdmObject()
|
||
|
|
{
|
||
|
|
CAF_PDM_InitObject("DemoPdmObject", "", "Tooltip DemoPdmObject", "WhatsThis DemoPdmObject");
|
||
|
|
|
||
|
|
CAF_PDM_InitFieldNoDefault(&m_simpleObjPtrField, "SimpleObjPtrField", "SimpleObjPtrField", "", "Tooltip", "WhatsThis");
|
||
|
|
}
|
||
|
|
|
||
|
|
~DemoPdmObject()
|
||
|
|
{
|
||
|
|
m_simpleObjPtrField.deleteAllChildObjects();
|
||
|
|
}
|
||
|
|
|
||
|
|
caf::PdmChildArrayField<caf::PdmObjectHandle*> m_simpleObjPtrField;
|
||
|
|
};
|
||
|
|
|
||
|
|
CAF_PDM_SOURCE_INIT(DemoPdmObject, "DemoPdmObject");
|
||
|
|
|
||
|
|
|
||
|
|
//--------------------------------------------------------------------------------------------------
|
||
|
|
///
|
||
|
|
//--------------------------------------------------------------------------------------------------
|
||
|
|
TEST(PdmUiTreeViewModelTest, DeleteOneItemAndVerifyTreeOrdering)
|
||
|
|
{
|
||
|
|
SimpleObj* obj1 = new SimpleObj;
|
||
|
|
SimpleObj* obj2 = new SimpleObj;
|
||
|
|
SimpleObj* obj3 = new SimpleObj;
|
||
|
|
SimpleObj* obj4 = new SimpleObj;
|
||
|
|
|
||
|
|
DemoPdmObject* demoObj = new DemoPdmObject;
|
||
|
|
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;
|
||
|
|
treeView.setPdmItem(demoObj);
|
||
|
|
|
||
|
|
QModelIndex mi;
|
||
|
|
mi = treeView.findModelIndex(obj1);
|
||
|
|
EXPECT_TRUE(mi.isValid());
|
||
|
|
|
||
|
|
demoObj->m_simpleObjPtrField.removeChildObject(obj1);
|
||
|
|
demoObj->m_simpleObjPtrField().uiCapability()->updateConnectedEditors();
|
||
|
|
|
||
|
|
mi = treeView.findModelIndex(obj1);
|
||
|
|
EXPECT_FALSE(mi.isValid());
|
||
|
|
}
|
||
|
|
|
||
|
|
//--------------------------------------------------------------------------------------------------
|
||
|
|
///
|
||
|
|
//--------------------------------------------------------------------------------------------------
|
||
|
|
TEST(PdmUiTreeViewModelTest, AddOneItemAndVerifyTreeOrdering)
|
||
|
|
{
|
||
|
|
SimpleObj* obj1 = new SimpleObj;
|
||
|
|
SimpleObj* obj2 = new SimpleObj;
|
||
|
|
SimpleObj* obj3 = new SimpleObj;
|
||
|
|
SimpleObj* obj4 = new SimpleObj;
|
||
|
|
|
||
|
|
DemoPdmObject* demoObj = new DemoPdmObject;
|
||
|
|
demoObj->m_simpleObjPtrField.push_back(obj1);
|
||
|
|
demoObj->m_simpleObjPtrField.push_back(obj2);
|
||
|
|
demoObj->m_simpleObjPtrField.push_back(obj3);
|
||
|
|
|
||
|
|
PdmUiTreeView treeView;
|
||
|
|
treeView.setPdmItem(demoObj);
|
||
|
|
|
||
|
|
QModelIndex mi;
|
||
|
|
mi = treeView.findModelIndex(obj4);
|
||
|
|
EXPECT_FALSE(mi.isValid());
|
||
|
|
|
||
|
|
demoObj->m_simpleObjPtrField.push_back(obj4);
|
||
|
|
demoObj->m_simpleObjPtrField().uiCapability()->updateConnectedEditors();
|
||
|
|
|
||
|
|
mi = treeView.findModelIndex(obj4);
|
||
|
|
EXPECT_TRUE(mi.isValid());
|
||
|
|
}
|
||
|
|
|
||
|
|
//--------------------------------------------------------------------------------------------------
|
||
|
|
///
|
||
|
|
//--------------------------------------------------------------------------------------------------
|
||
|
|
TEST(PdmUiTreeViewModelTest, ChangeOrderingAndVerifyTreeOrdering)
|
||
|
|
{
|
||
|
|
SimpleObj* obj1 = new SimpleObj;
|
||
|
|
SimpleObj* obj2 = new SimpleObj;
|
||
|
|
SimpleObj* obj3 = new SimpleObj;
|
||
|
|
SimpleObj* obj4 = new SimpleObj;
|
||
|
|
|
||
|
|
DemoPdmObject* demoObj = new DemoPdmObject;
|
||
|
|
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;
|
||
|
|
treeView.setPdmItem(demoObj);
|
||
|
|
|
||
|
|
QModelIndex mi;
|
||
|
|
mi = treeView.findModelIndex(obj4);
|
||
|
|
EXPECT_EQ(3, mi.row());
|
||
|
|
|
||
|
|
demoObj->m_simpleObjPtrField.clear();
|
||
|
|
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();
|
||
|
|
|
||
|
|
mi = treeView.findModelIndex(obj4);
|
||
|
|
EXPECT_EQ(1, mi.row());
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//--------------------------------------------------------------------------------------------------
|
||
|
|
///
|
||
|
|
//--------------------------------------------------------------------------------------------------
|
||
|
|
TEST(PdmUiTreeViewModelTest, ChangeDeepInTreeNotifyRootAndVerifyTreeOrdering)
|
||
|
|
{
|
||
|
|
DemoPdmObject* root = new DemoPdmObject;
|
||
|
|
|
||
|
|
SimpleObj* rootObj1 = new SimpleObj;
|
||
|
|
root->m_simpleObjPtrField.push_back(rootObj1);
|
||
|
|
|
||
|
|
DemoPdmObject* demoObj = new DemoPdmObject;
|
||
|
|
root->m_simpleObjPtrField.push_back(demoObj);
|
||
|
|
|
||
|
|
SimpleObj* obj1 = new SimpleObj;
|
||
|
|
SimpleObj* obj2 = new SimpleObj;
|
||
|
|
SimpleObj* obj3 = new SimpleObj;
|
||
|
|
SimpleObj* obj4 = new SimpleObj;
|
||
|
|
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;
|
||
|
|
treeView.setPdmItem(root);
|
||
|
|
|
||
|
|
QModelIndex mi;
|
||
|
|
mi = treeView.findModelIndex(obj4);
|
||
|
|
EXPECT_EQ(3, mi.row());
|
||
|
|
|
||
|
|
demoObj->m_simpleObjPtrField.removeChildObject(obj4);
|
||
|
|
|
||
|
|
root->m_simpleObjPtrField().uiCapability()->updateConnectedEditors();
|
||
|
|
|
||
|
|
mi = treeView.findModelIndex(obj4);
|
||
|
|
EXPECT_FALSE(mi.isValid());
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
//--------------------------------------------------------------------------------------------------
|
||
|
|
///
|
||
|
|
//--------------------------------------------------------------------------------------------------
|
||
|
|
TEST(PdmUiTreeViewModelTest, DISABLED_PerformanceLargeNumberOfItems)
|
||
|
|
{
|
||
|
|
//int objCount = 20000;
|
||
|
|
int objCount = 100000;
|
||
|
|
|
||
|
|
DemoPdmObject* demoObj = new DemoPdmObject;
|
||
|
|
for (int i = 0; i < objCount; i++)
|
||
|
|
{
|
||
|
|
demoObj->m_simpleObjPtrField.push_back(new SimpleObj);
|
||
|
|
}
|
||
|
|
|
||
|
|
PdmUiTreeView treeView;
|
||
|
|
treeView.setPdmItem(demoObj);
|
||
|
|
demoObj->m_simpleObjPtrField().uiCapability()->updateConnectedEditors();
|
||
|
|
}
|