From fbfb6dd1094956ba45d2161dbbee3fc608dfa039 Mon Sep 17 00:00:00 2001 From: Gennady Pospelov <g.pospelov@fz-juelich.de> Date: Thu, 21 Jun 2018 13:30:14 +0200 Subject: [PATCH] More tests: moving middle layer on top --- Tests/UnitTests/GUI/TestMultiLayerItem.h | 85 ++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/Tests/UnitTests/GUI/TestMultiLayerItem.h b/Tests/UnitTests/GUI/TestMultiLayerItem.h index e276d75a97f..3e4088d0a02 100644 --- a/Tests/UnitTests/GUI/TestMultiLayerItem.h +++ b/Tests/UnitTests/GUI/TestMultiLayerItem.h @@ -13,6 +13,7 @@ public: TestMultiLayerItem::~TestMultiLayerItem() = default; //! Testing layer appearance (enabled, disabled) in a MultiLayer made of two default layers. +//! In two layer system top and bottom layers should have disabled thickness and roughness. TEST_F(TestMultiLayerItem, test_twoLayerSystem) { @@ -40,3 +41,87 @@ TEST_F(TestMultiLayerItem, test_twoLayerSystem) EXPECT_EQ(bottom->getGroupItem(LayerItem::P_ROUGHNESS)->modelType(), Constants::LayerZeroRoughnessType); } + +//! Testing layer appearance (enabled, disabled) in a MultiLayer made of three default layers. +//! In three layer system middle layer's thickness/roughness should be enabled. + +TEST_F(TestMultiLayerItem, test_threeLayerSystem) +{ + SampleModel model; + + auto multilayer = model.insertNewItem(Constants::MultiLayerType); + auto top = model.insertNewItem(Constants::LayerType, model.indexOfItem(multilayer)); + auto middle = model.insertNewItem(Constants::LayerType, model.indexOfItem(multilayer)); + auto bottom = model.insertNewItem(Constants::LayerType, model.indexOfItem(multilayer)); + + // Thickness property should be disabled for top and bottom layers and enabled for middle + EXPECT_FALSE(top->getItem(LayerItem::P_THICKNESS)->isEnabled()); + EXPECT_TRUE(middle->getItem(LayerItem::P_THICKNESS)->isEnabled()); + EXPECT_FALSE(bottom->getItem(LayerItem::P_THICKNESS)->isEnabled()); + + // Thickness value should be 0.0 for top and bottom layers + EXPECT_EQ(top->getItemValue(LayerItem::P_THICKNESS).toDouble(), 0.0); + EXPECT_EQ(middle->getItemValue(LayerItem::P_THICKNESS).toDouble(), 0.0); + EXPECT_EQ(bottom->getItemValue(LayerItem::P_THICKNESS).toDouble(), 0.0); + + // Roughness group property should be disabled for top, and enabled for other layers + EXPECT_FALSE(top->getItem(LayerItem::P_ROUGHNESS)->isEnabled()); + EXPECT_TRUE(middle->getItem(LayerItem::P_ROUGHNESS)->isEnabled()); + EXPECT_TRUE(bottom->getItem(LayerItem::P_ROUGHNESS)->isEnabled()); + + // Default roughness should be "LayerZeroRoughness" + EXPECT_EQ(top->getGroupItem(LayerItem::P_ROUGHNESS)->modelType(), + Constants::LayerZeroRoughnessType); + EXPECT_EQ(middle->getGroupItem(LayerItem::P_ROUGHNESS)->modelType(), + Constants::LayerZeroRoughnessType); + EXPECT_EQ(bottom->getGroupItem(LayerItem::P_ROUGHNESS)->modelType(), + Constants::LayerZeroRoughnessType); +} + +//! Testing middle layer appearance when it is moved to the top. +//! In three layer system, the moving of middle layer on top should lead to the disabling +//! of roughness/thickness. + +TEST_F(TestMultiLayerItem, test_movingMiddleLayerOnTop) +{ + SampleModel model; + + auto multilayer = model.insertNewItem(Constants::MultiLayerType); + auto top = model.insertNewItem(Constants::LayerType, model.indexOfItem(multilayer)); + auto middle = model.insertNewItem(Constants::LayerType, model.indexOfItem(multilayer)); + auto bottom = model.insertNewItem(Constants::LayerType, model.indexOfItem(multilayer)); + + const double thickness = 10.0; + middle->setItemValue(LayerItem::P_THICKNESS, thickness); + + // Thickness property should be disabled for top and bottom layers and enabled for middle + EXPECT_FALSE(top->getItem(LayerItem::P_THICKNESS)->isEnabled()); + EXPECT_TRUE(middle->getItem(LayerItem::P_THICKNESS)->isEnabled()); + EXPECT_FALSE(bottom->getItem(LayerItem::P_THICKNESS)->isEnabled()); + + // Roughness group property should be disabled for top, and enabled for other layers + EXPECT_FALSE(top->getItem(LayerItem::P_ROUGHNESS)->isEnabled()); + EXPECT_TRUE(middle->getItem(LayerItem::P_ROUGHNESS)->isEnabled()); + EXPECT_TRUE(bottom->getItem(LayerItem::P_ROUGHNESS)->isEnabled()); + + // Thickness value should be 0.0 for top and bottom layers + EXPECT_EQ(top->getItemValue(LayerItem::P_THICKNESS).toDouble(), 0.0); + EXPECT_EQ(middle->getItemValue(LayerItem::P_THICKNESS).toDouble(), thickness); + EXPECT_EQ(bottom->getItemValue(LayerItem::P_THICKNESS).toDouble(), 0.0); + + // Moving middle layer to top + model.moveItem(middle, multilayer, 0, MultiLayerItem::T_LAYERS); + // checking that middle is top now, and top layer is middle now + EXPECT_EQ(middle, multilayer->getChildrenOfType(Constants::LayerType).at(0)); + EXPECT_EQ(top, multilayer->getChildrenOfType(Constants::LayerType).at(1)); + + // Thickness and roughness of middle layer should be disabled now + EXPECT_FALSE(middle->getItem(LayerItem::P_THICKNESS)->isEnabled()); + EXPECT_FALSE(middle->getItem(LayerItem::P_ROUGHNESS)->isEnabled()); + + // Thickness and roughness of former top layer should be enabled now + EXPECT_TRUE(top->getItem(LayerItem::P_THICKNESS)->isEnabled()); + EXPECT_TRUE(top->getItem(LayerItem::P_ROUGHNESS)->isEnabled()); + +} + -- GitLab