Salome HOME
Cosmetics. Move XML files to the separate folder inside a corresponding project in VS.
[modules/shaper.git] / src / PythonAPI / Test / TestFeatures.py
index e043fe9dade760cea0b8b1080b7994ec9e6381ad..f896c6527c4d5d487fe1bad6ebf8848315a2c684 100644 (file)
@@ -1,8 +1,27 @@
+# Copyright (C) 2014-2020  CEA/DEN, EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
 import unittest
 
 import ModelAPI
 
-import model
+from salome.shaper import model
 
 #-----------------------------------------------------------------------------
 # Fixtures
@@ -18,6 +37,9 @@ class FeaturesFixture(unittest.TestCase):
 
     def tearDown(self):
         model.end()
+        # assert(model.checkPythonDump())
+        # This test checks creation of High API classes from low-level.
+        # It does not set any attributes, so features invalid, and dump also invalid.
         model.reset()
 
 #-----------------------------------------------------------------------------
@@ -25,49 +47,68 @@ class FeaturesFixture(unittest.TestCase):
 
 class FeaturesTestCase(FeaturesFixture):
 
-    def test_assert_error_on_empty_args(self):
-        features = [
-            "addPoint", "addAxis", "addPlane",
-            "addImport", "exportToFile",
-            "addAddition", "addSubtraction", "addIntersection",
-            "addExtrusion", "addExtrusionCut", "addExtrusionFuse", "addExtrusionSketch",
-            "addRevolution", "addRevolutionCut", "addRevolutionFuse", "addRevolutionSketch",
-            "addPlacement", "addRotation", "addTranslation",
-            "addGroup",
-            "addParameter",
-            ]
-        for name in features:
-            try:
-                with self.assertRaises(AssertionError):
-                    feature = getattr(model, name)(self.part)
-            except AssertionError as e:
-                self.fail("%s does not check empty args" % name)
+    # def test_assert_error_on_empty_args(self):
+    #     features = [
+    #         # Implemented in C++, add* without arguments doesn't exist
+    #         # "addPoint", "addPlane",
+    #         # "addImport", "exportToFile",
+    #
+    #         "addAxis",
+    #         "addCut", "addFuse", "addCommon",
+    #         "addExtrusion",
+    #         # "addExtrusionCut", "addExtrusionFuse",
+    #         "addRevolution",
+    #         # "addRevolutionCut", "addRevolutionFuse",
+    #         "addPlacement", "addRotation", "addTranslation",
+    #         "addGroup",
+    #         "addParameter",
+    #         ]
+    #     for name in features:
+    #         try:
+    #             with self.assertRaises(AssertionError):
+    #                 feature = getattr(model, name)(self.part)
+    #         except AssertionError as e:
+    #             self.fail("%s does not check empty args" % name)
+
+    def test_addPoint(self):
+        model.addPoint(self.part, 10, "20", "x + 30")
 
     def test_initialize_without_attributes(self):
-        model.construction.axis.Axis(self.part.addFeature("Axis"))
-        model.construction.plane.Plane(self.part.addFeature("Plane"))
-        model.construction.point.Point(self.part.addFeature("Point"))
-
-        model.exchange.Import(self.part.addFeature("Import"))
-        model.exchange.Export(self.part.addFeature("Export"))
-
-        model.features.boolean.Boolean(self.part.addFeature("Boolean"))
-        model.features.extrusion.Extrusion(self.part.addFeature("Extrusion"))
-        model.features.extrusion_boolean.ExtrusionBoolean(self.part.addFeature("ExtrusionCut"))
-        model.features.extrusion_boolean.ExtrusionBoolean(self.part.addFeature("ExtrusionFuse"))
-        model.features.extrusion_sketch.ExtrusionSketch(self.part.addFeature("ExtrusionSketch"))
-        model.features.revolution.Revolution(self.part.addFeature("Revolution"))
-        model.features.revolution_boolean.RevolutionBoolean(self.part.addFeature("RevolutionCut"))
-        model.features.revolution_boolean.RevolutionBoolean(self.part.addFeature("RevolutionFuse"))
-        model.features.revolution_sketch.RevolutionSketch(self.part.addFeature("RevolutionSketch"))
-        model.features.placement.Placement(self.part.addFeature("Placement"))
-        model.features.rotation.Rotation(self.part.addFeature("Rotation"))
-        model.features.translation.Translation(self.part.addFeature("Translation"))
-        model.features.group.Group(self.part.addFeature("Group"))
-
-        model.parameter.Parameter(self.part.addFeature("Parameter"))
+        import ConstructionAPI
+        ConstructionAPI.ConstructionAPI_Axis(self.part.addFeature("Axis"))
+        ConstructionAPI.ConstructionAPI_Plane(self.part.addFeature("Plane"))
+        ConstructionAPI.ConstructionAPI_Point(self.part.addFeature("Point"))
+
+        import ExchangeAPI
+        ExchangeAPI.ExchangeAPI_Import(self.part.addFeature("Import"))
+
+        import FeaturesAPI
+        FeaturesAPI.FeaturesAPI_BooleanCut(self.part.addFeature("BooleanCut"))
+        FeaturesAPI.FeaturesAPI_BooleanFuse(self.part.addFeature("BooleanFuse"))
+        FeaturesAPI.FeaturesAPI_BooleanCommon(self.part.addFeature("BooleanCommon"))
+        FeaturesAPI.FeaturesAPI_BooleanFill(self.part.addFeature("BooleanFill"))
+        FeaturesAPI.FeaturesAPI_BooleanSmash(self.part.addFeature("BooleanSmash"))
+        FeaturesAPI.FeaturesAPI_Extrusion(self.part.addFeature("Extrusion"))
+        FeaturesAPI.FeaturesAPI_ExtrusionCut(self.part.addFeature("ExtrusionCut"))
+        FeaturesAPI.FeaturesAPI_ExtrusionFuse(self.part.addFeature("ExtrusionFuse"))
+        FeaturesAPI.FeaturesAPI_Revolution(self.part.addFeature("Revolution"))
+        FeaturesAPI.FeaturesAPI_RevolutionCut(self.part.addFeature("RevolutionCut"))
+        FeaturesAPI.FeaturesAPI_RevolutionFuse(self.part.addFeature("RevolutionFuse"))
+        FeaturesAPI.FeaturesAPI_Placement(self.part.addFeature("Placement"))
+        FeaturesAPI.FeaturesAPI_Rotation(self.part.addFeature("Rotation"))
+        FeaturesAPI.FeaturesAPI_Translation(self.part.addFeature("Translation"))
+
+        import CollectionAPI
+        CollectionAPI.CollectionAPI_Group(self.part.addFeature("Group"))
+
+        import PrimitivesAPI
+        PrimitivesAPI.PrimitivesAPI_Box(self.part.addFeature("Box"))
+
+        import ParametersAPI
+        ParametersAPI.ParametersAPI_Parameter(self.part.addFeature("Parameter"))
 
 #-----------------------------------------------------------------------------
 
 if __name__ == "__main__":
-    unittest.main()
+    test_program = unittest.main(exit=False)
+    assert test_program.result.wasSuccessful(), "Test failed"