Salome HOME
Merge branch 'CPPHighAPI'
[modules/shaper.git] / src / PythonAPI / Test / TestFeaturesRevolution.py
1 import unittest
2
3 import ModelAPI
4
5 import model
6 from model.tools import Selection
7
8 #-----------------------------------------------------------------------------
9 # Fixtures
10
11 class FeaturesAddRevolutionFixture(unittest.TestCase):
12
13     def setUp(self):
14         model.begin()
15         # Create part
16         partset = model.moduleDocument()
17         self.part = model.addPart(partset).document()
18         model.do()
19
20     def tearDown(self):
21         model.end()
22         model.reset()
23
24
25 class FeaturesRevolutionFixture(FeaturesAddRevolutionFixture):
26
27     def setUp(self):
28         FeaturesAddRevolutionFixture.setUp(self)
29         # Create revolution
30         # base
31         base_sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
32         circle = base_sketch.addCircle(0, 0, 10)
33
34         model.do()
35
36         base = base_sketch.selectFace()
37         axis_point1 = model.addPoint(self.part, 20, -10, 0).result()
38         axis_point2 = model.addPoint(self.part, 20, 10, 0).result()
39         axis_object = model.addAxis(self.part, axis_point1[0], axis_point2[0]).result()
40
41         self.revolution = model.addRevolution(self.part, base, axis_object[0],
42                                               0, 180)
43
44         model.do()
45
46     def tearDown(self):
47         FeaturesAddRevolutionFixture.tearDown(self)
48
49 #-----------------------------------------------------------------------------
50 # TestCases
51
52 class FeaturesAddRevolutionTestCase(FeaturesAddRevolutionFixture):
53
54     def test_add_revolution_by_face_and_angles(self):
55         # base
56         base_sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
57         circle = base_sketch.addCircle(0, 0, 10)
58
59         model.do()
60
61         base = base_sketch.selectFace()
62         axis_point1 = model.addPoint(self.part, 20, -10, 0).result()
63         axis_point2 = model.addPoint(self.part, 20, 10, 0).result()
64         axis_object = model.addAxis(self.part, axis_point1[0], axis_point2[0]).result()
65
66         revolution = model.addRevolution(self.part, base, axis_object[0],
67                                          0, 180)
68
69         self.assertEqual(revolution.creationMethod().value(), "ByAngles")
70         self.assertEqual(revolution.toAngle().value(), 0)
71         self.assertEqual(revolution.fromAngle().value(), 180)
72         self.assertEqual(revolution.toObject().context(), None)
73         self.assertEqual(revolution.toOffset().value(), 0)
74         self.assertEqual(revolution.fromObject().context(), None)
75         self.assertEqual(revolution.fromOffset().value(), 0)
76
77     def test_add_revolution_by_face_and_planes(self):
78         # base
79         base_sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
80         base_circle = base_sketch.addCircle(0, 0, 10)
81         # to
82         to_plane = model.defaultPlane("XOY")
83         to_plane.origin().setZ(10)
84         to_sketch = model.addSketch(self.part, to_plane)
85         to_circle = to_sketch.addCircle(0, 0, 10)
86         # from
87         from_plane = model.defaultPlane("XOY")
88         from_plane.origin().setZ(-10)
89         from_sketch = model.addSketch(self.part, from_plane)
90         from_circle = from_sketch.addCircle(0, 0, 10)
91
92         model.do()
93
94         base = base_sketch.selectFace()
95         axis_point1 = model.addPoint(self.part, 20, -10, 0).result()
96         axis_point2 = model.addPoint(self.part, 20, 10, 0).result()
97         axis_object = model.addAxis(self.part, axis_point1[0], axis_point2[0]).result()
98         to_obejct = to_sketch.selectFace()[0]
99         from_object = from_sketch.selectFace()[0]
100
101         revolution = model.addRevolution(self.part, base, axis_object[0],
102                                          to_obejct, 15,
103                                          from_object, 20)
104
105         self.assertEqual(revolution.creationMethod().value(), "ByPlanesAndOffsets")
106         self.assertEqual(revolution.toAngle().value(), 0)
107         self.assertEqual(revolution.fromAngle().value(), 0)
108 #         self.assertEqual(revolution.getToObject().context(),
109 #                          to_sketch.result())
110         self.assertEqual(revolution.toOffset().value(), 15)
111 #         self.assertEqual(revolution.getFromObject().context(),
112 #                          from_sketch.result())
113         self.assertEqual(revolution.fromOffset().value(), 20)
114
115
116 class FeaturesRevolutionTestCase(FeaturesRevolutionFixture):
117
118     def test_revolution_feature_calls(self):
119         # call method of the feature
120         self.assertEqual(self.revolution.getKind(), "Revolution")
121
122     def test_revolution_get_attribute(self):
123         # call method of the feature
124         self.assertTrue(isinstance(self.revolution.baseObjects(),
125                                    ModelAPI.ModelAPI_AttributeSelectionList))
126         self.assertTrue(isinstance(self.revolution.axis(),
127                                    ModelAPI.ModelAPI_AttributeSelection))
128         self.assertTrue(isinstance(self.revolution.creationMethod(),
129                                    ModelAPI.ModelAPI_AttributeString))
130         self.assertTrue(isinstance(self.revolution.toAngle(),
131                                    ModelAPI.ModelAPI_AttributeDouble))
132         self.assertTrue(isinstance(self.revolution.fromAngle(),
133                                    ModelAPI.ModelAPI_AttributeDouble))
134         self.assertTrue(isinstance(self.revolution.toObject(),
135                                    ModelAPI.ModelAPI_AttributeSelection))
136         self.assertTrue(isinstance(self.revolution.toOffset(),
137                                    ModelAPI.ModelAPI_AttributeDouble))
138         self.assertTrue(isinstance(self.revolution.fromObject(),
139                                    ModelAPI.ModelAPI_AttributeSelection))
140         self.assertTrue(isinstance(self.revolution.fromOffset(),
141                                    ModelAPI.ModelAPI_AttributeDouble))
142
143     def test_revolution_set_angles(self):
144         self.revolution.setAngles(90, 270)
145         self.assertEqual(self.revolution.creationMethod().value(), "ByAngles")
146         self.assertEqual(self.revolution.toAngle().value(), 90)
147         self.assertEqual(self.revolution.fromAngle().value(), 270)
148         self.assertEqual(self.revolution.toObject().context(), None)
149         self.assertEqual(self.revolution.toOffset().value(), 0)
150         self.assertEqual(self.revolution.fromObject().context(), None)
151         self.assertEqual(self.revolution.fromOffset().value(), 0)
152
153     def test_revolution_set_planes_and_offsets(self):
154         # base
155         base_sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
156         base_circle = base_sketch.addCircle(0, 0, 10)
157         # to
158         to_plane = model.defaultPlane("XOY")
159         to_plane.origin().setZ(10)
160         to_sketch = model.addSketch(self.part, to_plane)
161         to_circle = to_sketch.addCircle(0, 0, 10)
162         # from
163         from_plane = model.defaultPlane("XOY")
164         from_plane.origin().setZ(-10)
165         from_sketch = model.addSketch(self.part, from_plane)
166         from_circle = from_sketch.addCircle(0, 0, 10)
167
168         model.do()
169
170         base = base_sketch.selectFace()
171         axis_point1 = model.addPoint(self.part, 20, -10, 0).result()
172         axis_point2 = model.addPoint(self.part, 20, 10, 0).result()
173         axis_object = model.addAxis(self.part, axis_point1[0], axis_point2[0]).result()
174         to_obejct = to_sketch.selectFace()[0]
175         from_object = from_sketch.selectFace()[0]
176
177         self.revolution.setPlanesAndOffsets(to_obejct, 15, from_object, 20)
178
179         self.assertEqual(self.revolution.creationMethod().value(), "ByPlanesAndOffsets")
180         # self.assertEqual(self.revolution.toAngle().value(), 0)
181         # self.assertEqual(self.revolution.fromAngle().value(), 0)
182 #         self.assertEqual(self.revolution.getToObject().context(), None)
183         self.assertEqual(self.revolution.toOffset().value(), 15)
184 #         self.assertEqual(self.revolution.getFromObject().context(), None)
185         self.assertEqual(self.revolution.fromOffset().value(), 20)
186
187
188 if __name__ == "__main__":
189     unittest.main()