Salome HOME
updated copyright message
[modules/shaper.git] / src / SketchPlugin / Test / TestConstraintAngle.py
index 83a3335464937a7833c6e31ed3464c9f2441d2c1..ebe140d075b594f83faaf18fd62d60ead440c8d5 100644 (file)
@@ -1,20 +1,39 @@
+# Copyright (C) 2014-2023  CEA, EDF
+#
+# 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
+#
+
 """
     TestConstraintAngle.py
     Unit test of SketchPlugin_ConstraintAngle class
-        
+
     SketchPlugin_ConstraintAngle
         static const std::string MY_CONSTRAINT_ANGLE_ID("SketchConstraintAngle");
         data()->addAttribute(SketchPlugin_Constraint::VALUE(),    ModelAPI_AttributeDouble::typeId());
         data()->addAttribute(SketchPlugin_Constraint::ENTITY_A(), ModelAPI_AttributeRefAttr::typeId());
         data()->addAttribute(SketchPlugin_Constraint::ENTITY_B(), ModelAPI_AttributeRefAttr::typeId());
         data()->addAttribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT(), GeomDataAPI_Point2D::typeId());
-        
-    
+
+
 """
 from GeomDataAPI import *
 from ModelAPI import *
-import os
 import math
+from salome.shaper import model
 
 #=========================================================================
 # Auxiliary functions
@@ -26,16 +45,16 @@ def angle(theLine1, theLine2):
     aEndPoint1   = geomDataAPI_Point2D(theLine1.attribute("EndPoint"))
     aStartPoint2 = geomDataAPI_Point2D(theLine2.attribute("StartPoint"))
     aEndPoint2   = geomDataAPI_Point2D(theLine2.attribute("EndPoint"))
-    
+
     aDirX1 = aEndPoint1.x() - aStartPoint1.x()
     aDirY1 = aEndPoint1.y() - aStartPoint1.y()
     aLen1 = math.hypot(aDirX1, aDirY1)
     aDirX2 = aEndPoint2.x() - aStartPoint2.x()
     aDirY2 = aEndPoint2.y() - aStartPoint2.y()
     aLen2 = math.hypot(aDirX2, aDirY2)
-    
+
     aDot = aDirX1 * aDirX2 + aDirY1 * aDirY2
-    
+
     anAngle = math.acos(aDot / aLen1 / aLen2)
     return round(anAngle * 180. / math.pi, 6)
 
@@ -81,6 +100,7 @@ aEndPoint = geomDataAPI_Point2D(aSketchLineB.attribute("EndPoint"))
 aStartPoint.setValue(-10., 15.)
 aEndPoint.setValue(80., 50.)
 aSession.finishOperation()
+assert (model.dof(aSketchFeature) == 8)
 #=========================================================================
 # Make a constraint to keep the angle
 #=========================================================================
@@ -108,6 +128,7 @@ assert (anAngleVal.isInitialized())
 assert (refattrA.isInitialized())
 assert (refattrB.isInitialized())
 assert (angle(aSketchLineA, aSketchLineB) == ANGLE_DEGREE)
+assert (model.dof(aSketchFeature) == 7)
 #=========================================================================
 # Move line, check that angle is constant
 #=========================================================================
@@ -117,6 +138,7 @@ aStartPoint.setValue(0., -30.)
 aConstraint.execute()
 aSession.finishOperation()
 assert (angle(aSketchLineA, aSketchLineB) == ANGLE_DEGREE)
+assert (model.dof(aSketchFeature) == 7)
 #=========================================================================
 # Change angle value and check the lines are moved
 #=========================================================================
@@ -126,6 +148,7 @@ anAngleVal.setValue(NEW_ANGLE_DEGREE)
 aConstraint.execute()
 aSession.finishOperation()
 assert (angle(aSketchLineA, aSketchLineB) == NEW_ANGLE_DEGREE)
+assert (model.dof(aSketchFeature) == 7)
 #=========================================================================
 # Change angle type
 #=========================================================================
@@ -137,17 +160,21 @@ aSession.startOperation()
 aConstraint.integer("AngleType").setValue(ANGLE_BACKWARD)
 aSession.finishOperation()
 assert (angle(aSketchLineA, aSketchLineB) == NEW_ANGLE_DEGREE)
+assert (model.dof(aSketchFeature) == 7)
 #=========================================================================
-# TODO: improve test
-# 1. remove constraint, move line's start point to
-#    check that constraint are not applied
-# 2. check constrained distance between:
-#    * point and line
-#    * two lines
+# Remove constraint, move line's point to check the constraint is not applied
 #=========================================================================
+aSession.startOperation()
+aDocument.removeFeature(aConstraint)
+aSession.finishOperation()
+assert (model.dof(aSketchFeature) == 8)
+aSession.startOperation()
+aStartPoint.setValue(-30., 0.)
+aSession.finishOperation()
+assert (angle(aSketchLineA, aSketchLineB) != NEW_ANGLE_DEGREE)
+assert (model.dof(aSketchFeature) == 8)
 #=========================================================================
 # End of test
 #=========================================================================
 
-from salome.shaper import model
 assert(model.checkPythonDump())