Skip to content
Snippets Groups Projects
Commit 60c6d7a8 authored by Mikhail Svechnikov's avatar Mikhail Svechnikov
Browse files

Tests fix

parent ac53b753
No related branches found
No related tags found
1 merge request!1124FitSuiteItem is refactored
......@@ -41,8 +41,7 @@ const QString value("value");
} // namespace
FitSuiteItem::FitSuiteItem()
: SessionItem(M_TYPE)
, m_updateInterval(10)
: m_updateInterval(10)
, m_iterCount(0)
, m_chi2(0.0)
{
......@@ -111,7 +110,7 @@ void FitSuiteItem::setChi2(const double chi2)
m_chi2 = chi2;
}
void FitSuiteItem::writeNonSessionItems(QXmlStreamWriter* writer) const
void FitSuiteItem::writeTo(QXmlStreamWriter* writer) const
{
// update interval
writer->writeStartElement(Tag::UpdateInterval);
......@@ -143,7 +142,7 @@ void FitSuiteItem::writeNonSessionItems(QXmlStreamWriter* writer) const
}
}
void FitSuiteItem::readNonSessionItems(QXmlStreamReader* reader)
void FitSuiteItem::readFrom(QXmlStreamReader* reader)
{
while (reader->readNextStartElement()) {
......
......@@ -15,17 +15,14 @@
#ifndef BORNAGAIN_GUI_MODEL_JOB_FITSUITEITEM_H
#define BORNAGAIN_GUI_MODEL_JOB_FITSUITEITEM_H
#include "GUI/Model/BaseItem/SessionItem.h"
#include "GUI/Model/Job/FitParameterContainerItem.h"
#include <QXmlStreamReader>
class FitParameterContainerItem;
class MinimizerContainerItem;
class BA_CORE_API_ FitSuiteItem : public QObject, public SessionItem {
class FitSuiteItem : public QObject {
Q_OBJECT
public:
static constexpr auto M_TYPE{"FitSuite"};
explicit FitSuiteItem();
FitParameterContainerItem* createFitParametersContainer();
......@@ -43,8 +40,8 @@ public:
double chi2() const;
void setChi2(double chi2);
void writeNonSessionItems(QXmlStreamWriter* writer) const override;
void readNonSessionItems(QXmlStreamReader* reader) override;
void writeTo(QXmlStreamWriter* writer) const;
void readFrom(QXmlStreamReader* reader);
signals:
void iterationCountChanged(int count);
......
......@@ -310,7 +310,6 @@ FitSuiteItem* JobItem::createFitSuiteItem()
"a second FitSuiteItem.");
m_fitSuiteItem = std::make_unique<FitSuiteItem>();
m_fitSuiteItem->setParentAndModel(this, model());
return m_fitSuiteItem.get();
}
......@@ -538,7 +537,7 @@ void JobItem::writeTo(QXmlStreamWriter* writer) const
// fit suite
if (m_fitSuiteItem) {
writer->writeStartElement(Tag::FitSuite);
GUI::Session::XML::writeItemAndChildItems(writer, m_fitSuiteItem.get());
m_fitSuiteItem->writeTo(writer);
writer->writeEndElement();
}
}
......@@ -643,7 +642,10 @@ void JobItem::readFrom(QXmlStreamReader* reader)
// fit suite
} else if (reader->name() == Tag::FitSuite) {
m_fitSuiteItem.reset(readItemToEnd<FitSuiteItem>(reader, this, Tag::FitSuite));
if(!m_fitSuiteItem)
createFitSuiteItem();
m_fitSuiteItem->readFrom(reader);
GUI::Session::XML::gotoEndElementOfTag(reader, Tag::FitSuite);
} else {
reader->skipCurrentElement();
......
......@@ -12,13 +12,14 @@
//
// ************************************************************************************************
#include "GUI/Model/Job/MinimizerItem.h"
#include "Base/Util/Assert.h"
#include "Fit/Adapter/GSLLevenbergMarquardtMinimizer.h"
#include "Fit/Adapter/GSLMultiMinimizer.h"
#include "Fit/Adapter/GeneticMinimizer.h"
#include "Fit/Adapter/Minuit2Minimizer.h"
#include "Fit/Adapter/SimAnMinimizer.h"
#include "GUI/Model/CatJob/MinimizerItemCatalog.h"
#include "GUI/Model/Job/MinimizerItem.h"
#include "GUI/Support/XML/UtilXML.h"
#include "Sim/Fitting/ObjectiveMetric.h"
#include "Sim/Fitting/ObjectiveMetricUtils.h"
......@@ -141,8 +142,7 @@ void create_algorithm_list_and_map(QString& default_common_algorithm, QStringLis
} // namespace
MinimizerContainerItem::MinimizerContainerItem()
: SessionItem(M_TYPE)
, m_MinuitMinimizer(std::make_unique<MinuitMinimizerItem>())
: m_MinuitMinimizer(std::make_unique<MinuitMinimizerItem>())
, m_GSLMultiMinimizer(std::make_unique<GSLMultiMinimizerItem>())
, m_GeneticMinimizer(std::make_unique<GeneticMinimizerItem>())
, m_SimAnMinimizer(std::make_unique<SimAnMinimizerItem>())
......@@ -407,16 +407,6 @@ void MinimizerContainerItem::readFrom(QXmlStreamReader* reader)
}
}
void MinimizerContainerItem::writeNonSessionItems(QXmlStreamWriter* writer) const
{
writeTo(writer);
}
void MinimizerContainerItem::readNonSessionItems(QXmlStreamReader* reader)
{
readFrom(reader);
}
// ----------------------------------------------------------------------------
MinuitMinimizerItem::MinuitMinimizerItem()
......
......@@ -15,7 +15,6 @@
#ifndef BORNAGAIN_GUI_MODEL_JOB_MINIMIZERITEM_H
#define BORNAGAIN_GUI_MODEL_JOB_MINIMIZERITEM_H
#include "GUI/Model/BaseItem/SessionItem.h"
#include "GUI/Util/ComboProperty.h"
class IMinimizer;
......@@ -28,7 +27,7 @@ QString minimizerTypeToName(MinimizerType type);
//! Base class to store minimizer settings.
class BA_CORE_API_ MinimizerItem {
class MinimizerItem {
public:
virtual ~MinimizerItem() = default;
......@@ -46,10 +45,8 @@ class GeneticMinimizerItem;
class MinuitMinimizerItem;
class SimAnMinimizerItem;
class MinimizerContainerItem : public MinimizerItem, public SessionItem {
class MinimizerContainerItem : public MinimizerItem {
public:
static constexpr auto M_TYPE{"MinimizerContainer"};
MinimizerContainerItem();
~MinimizerContainerItem() override;
......@@ -85,9 +82,6 @@ public:
void writeTo(QXmlStreamWriter* writer) const override;
void readFrom(QXmlStreamReader* reader) override;
void writeNonSessionItems(QXmlStreamWriter* writer) const override;
void readNonSessionItems(QXmlStreamReader* reader) override;
private:
// hold them all for storing their internal settings.
std::unique_ptr<MinuitMinimizerItem> m_MinuitMinimizer;
......
......@@ -48,12 +48,8 @@ ItemCatalog::ItemCatalog()
addItem<RegionOfInterestItem>();
addItem<FitSuiteItem>();
addItem<RealItem>();
addItem<MinimizerContainerItem>();
addItem<ProjectionContainerItem>();
}
......
......@@ -4,18 +4,17 @@
#include "GUI/Model/Job/FitSuiteItem.h"
#include "GUI/Model/Job/MinimizerItem.h"
#include "GUI/Model/Model/FitParameterModel.h"
#include "GUI/Model/Model/JobModel.h"
#include "GUI/Model/Job/FitSuiteItem.h"
#include "Tests/GTestWrapper/google_test.h"
class TestFitParameterModel : public ::testing::Test {};
TEST_F(TestFitParameterModel, InitialState)
{
JobModel source;
JobItem* jobItem = nullptr;
FitSuiteItem fitSuiteItem;
auto* fitSuiteItem = source.insertItem<FitSuiteItem>();
auto* container = fitSuiteItem->createFitParametersContainer();
auto* container = fitSuiteItem.createFitParametersContainer();
FitParameterModel proxy(dynamic_cast<FitParameterContainerItem*>(container), jobItem);
EXPECT_EQ(0, proxy.rowCount(QModelIndex()));
......@@ -25,10 +24,9 @@ TEST_F(TestFitParameterModel, InitialState)
TEST_F(TestFitParameterModel, addFitParameter)
{
JobModel source;
JobItem* jobItem = nullptr;
auto* fitSuiteItem = source.insertItem<FitSuiteItem>();
auto* container = fitSuiteItem->createFitParametersContainer();
FitSuiteItem fitSuiteItem;
auto* container = fitSuiteItem.createFitParametersContainer();
FitParameterModel proxy(dynamic_cast<FitParameterContainerItem*>(container), jobItem);
// adding fit parameter
......@@ -122,10 +120,9 @@ TEST_F(TestFitParameterModel, addFitParameter)
TEST_F(TestFitParameterModel, addFitParameterAndLink)
{
JobModel source;
JobItem* jobItem = nullptr;
auto* fitSuiteItem = source.insertItem<FitSuiteItem>();
auto* container = fitSuiteItem->createFitParametersContainer();
FitSuiteItem fitSuiteItem;
auto* container = fitSuiteItem.createFitParametersContainer();
FitParameterModel proxy(dynamic_cast<FitParameterContainerItem*>(container), jobItem);
// adding fit parameter
......@@ -183,10 +180,9 @@ TEST_F(TestFitParameterModel, addFitParameterAndLink)
TEST_F(TestFitParameterModel, addTwoFitParameterAndLinks)
{
JobModel source;
JobItem* jobItem = nullptr;
auto* fitSuiteItem = source.insertItem<FitSuiteItem>();
auto* container = fitSuiteItem->createFitParametersContainer();
FitSuiteItem fitSuiteItem;
auto* container = fitSuiteItem.createFitParametersContainer();
FitParameterModel proxy(dynamic_cast<FitParameterContainerItem*>(container), jobItem);
// adding fit parameters
......
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