Base: Quantity: return std::string

This commit is contained in:
Ladislav Michl
2024-07-13 13:07:27 +02:00
committed by Yorik van Havre
parent 9f7218ac75
commit 0b3adee2ab
58 changed files with 573 additions and 592 deletions

View File

@@ -44,8 +44,8 @@ protected:
}
Base::Quantity parse_quantity_text_as_quantity(const char* quantity_text) {
auto quantity_qstr = QString::fromStdString(std::string(quantity_text));
auto quantity_result = Base::Quantity::parse(quantity_qstr);
auto quantity_str = std::string(quantity_text);
auto quantity_result = Base::Quantity::parse(quantity_str);
return quantity_result;
}
@@ -95,8 +95,8 @@ TEST_F(ExpressionParserTest, functionPARSEQUANT)
EXPECT_EQ(expression_result, quantity_result) << "mismatch:"
" expression_text='" + std::string(expression_text) + "'"
" quantity_text='" + std::string(quantity_text) + "'"
" expression_representation='" + expression_result.getUserString().toStdString() + "'"
" quantity_representation='" + quantity_result.getUserString().toStdString() + "'"
" expression_representation='" + expression_result.getUserString() + "'"
" quantity_representation='" + quantity_result.getUserString() + "'"
;
}

View File

@@ -82,7 +82,7 @@ TEST_F(PropertyExpressionEngineTest, executeCrossPropertyReference)
auto target_value = target_quant.getValue();
auto target_unit = target_quant.getUnit().getString();
auto verify_quant = Base::Quantity::parse(QString::fromStdString(target_text));
auto verify_quant = Base::Quantity::parse(target_text);
EXPECT_EQ(target_quant, verify_quant) << ""
"expecting equal: source_text='" + source_text + "' target_text='" + target_text + "'"

View File

@@ -19,12 +19,10 @@ TEST(BaseQuantity, TestValid)
TEST(BaseQuantity, TestParse)
{
Base::Quantity q1 = Base::Quantity::parse(QString::fromLatin1("1,234 kg"));
Base::Quantity q1 = Base::Quantity::parse("1,234 kg");
EXPECT_EQ(q1, Base::Quantity(1.2340, Base::Unit::Mass));
EXPECT_THROW(
boost::ignore_unused(Base::Quantity::parse(QString::fromLatin1("1,234,500.12 kg"))),
Base::ParserError);
EXPECT_THROW(boost::ignore_unused(Base::Quantity::parse("1,234,500.12 kg")), Base::ParserError);
}
TEST(BaseQuantity, TestDim)
@@ -74,10 +72,10 @@ TEST(BaseQuantity, TestPow3DIV2)
TEST(BaseQuantity, TestString)
{
Base::Quantity q1 {2, QString::fromLatin1("kg*m/s^2")};
Base::Quantity q1 {2, "kg*m/s^2"};
EXPECT_EQ(q1.getUnit(), Base::Unit::Force);
Base::Quantity q2 {2, QString::fromLatin1("kg*m^2/s^2")};
Base::Quantity q2 {2, "kg*m^2/s^2"};
EXPECT_EQ(q2.getUnit(), Base::Unit::Work);
}
@@ -91,7 +89,7 @@ TEST(BaseQuantity, TestCopy)
TEST(BaseQuantity, TestEqual)
{
Base::Quantity q1 {1.0, Base::Unit::Force};
Base::Quantity q2 {1.0, QString::fromLatin1("kg*mm/s^2")};
Base::Quantity q2 {1.0, "kg*mm/s^2"};
EXPECT_EQ(q1 == q1, true);
EXPECT_EQ(q1 == q2, true);
@@ -100,7 +98,7 @@ TEST(BaseQuantity, TestEqual)
TEST(BaseQuantity, TestNotEqual)
{
Base::Quantity q1 {1.0, Base::Unit::Force};
Base::Quantity q2 {2.0, QString::fromLatin1("kg*m/s^2")};
Base::Quantity q2 {2.0, "kg*m/s^2"};
Base::Quantity q3 {1.0, Base::Unit::Work};
EXPECT_EQ(q1 != q2, true);
@@ -110,7 +108,7 @@ TEST(BaseQuantity, TestNotEqual)
TEST(BaseQuantity, TestLessOrGreater)
{
Base::Quantity q1 {1.0, Base::Unit::Force};
Base::Quantity q2 {2.0, QString::fromLatin1("kg*m/s^2")};
Base::Quantity q2 {2.0, "kg*m/s^2"};
Base::Quantity q3 {2.0, Base::Unit::Work};
EXPECT_EQ(q1 < q2, true);
@@ -223,9 +221,9 @@ TEST_F(Quantity, TestSafeUserString)
format.precision = 1;
quantity.setFormat(format);
QString result = quantity.getSafeUserString();
std::string result = quantity.getSafeUserString();
EXPECT_EQ(result.toStdString(), "1 mm");
EXPECT_EQ(result, "1 mm");
Base::UnitsApi::setSchema(Base::UnitSystem::Imperial1);
@@ -234,13 +232,13 @@ TEST_F(Quantity, TestSafeUserString)
result = quantity.getSafeUserString();
EXPECT_EQ(result.toStdString(), "1.0 \\'");
EXPECT_EQ(result, "1.0 \\'");
quantity = Base::Quantity {25.4, Base::Unit::Length};
quantity.setFormat(format);
result = quantity.getSafeUserString();
EXPECT_EQ(result.toStdString(), "1.0 \\\"");
EXPECT_EQ(result, "1.0 \\\"");
}
// NOLINTEND

View File

@@ -32,19 +32,19 @@ private Q_SLOTS:
void test_SimpleBaseUnit() // NOLINT
{
auto result = qsb->valueFromText("1mm");
QCOMPARE(result, Base::Quantity(1, QLatin1String("mm")));
QCOMPARE(result, Base::Quantity(1, "mm"));
}
void test_UnitInNumerator() // NOLINT
{
auto result = qsb->valueFromText("1mm/10");
QCOMPARE(result, Base::Quantity(0.1, QLatin1String("mm")));
QCOMPARE(result, Base::Quantity(0.1, "mm"));
}
void test_UnitInDenominator() // NOLINT
{
auto result = qsb->valueFromText("1/10mm");
QCOMPARE(result, Base::Quantity(0.1, QLatin1String("mm")));
QCOMPARE(result, Base::Quantity(0.1, "mm"));
}
void test_KeepFormat() // NOLINT

View File

@@ -130,7 +130,7 @@ TEST_F(TestMaterialValue, TestQuantityType)
EXPECT_EQ(variant.toString().size(), 0);
auto quantity = variant.value<Base::Quantity>();
EXPECT_FALSE(quantity.isValid());
EXPECT_EQ(quantity.getUserString(), QString::fromStdString("nan "));
EXPECT_EQ(quantity.getUserString(), "nan ");
EXPECT_TRUE(std::isnan(quantity.getValue()));
// Test a copy
@@ -146,7 +146,7 @@ TEST_F(TestMaterialValue, TestQuantityType)
EXPECT_EQ(variant.toString().size(), 0);
quantity = variant.value<Base::Quantity>();
EXPECT_FALSE(quantity.isValid());
EXPECT_EQ(quantity.getUserString(), QString::fromStdString("nan "));
EXPECT_EQ(quantity.getUserString(), "nan ");
EXPECT_TRUE(std::isnan(quantity.getValue()));
}
@@ -246,27 +246,27 @@ TEST_F(TestMaterialValue, TestArray3DType)
EXPECT_EQ(mat2.rows(1), 1);
EXPECT_EQ(mat2.rows(2), 2);
quantity = Base::Quantity::parse(QString::fromStdString("32 C"));
quantity = Base::Quantity::parse("32 C");
mat2.setDepthValue(quantity);
EXPECT_FALSE(mat2.getDepthValue(0).isValid());
EXPECT_FALSE(mat2.getDepthValue(1).isValid());
EXPECT_TRUE(mat2.getDepthValue(2).isValid());
EXPECT_EQ(mat2.getDepthValue(2), Base::Quantity::parse(QString::fromStdString("32 C")));
EXPECT_EQ(mat2.getDepthValue(2), Base::Quantity::parse("32 C"));
mat2.setDepthValue(0, Base::Quantity::parse(QString::fromStdString("9.8 m/s/s")));
mat2.setDepthValue(0, Base::Quantity::parse("9.8 m/s/s"));
EXPECT_TRUE(mat2.getDepthValue(0).isValid());
EXPECT_FALSE(mat2.getDepthValue(1).isValid());
EXPECT_TRUE(mat2.getDepthValue(2).isValid());
EXPECT_EQ(mat2.getDepthValue(0), Base::Quantity::parse(QString::fromStdString("9.8 m/s/s")));
EXPECT_EQ(mat2.getDepthValue(2), Base::Quantity::parse(QString::fromStdString("32 C")));
EXPECT_EQ(mat2.getDepthValue(0), Base::Quantity::parse("9.8 m/s/s"));
EXPECT_EQ(mat2.getDepthValue(2), Base::Quantity::parse("32 C"));
mat2.setDepthValue(1, Base::Quantity::parse(QString::fromStdString("120 MPa")));
mat2.setDepthValue(1, Base::Quantity::parse("120 MPa"));
EXPECT_TRUE(mat2.getDepthValue(0).isValid());
EXPECT_TRUE(mat2.getDepthValue(1).isValid());
EXPECT_TRUE(mat2.getDepthValue(2).isValid());
EXPECT_EQ(mat2.getDepthValue(0), Base::Quantity::parse(QString::fromStdString("9.8 m/s/s")));
EXPECT_EQ(mat2.getDepthValue(1), Base::Quantity::parse(QString::fromStdString("120 MPa")));
EXPECT_EQ(mat2.getDepthValue(2), Base::Quantity::parse(QString::fromStdString("32 C")));
EXPECT_EQ(mat2.getDepthValue(0), Base::Quantity::parse("9.8 m/s/s"));
EXPECT_EQ(mat2.getDepthValue(1), Base::Quantity::parse("120 MPa"));
EXPECT_EQ(mat2.getDepthValue(2), Base::Quantity::parse("32 C"));
// Rows are currently empty
EXPECT_THROW(mat2.getValue(2, 0), Materials::InvalidIndex);
@@ -275,12 +275,11 @@ TEST_F(TestMaterialValue, TestArray3DType)
EXPECT_FALSE(mat2.getValue(0, 1).isValid());
// set to a valid quantity
mat2.setValue(0, 0, Base::Quantity::parse(QString::fromStdString("120 MPa")));
mat2.setValue(0, 0, Base::Quantity::parse("120 MPa"));
EXPECT_TRUE(mat2.getValue(0, 0).isValid());
mat2.setValue(0, 1, Base::Quantity::parse(QString::fromStdString("9.8 m/s/s")));
mat2.setValue(0, 1, Base::Quantity::parse("9.8 m/s/s"));
EXPECT_TRUE(mat2.getValue(0, 1).isValid());
EXPECT_THROW(mat2.setValue(0, 2, Base::Quantity::parse(QString::fromStdString("32 C"))), Materials::InvalidIndex);
EXPECT_THROW(mat2.setValue(0, 2, Base::Quantity::parse("32 C")), Materials::InvalidIndex);
}
// clang-format on

View File

@@ -221,12 +221,11 @@ TEST_F(TestMaterial, TestAddAppearanceModel)
EXPECT_EQ(models->size(), 0);
}
QString parseQuantity(const char *string)
QString parseQuantity(const std::string& value)
{
QString value = QString::fromStdString(string);
auto quantity = Base::Quantity::parse(value);
quantity.setFormat(Materials::MaterialValue::getQuantityFormat());
return quantity.getUserString();
return QString::fromStdString(quantity.getUserString());
}
TEST_F(TestMaterial, TestCalculiXSteel)
@@ -343,12 +342,11 @@ TEST_F(TestMaterial, TestCalculiXSteel)
EXPECT_EQ(steel->getAppearanceValue(QString::fromStdString("SpecularColor")), QString::fromStdString("(0.9800, 0.9800, 0.9800, 1.0)"));
EXPECT_DOUBLE_EQ(steel->getAppearanceValue(QString::fromStdString("Transparency")).toDouble(), 0.0);
EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("Density")).getUserString(), parseQuantity("7900.00 kg/m^3"));
EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("YoungsModulus")).getUserString(), parseQuantity("210.00 GPa"));
EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("SpecificHeat")).getUserString(), parseQuantity("590.00 J/kg/K"));
EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("ThermalConductivity")).getUserString(), parseQuantity("43.00 W/m/K"));
EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("ThermalExpansionCoefficient")).getUserString(), parseQuantity("12.00 µm/m/K"));
EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("Density")).getUserString(), parseQuantity("7900.00 kg/m^3").toStdString());
EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("YoungsModulus")).getUserString(), parseQuantity("210.00 GPa").toStdString());
EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("SpecificHeat")).getUserString(), parseQuantity("590.00 J/kg/K").toStdString());
EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("ThermalConductivity")).getUserString(), parseQuantity("43.00 W/m/K").toStdString());
EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("ThermalExpansionCoefficient")).getUserString(), parseQuantity("12.00 µm/m/K").toStdString());
}
TEST_F(TestMaterial, TestColumns)