Skip to content
Snippets Groups Projects
Commit 81223d90 authored by Matthias Puchner's avatar Matthias Puchner
Browse files

move ApplicationModels to ProjectDocument

and adapt unit tests
parent a1ceda9f
No related branches found
No related tags found
1 merge request!290Refactor Application Models
...@@ -53,32 +53,32 @@ ApplicationModels::ApplicationModels(QObject* parent) ...@@ -53,32 +53,32 @@ ApplicationModels::ApplicationModels(QObject* parent)
ApplicationModels::~ApplicationModels() = default; ApplicationModels::~ApplicationModels() = default;
DocumentModel* ApplicationModels::documentModel() DocumentModel* ApplicationModels::documentModel() const
{ {
return m_documentModel; return m_documentModel;
} }
MaterialModel* ApplicationModels::materialModel() MaterialModel* ApplicationModels::materialModel() const
{ {
return m_materialModel; return m_materialModel;
} }
InstrumentModel* ApplicationModels::instrumentModel() InstrumentModel* ApplicationModels::instrumentModel() const
{ {
return m_instrumentModel; return m_instrumentModel;
} }
SampleModel* ApplicationModels::sampleModel() SampleModel* ApplicationModels::sampleModel() const
{ {
return m_sampleModel; return m_sampleModel;
} }
RealDataModel* ApplicationModels::realDataModel() RealDataModel* ApplicationModels::realDataModel() const
{ {
return m_realDataModel; return m_realDataModel;
} }
JobModel* ApplicationModels::jobModel() JobModel* ApplicationModels::jobModel() const
{ {
return m_jobModel; return m_jobModel;
} }
......
...@@ -33,12 +33,12 @@ public: ...@@ -33,12 +33,12 @@ public:
explicit ApplicationModels(QObject* parent = nullptr); explicit ApplicationModels(QObject* parent = nullptr);
~ApplicationModels(); ~ApplicationModels();
DocumentModel* documentModel(); DocumentModel* documentModel() const;
MaterialModel* materialModel(); MaterialModel* materialModel() const;
InstrumentModel* instrumentModel(); InstrumentModel* instrumentModel() const;
SampleModel* sampleModel(); SampleModel* sampleModel() const;
RealDataModel* realDataModel(); RealDataModel* realDataModel() const;
JobModel* jobModel(); JobModel* jobModel() const;
void resetModels(); void resetModels();
......
...@@ -50,7 +50,6 @@ MainWindow::MainWindow() ...@@ -50,7 +50,6 @@ MainWindow::MainWindow()
, m_viewsStack(new QStackedLayout) , m_viewsStack(new QStackedLayout)
, m_viewSelectionButtonsLayout(new QVBoxLayout) , m_viewSelectionButtonsLayout(new QVBoxLayout)
, m_statusBar(new QStatusBar) , m_statusBar(new QStatusBar)
, m_applicationModels(new ApplicationModels(this))
, m_projectManager(new ProjectManager(this)) , m_projectManager(new ProjectManager(this))
, m_actionManager(new ActionManager(this)) , m_actionManager(new ActionManager(this))
, m_welcomeView(0) , m_welcomeView(0)
...@@ -115,10 +114,6 @@ MainWindow::MainWindow() ...@@ -115,10 +114,6 @@ MainWindow::MainWindow()
ASSERT(m_viewSelectionButtons->button(ViewId::WELCOME) != nullptr); ASSERT(m_viewSelectionButtons->button(ViewId::WELCOME) != nullptr);
m_viewSelectionButtons->button(ViewId::WELCOME)->setChecked(true); m_viewSelectionButtons->button(ViewId::WELCOME)->setChecked(true);
// m_applicationModels->createTestSample();
// m_applicationModels->createTestJob();
// m_applicationModels->createTestRealData();
updateTitle(); updateTitle();
if (baApp->settings().createNewProjectOnStartup()) if (baApp->settings().createNewProjectOnStartup())
...@@ -135,11 +130,6 @@ MainWindow* MainWindow::instance() ...@@ -135,11 +130,6 @@ MainWindow* MainWindow::instance()
return s_instance; return s_instance;
} }
ApplicationModels* MainWindow::models()
{
return m_applicationModels;
}
QProgressBar* MainWindow::progressBar() QProgressBar* MainWindow::progressBar()
{ {
return m_progressBar; return m_progressBar;
......
...@@ -25,12 +25,6 @@ class SimulationView; ...@@ -25,12 +25,6 @@ class SimulationView;
class JobView; class JobView;
class SessionModelView; class SessionModelView;
class MaterialModel;
class SampleModel;
class InstrumentModel;
class RealDataModel;
class JobModel;
class ApplicationModels;
class ProjectManager; class ProjectManager;
class ActionManager; class ActionManager;
class UpdateNotifier; class UpdateNotifier;
...@@ -54,9 +48,6 @@ public: ...@@ -54,9 +48,6 @@ public:
//! Returns the one and only instance of this class //! Returns the one and only instance of this class
static MainWindow* instance(); static MainWindow* instance();
JobModel* jobModel();
ApplicationModels* models();
QProgressBar* progressBar(); QProgressBar* progressBar();
QStatusBar* statusBar(); QStatusBar* statusBar();
...@@ -105,7 +96,6 @@ private: ...@@ -105,7 +96,6 @@ private:
QVBoxLayout* m_viewSelectionButtonsLayout; QVBoxLayout* m_viewSelectionButtonsLayout;
QStatusBar* m_statusBar; QStatusBar* m_statusBar;
ApplicationModels* m_applicationModels;
ProjectManager* m_projectManager; ProjectManager* m_projectManager;
ActionManager* m_actionManager; ActionManager* m_actionManager;
UpdateNotifier* m_updateNotifier; UpdateNotifier* m_updateNotifier;
......
...@@ -37,14 +37,17 @@ const QString InfoNameAttribute("ProjectName"); ...@@ -37,14 +37,17 @@ const QString InfoNameAttribute("ProjectName");
ProjectDocument::ProjectDocument(const QString& projectFileName) ProjectDocument::ProjectDocument(const QString& projectFileName)
: m_applicationModels(nullptr) : m_modified(false)
, m_modified(false)
, m_dataService(new OutputDataIOService(this)) , m_dataService(new OutputDataIOService(this))
, m_linkManager(new LinkInstrumentManager(this)) , m_linkManager(new LinkInstrumentManager(this))
{ {
setObjectName("ProjectDocument"); setObjectName("ProjectDocument");
if (!projectFileName.isEmpty()) if (!projectFileName.isEmpty())
setProjectFileName(projectFileName); setProjectFileName(projectFileName);
m_dataService->setApplicationModels(&m_applicationModels);
connectModels();
m_linkManager->setModels(instrumentModel(), realDataModel());
} }
QString ProjectDocument::projectName() const QString ProjectDocument::projectName() const
...@@ -89,46 +92,34 @@ QString ProjectDocument::projectFileExtension() ...@@ -89,46 +92,34 @@ QString ProjectDocument::projectFileExtension()
return ".pro"; return ".pro";
} }
void ProjectDocument::setApplicationModels(ApplicationModels* applicationModels)
{
if (applicationModels != m_applicationModels) {
disconnectModels();
m_applicationModels = applicationModels;
m_dataService->setApplicationModels(m_applicationModels);
connectModels();
}
m_linkManager->setModels(instrumentModel(), realDataModel());
}
ApplicationModels* ProjectDocument::applicationModels() ApplicationModels* ProjectDocument::applicationModels()
{ {
return m_applicationModels; return &m_applicationModels;
} }
InstrumentModel* ProjectDocument::instrumentModel() const InstrumentModel* ProjectDocument::instrumentModel() const
{ {
return m_applicationModels != nullptr ? m_applicationModels->instrumentModel() : nullptr; return m_applicationModels.instrumentModel();
} }
SampleModel* ProjectDocument::sampleModel() const SampleModel* ProjectDocument::sampleModel() const
{ {
return m_applicationModels != nullptr ? m_applicationModels->sampleModel() : nullptr; return m_applicationModels.sampleModel();
} }
MaterialModel* ProjectDocument::materialModel() const MaterialModel* ProjectDocument::materialModel() const
{ {
return m_applicationModels != nullptr ? m_applicationModels->materialModel() : nullptr; return m_applicationModels.materialModel();
} }
RealDataModel* ProjectDocument::realDataModel() const RealDataModel* ProjectDocument::realDataModel() const
{ {
return m_applicationModels != nullptr ? m_applicationModels->realDataModel() : nullptr; return m_applicationModels.realDataModel();
} }
JobModel* ProjectDocument::jobModel() const JobModel* ProjectDocument::jobModel() const
{ {
return m_applicationModels != nullptr ? m_applicationModels->jobModel() : nullptr; return m_applicationModels.jobModel();
} }
LinkInstrumentManager* ProjectDocument::linkInstrumentManager() LinkInstrumentManager* ProjectDocument::linkInstrumentManager()
...@@ -267,7 +258,7 @@ ProjectDocument::ReadResult ProjectDocument::readProject(QIODevice* device, ...@@ -267,7 +258,7 @@ ProjectDocument::ReadResult ProjectDocument::readProject(QIODevice* device,
if (reader.name() == InfoTag) if (reader.name() == InfoTag)
reader.skipCurrentElement(); reader.skipCurrentElement();
else else
m_applicationModels->readFrom(&reader, &messageService); m_applicationModels.readFrom(&reader, &messageService);
} }
} }
} }
...@@ -296,7 +287,7 @@ void ProjectDocument::writeTo(QIODevice* device) ...@@ -296,7 +287,7 @@ void ProjectDocument::writeTo(QIODevice* device)
writer.writeAttribute(InfoNameAttribute, projectName()); writer.writeAttribute(InfoNameAttribute, projectName());
writer.writeEndElement(); // InfoTag writer.writeEndElement(); // InfoTag
m_applicationModels->writeTo(&writer); m_applicationModels.writeTo(&writer);
writer.writeEndElement(); // BornAgain tag writer.writeEndElement(); // BornAgain tag
writer.writeEndDocument(); writer.writeEndDocument();
...@@ -304,14 +295,12 @@ void ProjectDocument::writeTo(QIODevice* device) ...@@ -304,14 +295,12 @@ void ProjectDocument::writeTo(QIODevice* device)
void ProjectDocument::disconnectModels() void ProjectDocument::disconnectModels()
{ {
if (m_applicationModels) disconnect(&m_applicationModels, &ApplicationModels::modelChanged, this,
disconnect(m_applicationModels, &ApplicationModels::modelChanged, this, &ProjectDocument::onModelChanged);
&ProjectDocument::onModelChanged);
} }
void ProjectDocument::connectModels() void ProjectDocument::connectModels()
{ {
if (m_applicationModels) connect(&m_applicationModels, &ApplicationModels::modelChanged, this,
connect(m_applicationModels, &ApplicationModels::modelChanged, this, &ProjectDocument::onModelChanged, Qt::UniqueConnection);
&ProjectDocument::onModelChanged, Qt::UniqueConnection);
} }
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#ifndef BORNAGAIN_GUI_MAINWINDOW_PROJECTDOCUMENT_H #ifndef BORNAGAIN_GUI_MAINWINDOW_PROJECTDOCUMENT_H
#define BORNAGAIN_GUI_MAINWINDOW_PROJECTDOCUMENT_H #define BORNAGAIN_GUI_MAINWINDOW_PROJECTDOCUMENT_H
#include "GUI/Models/ApplicationModels.h"
#include <QObject> #include <QObject>
class QIODevice; class QIODevice;
...@@ -54,7 +55,6 @@ public: ...@@ -54,7 +55,6 @@ public:
static QString projectFileExtension(); static QString projectFileExtension();
void setApplicationModels(ApplicationModels* applicationModels);
ApplicationModels* applicationModels(); ApplicationModels* applicationModels();
InstrumentModel* instrumentModel() const; InstrumentModel* instrumentModel() const;
SampleModel* sampleModel() const; SampleModel* sampleModel() const;
...@@ -92,7 +92,7 @@ private: ...@@ -92,7 +92,7 @@ private:
QString m_project_dir; QString m_project_dir;
QString m_project_name; QString m_project_name;
ApplicationModels* m_applicationModels; ApplicationModels m_applicationModels;
bool m_modified; bool m_modified;
QString m_currentVersion; QString m_currentVersion;
OutputDataIOService* m_dataService; OutputDataIOService* m_dataService;
......
...@@ -361,7 +361,6 @@ void ProjectManager::createNewProject() ...@@ -361,7 +361,6 @@ void ProjectManager::createNewProject()
connect(m_project_document, &ProjectDocument::modified, this, connect(m_project_document, &ProjectDocument::modified, this,
&ProjectManager::onDocumentModified); &ProjectManager::onDocumentModified);
m_project_document->setProjectName("Untitled"); m_project_document->setProjectName("Untitled");
m_project_document->setApplicationModels(m_mainWindow->models());
m_saveService->setDocument(m_project_document); m_saveService->setDocument(m_project_document);
} }
...@@ -373,7 +372,6 @@ void ProjectManager::deleteCurrentProject() ...@@ -373,7 +372,6 @@ void ProjectManager::deleteCurrentProject()
delete m_project_document; delete m_project_document;
m_project_document = 0; m_project_document = 0;
m_mainWindow->models()->resetModels();
} }
//! Load project data from file name. If autosave info exists, opens dialog for project restore. //! Load project data from file name. If autosave info exists, opens dialog for project restore.
......
...@@ -123,27 +123,24 @@ TEST_F(TestDataItemViews, testSavingLinkedData) ...@@ -123,27 +123,24 @@ TEST_F(TestDataItemViews, testSavingLinkedData)
GuiUnittestUtils::create_dir(projectDir); GuiUnittestUtils::create_dir(projectDir);
const QString projectFileName(projectDir + "/document.pro"); const QString projectFileName(projectDir + "/document.pro");
{ {
ApplicationModels models;
ProjectDocument document; ProjectDocument document;
SessionModel* real_data_model = models.realDataModel(); SessionModel* real_data_model = document.realDataModel();
DataItem* item = insertNewDataItem(*real_data_model, 0.0); DataItem* item = insertNewDataItem(*real_data_model, 0.0);
DataItem* item2 = insertNewDataItem(*real_data_model, 1.0); DataItem* item2 = insertNewDataItem(*real_data_model, 1.0);
auto view_item = real_data_model->insertItem<DataPropertyContainer>(); auto view_item = real_data_model->insertItem<DataPropertyContainer>();
view_item->addItem(item); view_item->addItem(item);
view_item->addItem(item2); view_item->addItem(item2);
document.setApplicationModels(&models);
document.save(projectFileName); document.save(projectFileName);
} }
ApplicationModels models;
MessageService message_service; MessageService message_service;
ProjectDocument document; ProjectDocument document;
document.setApplicationModels(&models);
document.loadProjectFile(projectFileName, message_service); document.loadProjectFile(projectFileName, message_service);
SessionModel* real_data_model = models.realDataModel(); SessionModel* real_data_model = document.realDataModel();
auto view_item = real_data_model->topItem<DataPropertyContainer>(); auto view_item = real_data_model->topItem<DataPropertyContainer>();
EXPECT_TRUE(view_item); EXPECT_TRUE(view_item);
......
...@@ -29,13 +29,7 @@ TEST_F(TestProjectDocument, test_projectDocument) ...@@ -29,13 +29,7 @@ TEST_F(TestProjectDocument, test_projectDocument)
GuiUnittestUtils::create_dir(projectDir); GuiUnittestUtils::create_dir(projectDir);
const QString projectFileName(projectDir + "/document.pro"); const QString projectFileName(projectDir + "/document.pro");
ApplicationModels models;
auto instrument = models.instrumentModel()->insertItem<GISASInstrumentItem>();
instrument->setItemName("GISAS");
ProjectDocument document; ProjectDocument document;
document.setApplicationModels(&models);
// Checking initial document status // Checking initial document status
EXPECT_FALSE(document.isModified()); EXPECT_FALSE(document.isModified());
EXPECT_FALSE(document.hasValidNameAndPath()); EXPECT_FALSE(document.hasValidNameAndPath());
...@@ -43,6 +37,9 @@ TEST_F(TestProjectDocument, test_projectDocument) ...@@ -43,6 +37,9 @@ TEST_F(TestProjectDocument, test_projectDocument)
EXPECT_EQ(document.projectName(), QString()); EXPECT_EQ(document.projectName(), QString());
EXPECT_EQ(document.projectFileName(), QString()); EXPECT_EQ(document.projectFileName(), QString());
auto instrument = document.instrumentModel()->insertItem<GISASInstrumentItem>();
instrument->setItemName("GISAS");
// Checking document name and isModified status after project save // Checking document name and isModified status after project save
document.save(projectFileName); document.save(projectFileName);
EXPECT_TRUE(document.hasValidNameAndPath()); EXPECT_TRUE(document.hasValidNameAndPath());
...@@ -55,7 +52,7 @@ TEST_F(TestProjectDocument, test_projectDocument) ...@@ -55,7 +52,7 @@ TEST_F(TestProjectDocument, test_projectDocument)
EXPECT_EQ(spyDocument.count(), 0); EXPECT_EQ(spyDocument.count(), 0);
// Changing document and checking its status // Changing document and checking its status
modify_models(&models); modify_models(document.applicationModels());
EXPECT_TRUE(document.isModified()); EXPECT_TRUE(document.isModified());
EXPECT_EQ(spyDocument.count(), 1); EXPECT_EQ(spyDocument.count(), 1);
...@@ -73,18 +70,17 @@ TEST_F(TestProjectDocument, test_projectDocumentWithData) ...@@ -73,18 +70,17 @@ TEST_F(TestProjectDocument, test_projectDocumentWithData)
const QString projectDir("test_projectDocumentWithData"); const QString projectDir("test_projectDocumentWithData");
GuiUnittestUtils::create_dir(projectDir); GuiUnittestUtils::create_dir(projectDir);
ApplicationModels models; ProjectDocument document;
auto instrument = models.instrumentModel()->insertItem<GISASInstrumentItem>(); auto instrument = document.instrumentModel()->insertItem<GISASInstrumentItem>();
instrument->setItemName("GISAS"); instrument->setItemName("GISAS");
RealDataItem* realData = GuiUnittestUtils::createRealData("RealData", *models.realDataModel()); RealDataItem* realData =
GuiUnittestUtils::createRealData("RealData", *document.realDataModel());
ASSERT(realData); ASSERT(realData);
DataItem* intensityItem = realData->dataItem(); DataItem* intensityItem = realData->dataItem();
GUI::Model::JobItemUtils::createDefaultDetectorMap( GUI::Model::JobItemUtils::createDefaultDetectorMap(
intensityItem, models.instrumentModel()->instrument2DItems().front()); intensityItem, document.instrumentModel()->instrument2DItems().front());
intensityItem->setFileName("realdata.int.gz"); intensityItem->setFileName("realdata.int.gz");
ProjectDocument document;
document.setApplicationModels(&models);
document.save(projectDir + "/untitled.pro"); document.save(projectDir + "/untitled.pro");
QFileInfo info(projectDir + "/untitled.pro"); QFileInfo info(projectDir + "/untitled.pro");
......
...@@ -38,12 +38,9 @@ TEST_F(TestSaveService, test_autoSaveController) ...@@ -38,12 +38,9 @@ TEST_F(TestSaveService, test_autoSaveController)
const int autosave_time(100); const int autosave_time(100);
ApplicationModels models;
auto instrument = models.instrumentModel()->insertItem<GISASInstrumentItem>();
instrument->setItemName("GISAS");
std::unique_ptr<ProjectDocument> document(new ProjectDocument); std::unique_ptr<ProjectDocument> document(new ProjectDocument);
document->setApplicationModels(&models); auto instrument = document->instrumentModel()->insertItem<GISASInstrumentItem>();
instrument->setItemName("GISAS");
document->save(projectFileName); document->save(projectFileName);
// setting up autosave // setting up autosave
...@@ -58,7 +55,7 @@ TEST_F(TestSaveService, test_autoSaveController) ...@@ -58,7 +55,7 @@ TEST_F(TestSaveService, test_autoSaveController)
QSignalSpy spyAutosave(&autosave, SIGNAL(autosaveRequest())); QSignalSpy spyAutosave(&autosave, SIGNAL(autosaveRequest()));
// modify document once and check that autosave directory was created // modify document once and check that autosave directory was created
modify_models(&models); modify_models(document->applicationModels());
EXPECT_TRUE(document->isModified()); EXPECT_TRUE(document->isModified());
EXPECT_TRUE(spyAutosave.wait(m_save_wait)); EXPECT_TRUE(spyAutosave.wait(m_save_wait));
EXPECT_EQ(spyAutosave.count(), 1); EXPECT_EQ(spyAutosave.count(), 1);
...@@ -71,7 +68,7 @@ TEST_F(TestSaveService, test_autoSaveController) ...@@ -71,7 +68,7 @@ TEST_F(TestSaveService, test_autoSaveController)
// modify several times and check than autosave was triggered only once // modify several times and check than autosave was triggered only once
for (size_t i = 0; i < 10; ++i) for (size_t i = 0; i < 10; ++i)
modify_models(&models); modify_models(document->applicationModels());
EXPECT_TRUE(spyAutosave.wait(m_save_wait)); EXPECT_TRUE(spyAutosave.wait(m_save_wait));
EXPECT_EQ(spyAutosave.count(), 2); EXPECT_EQ(spyAutosave.count(), 2);
...@@ -85,12 +82,9 @@ TEST_F(TestSaveService, test_autoSaveController) ...@@ -85,12 +82,9 @@ TEST_F(TestSaveService, test_autoSaveController)
TEST_F(TestSaveService, test_autoSaveControllerNewDocument) TEST_F(TestSaveService, test_autoSaveControllerNewDocument)
{ {
ApplicationModels models;
auto instrument = models.instrumentModel()->insertItem<GISASInstrumentItem>();
instrument->setItemName("GISAS");
std::unique_ptr<ProjectDocument> document(new ProjectDocument); std::unique_ptr<ProjectDocument> document(new ProjectDocument);
document->setApplicationModels(&models); auto instrument = document->instrumentModel()->insertItem<GISASInstrumentItem>();
instrument->setItemName("GISAS");
const int autosave_time(100); const int autosave_time(100);
...@@ -100,7 +94,7 @@ TEST_F(TestSaveService, test_autoSaveControllerNewDocument) ...@@ -100,7 +94,7 @@ TEST_F(TestSaveService, test_autoSaveControllerNewDocument)
QSignalSpy spyAutosave(&autosave, SIGNAL(autosaveRequest())); QSignalSpy spyAutosave(&autosave, SIGNAL(autosaveRequest()));
modify_models(&models); modify_models(document->applicationModels());
EXPECT_FALSE(spyAutosave.wait(autosave_time * 2)); EXPECT_FALSE(spyAutosave.wait(autosave_time * 2));
EXPECT_EQ(spyAutosave.count(), 0); EXPECT_EQ(spyAutosave.count(), 0);
} }
...@@ -114,13 +108,11 @@ TEST_F(TestSaveService, test_saveService) ...@@ -114,13 +108,11 @@ TEST_F(TestSaveService, test_saveService)
GuiUnittestUtils::create_dir(projectDir); GuiUnittestUtils::create_dir(projectDir);
const QString projectFileName(projectDir + "/document.pro"); const QString projectFileName(projectDir + "/document.pro");
ApplicationModels models;
auto instrument = models.instrumentModel()->insertItem<GISASInstrumentItem>();
instrument->setItemName("GISAS");
std::unique_ptr<ProjectDocument> document(new ProjectDocument); std::unique_ptr<ProjectDocument> document(new ProjectDocument);
document->setApplicationModels(&models); auto instrument = document->instrumentModel()->insertItem<GISASInstrumentItem>();
modify_models(&models); instrument->setItemName("GISAS");
modify_models(document->applicationModels());
EXPECT_FALSE(QFile::exists(projectFileName)); EXPECT_FALSE(QFile::exists(projectFileName));
...@@ -150,13 +142,10 @@ TEST_F(TestSaveService, test_failingSaveService) ...@@ -150,13 +142,10 @@ TEST_F(TestSaveService, test_failingSaveService)
// do NOT create dir in order to force saving to fail // do NOT create dir in order to force saving to fail
const QString projectFileName(projectDir + "/document.pro"); const QString projectFileName(projectDir + "/document.pro");
ApplicationModels models;
auto instrument = models.instrumentModel()->insertItem<GISASInstrumentItem>();
instrument->setItemName("GISAS");
std::unique_ptr<ProjectDocument> document(new ProjectDocument); std::unique_ptr<ProjectDocument> document(new ProjectDocument);
document->setApplicationModels(&models); auto instrument = document->instrumentModel()->insertItem<GISASInstrumentItem>();
modify_models(&models); instrument->setItemName("GISAS");
modify_models(document->applicationModels());
EXPECT_FALSE(QFile::exists(projectFileName)); EXPECT_FALSE(QFile::exists(projectFileName));
...@@ -184,20 +173,18 @@ TEST_F(TestSaveService, test_saveServiceWithData) ...@@ -184,20 +173,18 @@ TEST_F(TestSaveService, test_saveServiceWithData)
GuiUnittestUtils::create_dir(projectDir); GuiUnittestUtils::create_dir(projectDir);
const QString projectFileName(projectDir + "/document.pro"); const QString projectFileName(projectDir + "/document.pro");
ApplicationModels models; std::unique_ptr<ProjectDocument> document(new ProjectDocument);
auto instrument = models.instrumentModel()->insertItem<GISASInstrumentItem>(); auto instrument = document->instrumentModel()->insertItem<GISASInstrumentItem>();
instrument->setItemName("GISAS"); instrument->setItemName("GISAS");
RealDataItem* realData = GuiUnittestUtils::createRealData("RealData", *models.realDataModel()); RealDataItem* realData =
GuiUnittestUtils::createRealData("RealData", *document->realDataModel());
ASSERT(realData); ASSERT(realData);
DataItem* intensityItem = realData->dataItem(); DataItem* intensityItem = realData->dataItem();
GUI::Model::JobItemUtils::createDefaultDetectorMap( GUI::Model::JobItemUtils::createDefaultDetectorMap(
intensityItem, models.instrumentModel()->instrument2DItems().front()); intensityItem, document->instrumentModel()->instrument2DItems().front());
intensityItem->setFileName("realdata.int.gz"); intensityItem->setFileName("realdata.int.gz");
std::unique_ptr<ProjectDocument> document(new ProjectDocument);
document->setApplicationModels(&models);
EXPECT_FALSE(QFile::exists(projectFileName)); EXPECT_FALSE(QFile::exists(projectFileName));
SaveService service; SaveService service;
...@@ -222,19 +209,17 @@ TEST_F(TestSaveService, test_autosaveEnabled) ...@@ -222,19 +209,17 @@ TEST_F(TestSaveService, test_autosaveEnabled)
GuiUnittestUtils::create_dir(projectDir); GuiUnittestUtils::create_dir(projectDir);
const QString projectFileName(projectDir + "/document.pro"); const QString projectFileName(projectDir + "/document.pro");
ApplicationModels models; std::unique_ptr<ProjectDocument> document(new ProjectDocument(projectFileName));
auto instrument = models.instrumentModel()->insertItem<GISASInstrumentItem>(); auto instrument = document->instrumentModel()->insertItem<GISASInstrumentItem>();
instrument->setItemName("GISAS"); instrument->setItemName("GISAS");
RealDataItem* realData = GuiUnittestUtils::createRealData("RealData", *models.realDataModel()); RealDataItem* realData =
GuiUnittestUtils::createRealData("RealData", *document->realDataModel());
DataItem* intensityItem = realData->dataItem(); DataItem* intensityItem = realData->dataItem();
GUI::Model::JobItemUtils::createDefaultDetectorMap( GUI::Model::JobItemUtils::createDefaultDetectorMap(
intensityItem, models.instrumentModel()->instrument2DItems().front()); intensityItem, document->instrumentModel()->instrument2DItems().front());
intensityItem->setFileName("realdata.int.gz"); intensityItem->setFileName("realdata.int.gz");
document->setModified(false);
std::unique_ptr<ProjectDocument> document(new ProjectDocument(projectFileName));
document->setApplicationModels(&models);
EXPECT_FALSE(document->isModified()); EXPECT_FALSE(document->isModified());
SaveService service; SaveService service;
...@@ -255,7 +240,7 @@ TEST_F(TestSaveService, test_autosaveEnabled) ...@@ -255,7 +240,7 @@ TEST_F(TestSaveService, test_autosaveEnabled)
// modify several times and check SaveService signals // modify several times and check SaveService signals
for (size_t i = 0; i < 10; ++i) for (size_t i = 0; i < 10; ++i)
modify_models(&models); modify_models(document->applicationModels());
EXPECT_TRUE(document->isModified()); EXPECT_TRUE(document->isModified());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment