Skip to content
Snippets Groups Projects
Commit 5997c391 authored by t.knopff's avatar t.knopff
Browse files

Make MaterialItem::P_MATERIAL_DATA private

parent 5ac25683
No related branches found
No related tags found
1 merge request!58Refactor model regarding MaterialItem
...@@ -59,6 +59,41 @@ void MaterialItem::setSLDData(double sld_real, double sld_imag) ...@@ -59,6 +59,41 @@ void MaterialItem::setSLDData(double sld_real, double sld_imag)
sldData->setItemValue(MaterialSLDDataItem::P_SLD_IMAG, sld_imag); sldData->setItemValue(MaterialSLDDataItem::P_SLD_IMAG, sld_imag);
} }
bool MaterialItem::isRefractive() const
{
SessionItem* data = getGroupItem(P_MATERIAL_DATA);
ASSERT(data);
return dynamic_cast<MaterialRefractiveDataItem*>(data) != nullptr;
}
double MaterialItem::refractiveDataDelta() const
{
ASSERT(isRefractive());
return getGroupItem(P_MATERIAL_DATA)
->getItemValue(MaterialRefractiveDataItem::P_DELTA).toDouble();
}
double MaterialItem::refractiveDataBeta() const
{
ASSERT(isRefractive());
return getGroupItem(P_MATERIAL_DATA)
->getItemValue(MaterialRefractiveDataItem::P_BETA).toDouble();
}
double MaterialItem::SLDDataReal() const
{
ASSERT(!isRefractive());
return getGroupItem(P_MATERIAL_DATA)
->getItemValue(MaterialSLDDataItem::P_SLD_REAL).toDouble();
}
double MaterialItem::SLDDataImag() const
{
ASSERT(!isRefractive());
return getGroupItem(P_MATERIAL_DATA)
->getItemValue(MaterialSLDDataItem::P_SLD_IMAG).toDouble();
}
QString MaterialItem::identifier() const QString MaterialItem::identifier() const
{ {
return getItemValue(P_IDENTIFIER).toString(); return getItemValue(P_IDENTIFIER).toString();
......
...@@ -22,8 +22,8 @@ class Material; ...@@ -22,8 +22,8 @@ class Material;
class BA_CORE_API_ MaterialItem : public SessionItem { class BA_CORE_API_ MaterialItem : public SessionItem {
private: private:
static const QString P_COLOR; static const QString P_COLOR;
public:
static const QString P_MATERIAL_DATA; static const QString P_MATERIAL_DATA;
public:
static const QString P_MAGNETIZATION; static const QString P_MAGNETIZATION;
private: private:
static const QString P_IDENTIFIER; static const QString P_IDENTIFIER;
...@@ -33,7 +33,17 @@ public: ...@@ -33,7 +33,17 @@ public:
void setRefractiveData(double delta, double beta); void setRefractiveData(double delta, double beta);
void setSLDData(double sld_real, double sld_imag); void setSLDData(double sld_real, double sld_imag);
/// \return true iff material is refractive, and SLD otherwise
bool isRefractive() const;
/// \pre isRefractive
double refractiveDataDelta() const;
/// \pre isRefractive
double refractiveDataBeta() const;
/// \pre ! isRefractive
double SLDDataReal() const;
/// \pre ! isRefractive
double SLDDataImag() const;
QString identifier() const; QString identifier() const;
void setIdentifier(const QString& id); void setIdentifier(const QString& id);
......
...@@ -22,9 +22,9 @@ TEST_F(TestMaterialModel, addRefractiveMaterial) ...@@ -22,9 +22,9 @@ TEST_F(TestMaterialModel, addRefractiveMaterial)
EXPECT_EQ(model->rowCount(QModelIndex()), 1); EXPECT_EQ(model->rowCount(QModelIndex()), 1);
EXPECT_EQ(material->itemName(), name); EXPECT_EQ(material->itemName(), name);
auto materialData = material->getGroupItem(MaterialItem::P_MATERIAL_DATA); EXPECT_TRUE(material->isRefractive());
EXPECT_EQ(materialData->getItemValue(MaterialRefractiveDataItem::P_DELTA), delta); EXPECT_EQ(material->refractiveDataDelta(), delta);
EXPECT_EQ(materialData->getItemValue(MaterialRefractiveDataItem::P_BETA), beta); EXPECT_EQ(material->refractiveDataBeta(), beta);
} }
TEST_F(TestMaterialModel, addSLDMaterial) TEST_F(TestMaterialModel, addSLDMaterial)
...@@ -42,12 +42,12 @@ TEST_F(TestMaterialModel, addSLDMaterial) ...@@ -42,12 +42,12 @@ TEST_F(TestMaterialModel, addSLDMaterial)
EXPECT_EQ(model->rowCount(QModelIndex()), 1); EXPECT_EQ(model->rowCount(QModelIndex()), 1);
EXPECT_EQ(material->itemName(), name); EXPECT_EQ(material->itemName(), name);
auto materialData = material->getGroupItem(MaterialItem::P_MATERIAL_DATA); EXPECT_FALSE(material->isRefractive());
EXPECT_EQ(materialData->getItemValue(MaterialSLDDataItem::P_SLD_REAL), sld_real); EXPECT_EQ(material->SLDDataReal(), sld_real);
EXPECT_EQ(materialData->getItemValue(MaterialSLDDataItem::P_SLD_IMAG), sld_imag); EXPECT_EQ(material->SLDDataImag(), sld_imag);
} }
TEST_F(TestMaterialModel, cloneMaterial) TEST_F(TestMaterialModel, cloneMaterialRefractive)
{ {
std::unique_ptr<MaterialModel> model(new MaterialModel); std::unique_ptr<MaterialModel> model(new MaterialModel);
...@@ -69,10 +69,36 @@ TEST_F(TestMaterialModel, cloneMaterial) ...@@ -69,10 +69,36 @@ TEST_F(TestMaterialModel, cloneMaterial)
// checking name of cloned material // checking name of cloned material
EXPECT_EQ(material->itemName() + " (clone)", clonedMaterial->itemName()); EXPECT_EQ(material->itemName() + " (clone)", clonedMaterial->itemName());
EXPECT_EQ(material->isRefractive(), clonedMaterial->isRefractive());
EXPECT_EQ(material->refractiveDataDelta(), delta);
EXPECT_EQ(material->refractiveDataBeta(), beta);
}
TEST_F(TestMaterialModel, cloneMaterialSLD)
{
std::unique_ptr<MaterialModel> model(new MaterialModel);
EXPECT_EQ(model->rowCount(QModelIndex()), 0);
const double real(0.7), imag(0.5);
const QString name("MaterialName");
auto material = model->addSLDMaterial(name, real, imag);
const QString origIdentifier = material->identifier();
auto clonedMaterial = model->cloneMaterial(material->index());
EXPECT_EQ(model->rowCount(QModelIndex()), 2);
// clone should not change identifier of original material (as it once happened)
EXPECT_EQ(material->identifier(), origIdentifier);
auto materialData = clonedMaterial->getGroupItem(MaterialItem::P_MATERIAL_DATA); // cloned material should have different identifier
EXPECT_EQ(materialData->getItemValue(MaterialRefractiveDataItem::P_DELTA), delta); EXPECT_TRUE(clonedMaterial->identifier() != material->identifier());
EXPECT_EQ(materialData->getItemValue(MaterialRefractiveDataItem::P_BETA), beta);
// checking name of cloned material
EXPECT_EQ(material->itemName() + " (clone)", clonedMaterial->itemName());
EXPECT_EQ(material->isRefractive(), clonedMaterial->isRefractive());
EXPECT_EQ(material->SLDDataReal(), real);
EXPECT_EQ(material->SLDDataImag(), imag);
} }
//! Checks the method which returns MaterialItem from known identifier. //! Checks the method which returns MaterialItem from known identifier.
......
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