Salome HOME
Issue #644 - Parameters tests
[modules/shaper.git] / src / ParametersPlugin / Test / TestParameterRename.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. Check renaming
38 #    x1 -> a1
39 # 4. Check renaming to not unique name
40 #    x1 -> y1
41 #=========================================================================
42 class TestParameterRename(unittest.TestCase):
43     def setUp(self):
44         self.aSession = ModelAPI_Session.get()
45         self.aDocument = self.aSession.moduleDocument()
46         self.createParameters()
47         self.createFeature()
48
49     def tearDown(self):
50         self.aSession.closeAll()
51
52     def createParameters(self):
53         ltNames = ["x1", "y1", "x2"]
54         ltExpressions = ["150.", "200.", "x1 + y1 + 100.0"]
55         self.dtParams = {}
56         self.aSession.startOperation()
57         for name, expr in zip(ltNames, ltExpressions):
58             aParam = self.aDocument.addFeature("Parameter")
59             aParamName = aParam.string("variable")
60             aParamName.setValue(name)
61             aParamExpr = aParam.string("expression")
62             aParamExpr.setValue(expr)
63             self.dtParams[name] = aParam
64         self.aSession.finishOperation()
65         self.assertEqual(len(self.dtParams), len(ltNames))
66
67         aParam = self.dtParams["x2"]
68         aResultAttr = modelAPI_ResultParameter(aParam.firstResult())
69         self.assertEqual(aResultAttr.data().real("Value").value(), 450.)
70
71     def createFeature(self):
72         self.aSession.startOperation()
73         aSketchCommonFeature = self.aDocument.addFeature("Sketch")
74         aSketchFeature = featureToCompositeFeature(aSketchCommonFeature)
75         origin = geomDataAPI_Point(aSketchFeature.attribute("Origin"))
76         origin.setValue(0, 0, 0)
77         dirx = geomDataAPI_Dir(aSketchFeature.attribute("DirX"))
78         dirx.setValue(1, 0, 0)
79         norm = geomDataAPI_Dir(aSketchFeature.attribute("Norm"))
80         norm.setValue(0, 0, 1)
81         aSketchCircle = aSketchFeature.addFeature("SketchCircle")
82         anCircleCentr = geomDataAPI_Point2D(aSketchCircle.attribute("CircleCenter"))
83         aRadiusAttr = aSketchCircle.real("CircleRadius")
84         anCircleCentr.setText("x1 + 10.0", "x1 + 20.0")
85         aRadiusAttr.setText("x1")
86         self.aSession.finishOperation()
87
88         self.anCircleCentr = anCircleCentr
89         self.aRadiusAttr = aRadiusAttr
90
91         self.assertEqual(self.anCircleCentr.x(), 160.)
92         self.assertEqual(self.anCircleCentr.y(), 170.)
93         self.assertEqual(aRadiusAttr.value(), 150.)
94
95     def test_rename(self):
96         # Rename
97         aParam = self.dtParams["x1"]
98         aResultAttr = modelAPI_ResultParameter(aParam.firstResult())
99         self.aSession.startOperation()
100         aResultAttr.data().setName("a1")
101         self.aSession.finishOperation()
102
103         # Check rename in the parameter 
104         self.assertEqual(aParam.name(), "a1")
105         self.assertEqual(aParam.string("variable").value(), "a1")
106         self.assertEqual(aResultAttr.data().name(), "a1")
107         # Check rename in references
108         aParam = self.dtParams["x2"]
109         self.assertEqual(aParam.string("expression").value(), "a1 + y1 + 100.0")
110         # Check rename in the feature
111         self.assertEqual(self.anCircleCentr.textX(), "a1 + 10.0")
112         self.assertEqual(self.anCircleCentr.textY(), "a1 + 20.0")
113         self.assertEqual(self.aRadiusAttr.text(), "a1")
114
115     def test_rename_not_unique(self):
116         # Rename to not unique name
117         aParam = self.dtParams["x1"]
118         aResultAttr = modelAPI_ResultParameter(aParam.firstResult())
119         self.aSession.startOperation()
120         aResultAttr.data().setName("y1")
121         self.aSession.finishOperation()
122         # Check rename in the parameter (Expected: not renamed) 
123         self.assertEqual(aParam.name(), "x1")
124         self.assertEqual(aParam.string("variable").value(), "x1")
125         self.assertEqual(aResultAttr.data().name(), "x1")
126         # Check rename in references (Expected: not renamed)
127         aParam = self.dtParams["x2"]
128         self.assertEqual(aParam.string("expression").value(), "x1 + y1 + 100.0")
129         # Check rename in the feature (Expected: not renamed)
130         self.assertEqual(self.anCircleCentr.textX(), "x1 + 10.0")
131         self.assertEqual(self.anCircleCentr.textY(), "x1 + 20.0")
132         self.assertEqual(self.aRadiusAttr.text(), "x1")
133
134 if __name__ == '__main__':
135     unittest.main()
136 #=========================================================================
137 # End of test
138 #=========================================================================