2 TestParameterCreation.py
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");
9 data()->addAttribute(ParametersPlugin_Parameter::VARIABLE_ID(),
10 ModelAPI_AttributeString::typeId());
11 data()->addAttribute(ParametersPlugin_Parameter::EXPRESSION_ID(),
12 ModelAPI_AttributeString::typeId());
14 class ModelAPI_ResultParameter
15 static const std::string MY_VALUE_ID("Value");
16 static const std::string MY_VALUE_ID("State");
19 #=========================================================================
20 # Initialization of the test
21 #=========================================================================
22 from GeomDataAPI import *
23 from ModelAPI import *
27 __updated__ = "2015-04-27"
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
39 # 4. Check renaming to not unique name
41 #=========================================================================
42 class TestParameterRename(unittest.TestCase):
44 self.aSession = ModelAPI_Session.get()
45 self.aDocument = self.aSession.moduleDocument()
46 self.createParameters()
50 self.aSession.closeAll()
52 def createParameters(self):
53 ltNames = ["x1", "y1", "x2"]
54 ltExpressions = ["150.", "200.", "x1 + y1 + 100.0"]
56 for name, expr in zip(ltNames, ltExpressions):
57 self.aSession.startOperation()
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))
67 aParam = self.dtParams["x2"]
68 aResultAttr = modelAPI_ResultParameter(aParam.firstResult())
69 self.assertEqual(aResultAttr.data().real("Value").value(), 450.)
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()
88 self.anCircleCentr = anCircleCentr
89 self.aRadiusAttr = aRadiusAttr
91 self.assertEqual(self.anCircleCentr.x(), 160.)
92 self.assertEqual(self.anCircleCentr.y(), 170.)
93 self.assertEqual(aRadiusAttr.value(), 150.)
95 def test_rename(self):
97 aParam = self.dtParams["x1"]
98 aResultAttr = modelAPI_ResultParameter(aParam.firstResult())
99 self.aSession.startOperation()
100 aResultAttr.data().setName("a1")
101 self.aSession.finishOperation()
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")
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")
134 if __name__ == '__main__':
136 #=========================================================================
138 #=========================================================================