Salome HOME
Merge with Dev_1.5.0
[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         # axis
34         axis_sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
35         line = axis_sketch.addLine(20, -10, 20, 10)
36
37         model.do()
38
39         base = base_sketch.selectFace(circle.lastResult())
40         axis_object = Selection(axis_sketch.firstResult(),
41                                 line.firstResult().shape())
42
43         self.revolution = model.addRevolution(self.part, base, axis_object,
44                                               0, 180)
45
46         model.do()
47
48     def tearDown(self):
49         FeaturesAddRevolutionFixture.tearDown(self)
50
51 #-----------------------------------------------------------------------------
52 # TestCases
53
54 class FeaturesAddRevolutionTestCase(FeaturesAddRevolutionFixture):
55
56     def test_add_revolution_no_base(self):
57         try:
58             revolution = model.addRevolution(self.part)
59             fail("addRevolution should assert if base is not None")
60         except AssertionError:
61             pass
62
63     def test_add_revolution_by_face_and_angles(self):
64         # base
65         base_sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
66         circle = base_sketch.addCircle(0, 0, 10)
67         # axis
68         axis_sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
69         line = axis_sketch.addLine(20, -10, 20, 10)
70
71         model.do()
72
73         base = base_sketch.selectFace(circle.lastResult())
74         axis_object = Selection(axis_sketch.firstResult(),
75                                 line.firstResult().shape())
76
77         revolution = model.addRevolution(self.part, base, axis_object,
78                                          0, 180)
79
80         self.assertEqual(revolution.getCreationMethod().value(), "ByAngles")
81         self.assertEqual(revolution.getToAngle().value(), 0)
82         self.assertEqual(revolution.getFromAngle().value(), 180)
83         self.assertEqual(revolution.getToObject().context(), None)
84         self.assertEqual(revolution.getToOffset().value(), 0)
85         self.assertEqual(revolution.getFromObject().context(), None)
86         self.assertEqual(revolution.getFromOffset().value(), 0)
87
88     def test_add_revolution_by_face_and_planes(self):
89         # base
90         base_sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
91         base_circle = base_sketch.addCircle(0, 0, 10)
92         # axis
93         axis_sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
94         line = axis_sketch.addLine(20, -10, 20, 10)
95         # to
96         to_plane = model.defaultPlane("XOY")
97         to_plane.location().setZ(10)
98         to_sketch = model.addSketch(self.part, to_plane)
99         to_circle = to_sketch.addCircle(0, 0, 10)
100         # from
101         from_plane = model.defaultPlane("XOY")
102         from_plane.location().setZ(-10)
103         from_sketch = model.addSketch(self.part, from_plane)
104         from_circle = from_sketch.addCircle(0, 0, 10)
105
106         model.do()
107
108         base = base_sketch.selectFace(base_circle.result())
109         axis_object = Selection(axis_sketch.firstResult(),
110                                 line.firstResult().shape())
111         to_obejct = to_sketch.selectFace(to_circle.result())[0]
112         from_object = from_sketch.selectFace(from_circle.result())[0]
113
114         revolution = model.addRevolution(self.part, base, axis_object,
115                                          to_obejct, 15,
116                                          from_object, 20)
117
118         self.assertEqual(revolution.getCreationMethod().value(), "ByPlanesAndOffsets")
119         self.assertEqual(revolution.getToAngle().value(), 0)
120         self.assertEqual(revolution.getFromAngle().value(), 0)
121 #         self.assertEqual(revolution.getToObject().context(),
122 #                          to_sketch.result())
123         self.assertEqual(revolution.getToOffset().value(), 15)
124 #         self.assertEqual(revolution.getFromObject().context(),
125 #                          from_sketch.result())
126         self.assertEqual(revolution.getFromOffset().value(), 20)
127
128
129 class FeaturesRevolutionTestCase(FeaturesRevolutionFixture):
130
131     def test_revolution_feature_calls(self):
132         # call method of the feature
133         self.assertEqual(self.revolution.getKind(), "Revolution")
134
135     def test_revolution_get_attribute(self):
136         # call method of the feature
137         self.assertTrue(isinstance(self.revolution.getBase(),
138                                    ModelAPI.ModelAPI_AttributeSelectionList))
139         self.assertTrue(isinstance(self.revolution.getAxisObject(),
140                                    ModelAPI.ModelAPI_AttributeSelection))
141         self.assertTrue(isinstance(self.revolution.getCreationMethod(),
142                                    ModelAPI.ModelAPI_AttributeString))
143         self.assertTrue(isinstance(self.revolution.getToAngle(),
144                                    ModelAPI.ModelAPI_AttributeDouble))
145         self.assertTrue(isinstance(self.revolution.getFromAngle(),
146                                    ModelAPI.ModelAPI_AttributeDouble))
147         self.assertTrue(isinstance(self.revolution.getToObject(),
148                                    ModelAPI.ModelAPI_AttributeSelection))
149         self.assertTrue(isinstance(self.revolution.getToOffset(),
150                                    ModelAPI.ModelAPI_AttributeDouble))
151         self.assertTrue(isinstance(self.revolution.getFromObject(),
152                                    ModelAPI.ModelAPI_AttributeSelection))
153         self.assertTrue(isinstance(self.revolution.getFromOffset(),
154                                    ModelAPI.ModelAPI_AttributeDouble))
155
156     def test_revolution_set_angles(self):
157         self.revolution.setAngles(90, 270)
158         self.assertEqual(self.revolution.getCreationMethod().value(), "ByAngles")
159         self.assertEqual(self.revolution.getToAngle().value(), 90)
160         self.assertEqual(self.revolution.getFromAngle().value(), 270)
161         self.assertEqual(self.revolution.getToObject().context(), None)
162         self.assertEqual(self.revolution.getToOffset().value(), 0)
163         self.assertEqual(self.revolution.getFromObject().context(), None)
164         self.assertEqual(self.revolution.getFromOffset().value(), 0)
165
166     def test_revolution_set_planes_and_offsets(self):
167         # base
168         base_sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
169         base_circle = base_sketch.addCircle(0, 0, 10)
170         # axis
171         axis_sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
172         line = axis_sketch.addLine(20, -10, 20, 10)
173         # to
174         to_plane = model.defaultPlane("XOY")
175         to_plane.location().setZ(10)
176         to_sketch = model.addSketch(self.part, to_plane)
177         to_circle = to_sketch.addCircle(0, 0, 10)
178         # from
179         from_plane = model.defaultPlane("XOY")
180         from_plane.location().setZ(-10)
181         from_sketch = model.addSketch(self.part, from_plane)
182         from_circle = from_sketch.addCircle(0, 0, 10)
183
184         model.do()
185
186         base = base_sketch.selectFace(base_circle.result())
187         axis_object = Selection(axis_sketch.firstResult(),
188                                 line.firstResult().shape())
189         to_obejct = to_sketch.selectFace(to_circle.result())[0]
190         from_object = from_sketch.selectFace(from_circle.result())[0]
191
192         self.revolution.setPlanesAndOffsets(to_obejct, 15, from_object, 20)
193
194         self.assertEqual(self.revolution.getCreationMethod().value(), "ByPlanesAndOffsets")
195         self.assertEqual(self.revolution.getToAngle().value(), 0)
196         self.assertEqual(self.revolution.getFromAngle().value(), 0)
197 #         self.assertEqual(self.revolution.getToObject().context(), None)
198         self.assertEqual(self.revolution.getToOffset().value(), 15)
199 #         self.assertEqual(self.revolution.getFromObject().context(), None)
200         self.assertEqual(self.revolution.getFromOffset().value(), 20)
201
202
203 if __name__ == "__main__":
204     unittest.main()