Salome HOME
Unit tests fixes related to python swigged lists iteration
[modules/shaper.git] / src / SketchPlugin / Test / TestConstraintAngle.py
index 43b8ff00083a14bf4096faaa7857eae9848e6c0a..0d88ec14f1816e3bd9a9d657ad84045d1059729b 100644 (file)
@@ -13,8 +13,8 @@
 """
 from GeomDataAPI import *
 from ModelAPI import *
-import os
 import math
+from salome.shaper import model
 
 #=========================================================================
 # Auxiliary functions
@@ -46,6 +46,10 @@ def angle(theLine1, theLine2):
 
 __updated__ = "2015-09-18"
 
+ANGLE_DIRECT = 0
+ANGLE_COMPLEMENTARY = 1
+ANGLE_BACKWARD = 2
+
 aSession = ModelAPI_Session.get()
 aDocument = aSession.moduleDocument()
 #=========================================================================
@@ -74,39 +78,48 @@ aEndPoint.setValue(100., 25.)
 aSketchLineB = aSketchFeature.addFeature("SketchLine")
 aStartPoint = geomDataAPI_Point2D(aSketchLineB.attribute("StartPoint"))
 aEndPoint = geomDataAPI_Point2D(aSketchLineB.attribute("EndPoint"))
-aStartPoint.setValue(-20., 15.)
+aStartPoint.setValue(-10., 15.)
 aEndPoint.setValue(80., 50.)
 aSession.finishOperation()
+assert (model.dof(aSketchFeature) == 8)
 #=========================================================================
 # Make a constraint to keep the angle
 #=========================================================================
 ANGLE_DEGREE = 30.
 aSession.startOperation()
 aConstraint = aSketchFeature.addFeature("SketchConstraintAngle")
-anAngleVal = aConstraint.real("ConstraintValue")
+aConstraint.integer("AngleType").setValue(ANGLE_DIRECT)
+anAngleVal = aConstraint.real("AngleValue")
 refattrA = aConstraint.refattr("ConstraintEntityA")
 refattrB = aConstraint.refattr("ConstraintEntityB")
 assert (not anAngleVal.isInitialized())
 assert (not refattrA.isInitialized())
 assert (not refattrB.isInitialized())
-anAngleVal.setValue(ANGLE_DEGREE)
 refattrA.setObject(aSketchLineA.firstResult())
 refattrB.setObject(aSketchLineB.firstResult())
+anAngleVal.setValue(ANGLE_DEGREE)
 aConstraint.execute()
 aSession.finishOperation()
+aSession.startOperation()
+aFlyoutPoint = geomDataAPI_Point2D(aConstraint.attribute("ConstraintFlyoutValuePnt"))
+aFlyoutPoint.setValue(50.0, 100.0)
+aSession.finishOperation()
+aSession.abortOperation()
 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
 #=========================================================================
 aSession.startOperation()
 aStartPoint = geomDataAPI_Point2D(aSketchLineA.attribute("StartPoint"))
-aStartPoint.setValue(0., 30.)
+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
 #=========================================================================
@@ -116,14 +129,33 @@ anAngleVal.setValue(NEW_ANGLE_DEGREE)
 aConstraint.execute()
 aSession.finishOperation()
 assert (angle(aSketchLineA, aSketchLineB) == NEW_ANGLE_DEGREE)
+assert (model.dof(aSketchFeature) == 7)
+#=========================================================================
+# Change angle type
+#=========================================================================
+aSession.startOperation()
+aConstraint.integer("AngleType").setValue(ANGLE_COMPLEMENTARY)
+aSession.finishOperation()
+assert (angle(aSketchLineA, aSketchLineB) == NEW_ANGLE_DEGREE)
+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
 #=========================================================================
+
+assert(model.checkPythonDump())