| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #include <gtest/gtest.h> |
| |
|
| | #include <QMetaType> |
| | #include <QString> |
| |
|
| | #include <App/Application.h> |
| | #include <Gui/MetaTypes.h> |
| |
|
| | #include <Mod/Material/App/MaterialManager.h> |
| | #include <Mod/Material/App/Model.h> |
| | #include <Mod/Material/App/ModelManager.h> |
| | #include <Mod/Material/App/ModelUuids.h> |
| |
|
| | |
| |
|
| | class TestMaterialValue : public ::testing::Test { |
| | protected: |
| | static void SetUpTestSuite() { |
| | } |
| | }; |
| |
|
| | TEST_F(TestMaterialValue, TestNoneType) |
| | { |
| | auto mat1 = Materials::MaterialValue(); |
| | EXPECT_EQ(mat1.getType(), Materials::MaterialValue::None); |
| | EXPECT_TRUE(mat1.isNull()); |
| | auto variant = mat1.getValue(); |
| | EXPECT_TRUE(variant.isNull()); |
| | EXPECT_FALSE(variant.canConvert<QString>()); |
| | EXPECT_TRUE(variant.toString().isNull()); |
| | EXPECT_TRUE(variant.toString().isEmpty()); |
| | EXPECT_EQ(variant.toString().size(), 0); |
| | } |
| |
|
| | TEST_F(TestMaterialValue, TestStringType) |
| | { |
| | auto mat1 = Materials::MaterialValue(Materials::MaterialValue::String); |
| | EXPECT_EQ(mat1.getType(), Materials::MaterialValue::String); |
| | EXPECT_TRUE(mat1.isNull()); |
| | auto variant = mat1.getValue(); |
| | EXPECT_TRUE(variant.isNull()); |
| | EXPECT_TRUE(variant.canConvert<QString>()); |
| | EXPECT_TRUE(variant.toString().isNull()); |
| | EXPECT_TRUE(variant.toString().isEmpty()); |
| | EXPECT_EQ(variant.toString().size(), 0); |
| | } |
| |
|
| | TEST_F(TestMaterialValue, TestBooleanType) |
| | { |
| | auto mat1 = Materials::MaterialValue(Materials::MaterialValue::Boolean); |
| | EXPECT_EQ(mat1.getType(), Materials::MaterialValue::Boolean); |
| | EXPECT_TRUE(mat1.isNull()); |
| | auto variant = mat1.getValue(); |
| | EXPECT_TRUE(variant.isNull()); |
| | EXPECT_TRUE(variant.canConvert<bool>()); |
| | EXPECT_FALSE(variant.toString().isNull()); |
| | EXPECT_FALSE(variant.toString().isEmpty()); |
| | EXPECT_EQ(variant.toString().size(), 5); |
| | EXPECT_EQ(variant.toString(), QStringLiteral("false")); |
| | EXPECT_EQ(variant.toBool(), false); |
| | } |
| |
|
| | TEST_F(TestMaterialValue, TestIntegerType) |
| | { |
| | auto mat1 = Materials::MaterialValue(Materials::MaterialValue::Integer); |
| | EXPECT_EQ(mat1.getType(), Materials::MaterialValue::Integer); |
| | EXPECT_TRUE(mat1.isNull()); |
| | auto variant = mat1.getValue(); |
| | EXPECT_TRUE(variant.isNull()); |
| | EXPECT_TRUE(variant.canConvert<int>()); |
| | EXPECT_FALSE(variant.toString().isNull()); |
| | EXPECT_FALSE(variant.toString().isEmpty()); |
| | EXPECT_EQ(variant.toString().size(), 1); |
| | EXPECT_EQ(variant.toString(), QStringLiteral("0")); |
| | EXPECT_EQ(variant.toInt(), 0); |
| | } |
| |
|
| | TEST_F(TestMaterialValue, TestFloatType) |
| | { |
| | auto mat1 = Materials::MaterialValue(Materials::MaterialValue::Float); |
| | EXPECT_EQ(mat1.getType(), Materials::MaterialValue::Float); |
| | EXPECT_TRUE(mat1.isNull()); |
| | auto variant = mat1.getValue(); |
| | EXPECT_TRUE(variant.isNull()); |
| | EXPECT_TRUE(variant.canConvert<float>()); |
| | EXPECT_FALSE(variant.toString().isNull()); |
| | EXPECT_FALSE(variant.toString().isEmpty()); |
| | EXPECT_EQ(variant.toString().size(), 1); |
| | EXPECT_EQ(variant.toString(), QStringLiteral("0")); |
| | EXPECT_EQ(variant.toFloat(), 0); |
| | } |
| |
|
| | TEST_F(TestMaterialValue, TestQuantityType) |
| | { |
| | auto mat1 = Materials::MaterialValue(Materials::MaterialValue::Quantity); |
| | EXPECT_EQ(mat1.getType(), Materials::MaterialValue::Quantity); |
| | EXPECT_TRUE(mat1.isNull()); |
| |
|
| | auto variant = mat1.getValue(); |
| | EXPECT_FALSE(variant.isNull()); |
| | EXPECT_TRUE(variant.canConvert<Base::Quantity>()); |
| | EXPECT_TRUE(variant.toString().isNull()); |
| | EXPECT_TRUE(variant.toString().isEmpty()); |
| | EXPECT_EQ(variant.toString().size(), 0); |
| | auto quantity = variant.value<Base::Quantity>(); |
| | EXPECT_FALSE(quantity.isValid()); |
| | EXPECT_EQ(quantity.getUserString(), "nan"); |
| | EXPECT_TRUE(std::isnan(quantity.getValue())); |
| |
|
| | |
| | auto mat2 = Materials::MaterialValue(mat1); |
| | EXPECT_EQ(mat2.getType(), Materials::MaterialValue::Quantity); |
| | EXPECT_TRUE(mat2.isNull()); |
| |
|
| | variant = mat2.getValue(); |
| | EXPECT_FALSE(variant.isNull()); |
| | EXPECT_TRUE(variant.canConvert<Base::Quantity>()); |
| | EXPECT_TRUE(variant.toString().isNull()); |
| | EXPECT_TRUE(variant.toString().isEmpty()); |
| | EXPECT_EQ(variant.toString().size(), 0); |
| | quantity = variant.value<Base::Quantity>(); |
| | EXPECT_FALSE(quantity.isValid()); |
| | EXPECT_EQ(quantity.getUserString(), "nan"); |
| | EXPECT_TRUE(std::isnan(quantity.getValue())); |
| | } |
| |
|
| | TEST_F(TestMaterialValue, TestListType) |
| | { |
| | auto mat1 = Materials::MaterialValue(Materials::MaterialValue::List); |
| | EXPECT_EQ(mat1.getType(), Materials::MaterialValue::List); |
| | EXPECT_TRUE(mat1.isNull()); |
| | auto variant = mat1.getValue(); |
| | EXPECT_TRUE(variant.value<QList<QVariant>>().isEmpty()); |
| | EXPECT_EQ(variant.value<QList<QVariant>>().size(), 0); |
| | EXPECT_FALSE(variant.isNull()); |
| | EXPECT_FALSE(variant.canConvert<QVariant>()); |
| | EXPECT_TRUE(variant.toString().isNull()); |
| | EXPECT_TRUE(variant.toString().isEmpty()); |
| | EXPECT_EQ(variant.toString().size(), 0); |
| | auto list = mat1.getList(); |
| | EXPECT_TRUE(list.isEmpty()); |
| | EXPECT_EQ(list.size(), 0); |
| | } |
| |
|
| | TEST_F(TestMaterialValue, TestArray2DType) |
| | { |
| | EXPECT_THROW(auto mat1 = Materials::MaterialValue(Materials::MaterialValue::Array2D), Materials::InvalidMaterialType); |
| |
|
| | auto mat2 = Materials::Array2D(); |
| | EXPECT_EQ(mat2.getType(), Materials::MaterialValue::Array2D); |
| | EXPECT_TRUE(mat2.isNull()); |
| | EXPECT_EQ(mat2.rows(), 0); |
| | } |
| |
|
| | TEST_F(TestMaterialValue, TestArray3DType) |
| | { |
| | EXPECT_THROW(auto mat1 = Materials::MaterialValue(Materials::MaterialValue::Array3D), Materials::InvalidMaterialType); |
| |
|
| | auto mat2 = Materials::Array3D(); |
| | mat2.setColumns(2); |
| | EXPECT_EQ(mat2.getType(), Materials::MaterialValue::Array3D); |
| | EXPECT_TRUE(mat2.isNull()); |
| |
|
| | EXPECT_EQ(mat2.depth(), 0); |
| | EXPECT_EQ(mat2.rows(), 0); |
| | EXPECT_EQ(mat2.rows(0), 0); |
| | EXPECT_THROW(mat2.rows(1), Materials::InvalidIndex); |
| |
|
| | Base::Quantity quantity; |
| | quantity.setInvalid(); |
| |
|
| | EXPECT_EQ(mat2.addDepth(0, quantity), 0); |
| | EXPECT_EQ(mat2.depth(), 1); |
| | EXPECT_EQ(mat2.rows(0), 0); |
| | EXPECT_THROW(mat2.rows(1), Materials::InvalidIndex); |
| |
|
| | EXPECT_EQ(mat2.addDepth(quantity), 1); |
| | EXPECT_EQ(mat2.depth(), 2); |
| | EXPECT_EQ(mat2.rows(1), 0); |
| |
|
| | EXPECT_THROW(mat2.addDepth(99, quantity), Materials::InvalidIndex); |
| | EXPECT_EQ(mat2.addDepth(2, quantity), 2); |
| | EXPECT_EQ(mat2.depth(), 3); |
| | EXPECT_EQ(mat2.rows(2), 0); |
| |
|
| | |
| | auto row = std::make_shared<QList<Base::Quantity>>(); |
| | row->push_back(quantity); |
| | row->push_back(quantity); |
| |
|
| | EXPECT_EQ(mat2.rows(0), 0); |
| | EXPECT_EQ(mat2.rows(1), 0); |
| | EXPECT_EQ(mat2.rows(2), 0); |
| |
|
| | mat2.addRow(0, row); |
| | EXPECT_EQ(mat2.rows(0), 1); |
| | EXPECT_EQ(mat2.rows(1), 0); |
| | EXPECT_EQ(mat2.rows(2), 0); |
| |
|
| | mat2.addRow(1, row); |
| | EXPECT_EQ(mat2.rows(0), 1); |
| | EXPECT_EQ(mat2.rows(1), 1); |
| | EXPECT_EQ(mat2.rows(2), 0); |
| |
|
| | mat2.addRow(2, row); |
| | EXPECT_EQ(mat2.rows(0), 1); |
| | EXPECT_EQ(mat2.rows(1), 1); |
| | EXPECT_EQ(mat2.rows(2), 1); |
| |
|
| | EXPECT_EQ(mat2.currentDepth(), 0); |
| | mat2.addRow(row); |
| | EXPECT_EQ(mat2.rows(0), 2); |
| | EXPECT_EQ(mat2.rows(1), 1); |
| | EXPECT_EQ(mat2.rows(2), 1); |
| |
|
| | mat2.setCurrentDepth(2); |
| | EXPECT_EQ(mat2.currentDepth(), 2); |
| | mat2.addRow(row); |
| | EXPECT_EQ(mat2.rows(0), 2); |
| | EXPECT_EQ(mat2.rows(1), 1); |
| | EXPECT_EQ(mat2.rows(2), 2); |
| |
|
| | 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("32 C")); |
| |
|
| | 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("9.8 m/s/s")); |
| | EXPECT_EQ(mat2.getDepthValue(2), Base::Quantity::parse("32 C")); |
| |
|
| | 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("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")); |
| |
|
| | |
| | EXPECT_THROW(mat2.getValue(2, 0), Materials::InvalidIndex); |
| | EXPECT_NO_THROW(mat2.getValue(0, 0)); |
| | EXPECT_FALSE(mat2.getValue(0, 0).isValid()); |
| | EXPECT_FALSE(mat2.getValue(0, 1).isValid()); |
| |
|
| | |
| | mat2.setValue(0, 0, Base::Quantity::parse("120 MPa")); |
| | EXPECT_TRUE(mat2.getValue(0, 0).isValid()); |
| | 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("32 C")), Materials::InvalidIndex); |
| | } |
| |
|
| | |
| |
|