]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
WIP Test.py files + test on store()
authorNicolas RECHATIN <nicolas.rechatin@cea.fr>
Fri, 23 Jul 2021 10:08:20 +0000 (12:08 +0200)
committerNicolas RECHATIN <nicolas.rechatin@cea.fr>
Fri, 23 Jul 2021 10:08:20 +0000 (12:08 +0200)
src/ModelAPI/ModelAPI_ResultBody.cpp
src/ModelAPI/ModelAPI_ResultBody.h
src/ModelAPI/ModelAPI_ResultMeta.cpp
src/ModelAPI/ModelAPI_ResultMeta.h
src/ModelAPI/ModelAPI_ResultVolume.cpp
src/ModelAPI/ModelAPI_ResultVolume.h
src/OperaAPI/OperaAPI_addVolume.cpp
src/OperaAPI/OperaAPI_addVolume.h
src/OperaPlugin/Test/TestAddVolume.py [new file with mode: 0644]
src/OperaPlugin/tests.set [new file with mode: 0644]

index 0d88bef99579d471301488268d247a9d9606d629..72032d980c46ff894241338092feee845a49dfd8 100644 (file)
 
 #include "ModelAPI_ResultBody.h"
 
+#include <ModelAPI_BodyBuilder.h>
+#include <Events_Loop.h>
+#include <ModelAPI_Events.h>
+
 ModelAPI_ResultBody::ModelAPI_ResultBody() {}
 
 ModelAPI_ResultBody::~ModelAPI_ResultBody() {}
@@ -34,3 +38,17 @@ void ModelAPI_ResultBody::setDisplayed(const bool theDisplay)
   for (int i = 0; i < numberOfSubs(); i++)
     subResult(i)->setDisplayed(theDisplay);
 }
+
+void ModelAPI_ResultBody::store(const GeomShapePtr& theShape,
+                                const bool theIsStoreSameShapes)
+{
+  myBuilder->store(theShape, theIsStoreSameShapes);
+  myConnect = ConnectionNotComputed;
+
+  static Events_Loop* aLoop = Events_Loop::loop();
+  static Events_ID aRedispEvent = aLoop->eventByName(EVENT_OBJECT_TO_REDISPLAY);
+  static const ModelAPI_EventCreator* aECreator = ModelAPI_EventCreator::get();
+  aECreator->sendUpdated(data()->owner(), aRedispEvent);
+
+  updateSubs(theShape);
+}
index 53cd191097e31ee7d12ec50aeaf8b517eacbf4c4..f058378b3f09c4b1089d74c289ed77e3584dbb51 100644 (file)
@@ -44,6 +44,13 @@ class ModelAPI_ResultBody : public ModelAPI_ResultMeta
   public:
     MODELAPI_EXPORT virtual ~ModelAPI_ResultBody();
 
+    /// \brief Stores the shape (called by the execution method).
+    /// param[in] theShape shape to store.
+    /// param[in] theIsStoreSameShapes if false stores reference to the same shape
+    ///                                if it is already in document.
+    MODELAPI_EXPORT virtual void store(const GeomShapePtr& theShape,
+                                      const bool theIsStoreSameShapes = true);
+
     // /// Returns the group identifier of this result
     MODELAPI_EXPORT virtual std::string groupName();
 
index 337f8f488c689eeb75c92061b3147091b112ed3d..6c313d301ff18b5aca02cd92f2710f7cc7efcc45 100644 (file)
@@ -33,20 +33,6 @@ ModelAPI_ResultMeta::~ModelAPI_ResultMeta()
 {
 }
 
-void ModelAPI_ResultMeta::store(const GeomShapePtr& theShape,
-                                const bool theIsStoreSameShapes)
-{
-  myBuilder->store(theShape, theIsStoreSameShapes);
-  myConnect = ConnectionNotComputed;
-
-  static Events_Loop* aLoop = Events_Loop::loop();
-  static Events_ID aRedispEvent = aLoop->eventByName(EVENT_OBJECT_TO_REDISPLAY);
-  static const ModelAPI_EventCreator* aECreator = ModelAPI_EventCreator::get();
-  aECreator->sendUpdated(data()->owner(), aRedispEvent);
-
-  updateSubs(theShape);
-}
-
 void ModelAPI_ResultMeta::storeGenerated(const GeomShapePtr& theFromShape,
                                          const GeomShapePtr& theToShape)
 {
index 56bfb788f8a430d37da56911ed72add249d737c8..59633e54e20b8ab1509cd84f5815a0ccf0900e57 100644 (file)
@@ -76,7 +76,7 @@ public:
   /// param[in] theIsStoreSameShapes if false stores reference to the same shape
   ///                                if it is already in document.
   MODELAPI_EXPORT virtual void store(const GeomShapePtr& theShape,
-                                     const bool theIsStoreSameShapes = true);
+                                     const bool theIsStoreSameShapes = true) = 0;
 
   /// Stores the generated shape (called by the execution method).
   MODELAPI_EXPORT virtual void storeGenerated(const GeomShapePtr& theFromShape,
index 99175e884e210e0c49b8c533a5004257a5ce4d83..7994fa64eef8f31907b90794133276448fd83436 100644 (file)
 
 #include "ModelAPI_ResultVolume.h"
 
+#include <ModelAPI_BodyBuilder.h>
+#include <Events_Loop.h>
+#include <ModelAPI_Events.h>
+
 ModelAPI_ResultVolume::ModelAPI_ResultVolume() {}
 
 ModelAPI_ResultVolume::~ModelAPI_ResultVolume() {}
@@ -34,3 +38,17 @@ void ModelAPI_ResultVolume::setDisplayed(const bool theDisplay)
   for (int i = 0; i < numberOfSubs(); i++)
     subResult(i)->setDisplayed(theDisplay);
 }
+
+void ModelAPI_ResultVolume::store(const GeomShapePtr& theShape,
+                                const bool theIsStoreSameShapes)
+{
+  myBuilder->store(theShape, theIsStoreSameShapes);
+  myConnect = ConnectionNotComputed;
+
+  static Events_Loop* aLoop = Events_Loop::loop();
+  static Events_ID aRedispEvent = aLoop->eventByName(EVENT_OBJECT_TO_REDISPLAY);
+  static const ModelAPI_EventCreator* aECreator = ModelAPI_EventCreator::get();
+  aECreator->sendUpdated(data()->owner(), aRedispEvent);
+
+  updateSubs(theShape);
+}
index e8c0cd2761ce92919339ea59dc1f2168160e7710..23f65c55731406894f020e15701abe9f79ce4146 100644 (file)
@@ -36,6 +36,13 @@ class ModelAPI_ResultVolume : public ModelAPI_ResultMeta
   public:
     MODELAPI_EXPORT virtual ~ModelAPI_ResultVolume();
 
+    /// \brief Stores the shape (called by the execution method).
+    /// param[in] theShape shape to store.
+    /// param[in] theIsStoreSameShapes if false stores reference to the same shape
+    ///                                if it is already in document.
+    MODELAPI_EXPORT virtual void store(const GeomShapePtr& theShape,
+                                      const bool theIsStoreSameShapes = true);
+
     /// Returns the group identifier of this result
     MODELAPI_EXPORT std::string groupName();
 
index 380623402e3062fe9cec5fa774b7cc415f1a1191..5ae72236958922702c345f04d4bb523425518713 100644 (file)
@@ -32,12 +32,12 @@ OperaAPI_addVolume::OperaAPI_addVolume(const std::shared_ptr<ModelAPI_Feature>&
 //==================================================================================================
 OperaAPI_addVolume::OperaAPI_addVolume(const std::shared_ptr<ModelAPI_Feature>& theFeature,
                                        const ModelHighAPI_Double& theMedium,
-                                       const std::list<ModelHighAPI_Selection>& theVolumeList)
+                                       const std::list<ModelHighAPI_Selection>& theObjectList)
 : ModelHighAPI_Interface(theFeature)
 {
   if(initialize()) {
-    setMedium(theMedium);
-    setVolumeList(theVolumeList);
+    fillAttribute(OperaPlugin_Volume::MEDIUM(), medium());
+    setObjectList(theObjectList);
   }
 }
 
@@ -53,9 +53,9 @@ void OperaAPI_addVolume::setMedium(const ModelHighAPI_Double& theMedium)
 }
 
 //==================================================================================================
-void OperaAPI_addVolume::setVolumeList(const std::list<ModelHighAPI_Selection>& theVolumeList)
+void OperaAPI_addVolume::setObjectList(const std::list<ModelHighAPI_Selection>& theObjectList)
 {
-  fillAttribute(theVolumeList, myvolumeList);
+  fillAttribute(theObjectList, myvolumeList);
 
   execute();
 }
@@ -78,20 +78,12 @@ void OperaAPI_addVolume::dump(ModelHighAPI_Dumper& theDumper) const
   theDumper << ")" << std::endl;
 }
 
-//==================================================================================================
-VolumePtr addVolume(const std::shared_ptr<ModelAPI_Document>& thePart,
-                    const ModelHighAPI_Double& theMedium)
-{
-  std::shared_ptr<ModelAPI_Feature> aFeature = thePart->addFeature(OperaAPI_addVolume::ID());
-  return VolumePtr(new OperaAPI_addVolume(aFeature));
-}
-
 //==================================================================================================
 VolumePtr addVolume(const std::shared_ptr<ModelAPI_Document>& thePart,
                     const ModelHighAPI_Double& theMedium,
-                    const std::list<ModelHighAPI_Selection>& theVolumeList)
+                    const std::list<ModelHighAPI_Selection>& theObjectList)
 {
   std::shared_ptr<ModelAPI_Feature> aFeature = thePart->addFeature(OperaAPI_addVolume::ID());
   aFeature->selectionList(OperaPlugin_Volume::LIST_ID())->setGeometricalSelection(true);
-  return VolumePtr(new OperaAPI_addVolume(aFeature, theMedium, theVolumeList));
+  return VolumePtr(new OperaAPI_addVolume(aFeature, theMedium, theObjectList));
 }
index 913e4d8d3aa7af1970bf9f9d9e7dd0dbac351282..8476ee0e05dbbc4df9a5216a5d0d578dbffc4742 100644 (file)
@@ -44,7 +44,7 @@ public:
   OPERAAPI_EXPORT
   OperaAPI_addVolume(const std::shared_ptr<ModelAPI_Feature>& theFeature,
                      const ModelHighAPI_Double& theMedium,
-                     const std::list<ModelHighAPI_Selection>& theVolumeList);
+                     const std::list<ModelHighAPI_Selection>& theObjectList);
 
   /// Destructor.
   OPERAAPI_EXPORT
@@ -62,7 +62,7 @@ public:
 
   /// Set main objects list.
   OPERAAPI_EXPORT
-  void setVolumeList(const std::list<ModelHighAPI_Selection>& theVolumeList);
+  void setObjectList(const std::list<ModelHighAPI_Selection>& theObjectList);
 
   /// Dump wrapped feature
   OPERAAPI_EXPORT
@@ -77,6 +77,6 @@ typedef std::shared_ptr<OperaAPI_addVolume> VolumePtr;
 OPERAAPI_EXPORT
 VolumePtr addVolume(const std::shared_ptr<ModelAPI_Document>& thePart,
                     const ModelHighAPI_Double& theMedium,
-                    const std::list<ModelHighAPI_Selection>& theVolumeList);
+                    const std::list<ModelHighAPI_Selection>& theObjectList);
 
 #endif // OperaAPI_addVolume_H_
diff --git a/src/OperaPlugin/Test/TestAddVolume.py b/src/OperaPlugin/Test/TestAddVolume.py
new file mode 100644 (file)
index 0000000..c696b8f
--- /dev/null
@@ -0,0 +1,67 @@
+# Copyright (C) 2014-2021  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
+#
+
+"""
+      TestBoolean.py
+      Unit test of FeaturesPlugin_Group class
+
+      class FeaturesPlugin_Group
+        static const std::string MY_GROUP_ID("Group");
+        static const std::string MY_GROUP_LIST_ID("group_list");
+
+        data()->addAttribute(FeaturesPlugin_Group::LIST_ID(), ModelAPI_AttributeSelectionList::typeId());
+"""
+#=========================================================================
+# Initialization of the test
+#=========================================================================
+
+#=========================================================================
+# Create a Box
+#=========================================================================
+
+#=========================================================================
+# Create a Torus
+#=========================================================================
+
+#=========================================================================
+# Create a Cylinder
+#=========================================================================
+
+#=========================================================================
+# Create one Volume
+#=========================================================================
+
+#=========================================================================
+# Check results
+#=========================================================================
+
+#=========================================================================
+# Create two volumes at once
+#=========================================================================
+
+#=========================================================================
+# Check results
+#=========================================================================
+
+#=========================================================================
+# End of test
+#=========================================================================
+
+from salome.shaper import model
+assert(model.checkPythonDump())
diff --git a/src/OperaPlugin/tests.set b/src/OperaPlugin/tests.set
new file mode 100644 (file)
index 0000000..8059683
--- /dev/null
@@ -0,0 +1,22 @@
+# Copyright (C) 2021  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
+#
+
+SET(TEST_NAMES
+              TestAddVolume.py
+)