Salome HOME
Tooltips update for extrusion and revolution
[modules/shaper.git] / src / ParametersPlugin / Test / TestParameterChangeValue.py
1 """
2     TestParameterCreation.py
3     
4     class ParametersPlugin_Parameter
5     static const std::string MY_PARAMETER_ID("Parameter");
6     static const std::string MY_VARIABLE_ID("variable");
7     static const std::string MY_EXPRESSION_ID("expression");
8     
9     data()->addAttribute(ParametersPlugin_Parameter::VARIABLE_ID(),
10                          ModelAPI_AttributeString::typeId());
11     data()->addAttribute(ParametersPlugin_Parameter::EXPRESSION_ID(),
12                          ModelAPI_AttributeString::typeId());
13                          
14     class ModelAPI_ResultParameter
15     static const std::string MY_VALUE_ID("Value");
16     static const std::string MY_VALUE_ID("State");
17 """
18
19 #=========================================================================
20 # Initialization of the test
21 #=========================================================================
22 from GeomDataAPI import *
23 from ModelAPI import *
24 import math
25 import unittest
26
27 __updated__ = "2015-04-27"
28
29 #=========================================================================
30 # Create several parameters and a feature.
31 # 1. Basic parameter definition:
32 #    x1 = 150.0, y1 = 200.0
33 # 2. Referencing between parameters:
34 #    x2 = x1 + y1 + 100.0
35 # 3. Referencing in feature SketchCircle
36 #    CircleCenter = (x1 + 10.0, x1 + 20.0), CircleRadius = x1
37 # 3. Change value
38 #    x1 = 200.0
39 #=========================================================================
40 class TestParameterRename(unittest.TestCase):
41     def setUp(self):
42         self.aSession = ModelAPI_Session.get()
43         self.aDocument = self.aSession.moduleDocument()
44         self.createParameters()
45         self.createFeature()
46
47     def tearDown(self):
48         self.aSession.closeAll()
49
50     def createParameters(self):
51         ltNames = ["x1", "y1", "x2"]
52         ltExpressions = ["150.", "200.", "x1 + y1 + 100.0"]
53         self.dtParams = {}
54         for name, expr in zip(ltNames, ltExpressions):
55             self.aSession.startOperation()
56             aParam = self.aDocument.addFeature("Parameter")
57             aParamName = aParam.string("variable")
58             aParamName.setValue(name)
59             aParamExpr = aParam.string("expression")
60             aParamExpr.setValue(expr)
61             self.dtParams[name] = aParam
62             self.aSession.finishOperation()
63         self.assertEqual(len(self.dtParams), len(ltNames))
64
65         aParam = self.dtParams["x2"]
66         aResultAttr = modelAPI_ResultParameter(aParam.firstResult())
67         self.assertEqual(aResultAttr.data().real("Value").value(), 450.)
68
69     def createFeature(self):
70         self.aSession.startOperation()
71         aSketchCommonFeature = self.aDocument.addFeature("Sketch")
72         aSketchFeature = featureToCompositeFeature(aSketchCommonFeature)
73         origin = geomDataAPI_Point(aSketchFeature.attribute("Origin"))
74         origin.setValue(0, 0, 0)
75         dirx = geomDataAPI_Dir(aSketchFeature.attribute("DirX"))
76         dirx.setValue(1, 0, 0)
77         norm = geomDataAPI_Dir(aSketchFeature.attribute("Norm"))
78         norm.setValue(0, 0, 1)
79         aSketchCircle = aSketchFeature.addFeature("SketchCircle")
80         anCircleCentr = geomDataAPI_Point2D(aSketchCircle.attribute("CircleCenter"))
81         aRadiusAttr = aSketchCircle.real("CircleRadius")
82         anCircleCentr.setText("x1 + 10.0", "x1 + 20.0")
83         aRadiusAttr.setText("x1")
84         self.aSession.finishOperation()
85
86         self.anCircleCentr = anCircleCentr
87         self.aRadiusAttr = aRadiusAttr
88
89         self.assertEqual(self.anCircleCentr.x(), 160.)
90         self.assertEqual(self.anCircleCentr.y(), 170.)
91         self.assertEqual(aRadiusAttr.value(), 150.)
92
93     def test_change_value(self):
94         aParam = self.dtParams["x1"]
95         aResultAttr = modelAPI_ResultParameter(aParam.firstResult())
96         self.aSession.startOperation()
97         aParam.string("expression").setValue("200.0")
98         self.aSession.finishOperation()
99
100         # Check value of the parameter 
101         self.assertEqual(aResultAttr.data().real("Value").value(), 200.)
102         # Check value of references
103         aParam = self.dtParams["x2"]
104         aResultAttr = modelAPI_ResultParameter(aParam.firstResult())
105         self.assertEqual(aResultAttr.data().real("Value").value(), 500.)
106         # Check value in the feature
107         self.assertEqual(self.anCircleCentr.x(), 210.)
108         self.assertEqual(self.anCircleCentr.y(), 220.)
109         self.assertEqual(self.aRadiusAttr.value(), 200.)
110
111 if __name__ == '__main__':
112     unittest.main()
113 #=========================================================================
114 # End of test
115 #=========================================================================