Salome HOME
Issue #2431 - remove application exit from unit tests
[modules/shaper.git] / src / PythonAPI / Test / TestFeaturesExtrusion.py
1 ## Copyright (C) 2014-2017  CEA/DEN, EDF R&D
2 ##
3 ## This library is free software; you can redistribute it and/or
4 ## modify it under the terms of the GNU Lesser General Public
5 ## License as published by the Free Software Foundation; either
6 ## version 2.1 of the License, or (at your option) any later version.
7 ##
8 ## This library is distributed in the hope that it will be useful,
9 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
10 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 ## Lesser General Public License for more details.
12 ##
13 ## You should have received a copy of the GNU Lesser General Public
14 ## License along with this library; if not, write to the Free Software
15 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 ##
17 ## See http:##www.salome-platform.org/ or
18 ## email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
19 ##
20
21 import unittest
22
23 import ModelAPI
24
25 from salome.shaper import model
26
27 #-----------------------------------------------------------------------------
28 # Fixtures
29
30 class FeaturesAddExtrusionFixture(unittest.TestCase):
31
32     def setUp(self):
33         model.begin()
34         # Create part
35         partset = model.moduleDocument()
36         self.part = model.addPart(partset).document()
37         model.do()
38
39     def tearDown(self):
40         model.end()
41         assert(model.checkPythonDump())
42         model.reset()
43
44
45 class FeaturesExtrusionFixture(FeaturesAddExtrusionFixture):
46
47     def setUp(self):
48         FeaturesAddExtrusionFixture.setUp(self)
49         # Create extrusion
50         sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
51         circle = sketch.addCircle(0, 0, 10)
52         model.do()
53
54         base = sketch.selectFace()
55         self.extrusion = model.addExtrusion(self.part, base, 10, 0)
56         model.do()
57
58     def tearDown(self):
59         FeaturesAddExtrusionFixture.tearDown(self)
60
61 #-----------------------------------------------------------------------------
62 # TestCases
63
64 class FeaturesAddExtrusionTestCase(FeaturesAddExtrusionFixture):
65
66     def test_add_extrusion_by_face_and_size(self):
67         sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
68         circle = sketch.addCircle(0, 0, 10)
69         model.do()
70
71         base = sketch.selectFace()
72         extrusion = model.addExtrusion(self.part, base, 10, 0)
73         model.do()
74
75         self.assertEqual(extrusion.creationMethod().value(), "BySizes")
76         self.assertEqual(extrusion.toSize().value(), 10)
77         self.assertEqual(extrusion.fromSize().value(), 0)
78         self.assertEqual(extrusion.toObject().context(), None)
79         self.assertEqual(extrusion.toOffset().isInitialized(), False)
80         self.assertEqual(extrusion.fromObject().context(), None)
81         self.assertEqual(extrusion.fromOffset().isInitialized(), False)
82
83     def test_add_extrusion_by_face_and_planes(self):
84         # base
85         base_sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
86         base_circle = base_sketch.addCircle(0, 0, 10)
87         # to
88         to_plane = model.defaultPlane("XOY")
89         to_plane.origin().setZ(10)
90         to_sketch = model.addSketch(self.part, to_plane)
91         to_circle = to_sketch.addCircle(0, 0, 10)
92         # from
93         from_plane = model.defaultPlane("XOY")
94         from_plane.origin().setZ(-10)
95         from_sketch = model.addSketch(self.part, from_plane)
96         from_circle = from_sketch.addCircle(0, 0, 10)
97
98         model.do()
99
100         base = base_sketch.selectFace()
101         to_object = to_sketch.selectFace()[0]
102         from_object = from_sketch.selectFace()[0]
103         extrusion = model.addExtrusion(self.part, base,
104                                        to_object, 15,
105                                        from_object, 20)
106
107         self.assertEqual(extrusion.creationMethod().value(), "ByPlanesAndOffsets")
108         self.assertEqual(extrusion.toSize().isInitialized(), False)
109         self.assertEqual(extrusion.fromSize().isInitialized(), False)
110 #         self.assertEqual(extrusion.getToObject().context(),
111 #                          to_sketch.result())
112         self.assertEqual(extrusion.toOffset().value(), 15)
113 #         self.assertEqual(extrusion.getFromObject().context(),
114 #                          from_sketch.result())
115         self.assertEqual(extrusion.fromOffset().value(), 20)
116
117
118 class FeaturesExtrusionTestCase(FeaturesExtrusionFixture):
119
120     def test_extrusion_feature_calls(self):
121         # call method of the feature
122         self.assertEqual(self.extrusion.getKind(), "Extrusion")
123
124     def test_extrusion_get_attribute(self):
125         # call method of the feature
126         self.assertTrue(isinstance(self.extrusion.baseObjects(),
127                                    ModelAPI.ModelAPI_AttributeSelectionList))
128         self.assertTrue(isinstance(self.extrusion.creationMethod(),
129                                    ModelAPI.ModelAPI_AttributeString))
130         self.assertTrue(isinstance(self.extrusion.toSize(),
131                                    ModelAPI.ModelAPI_AttributeDouble))
132         self.assertTrue(isinstance(self.extrusion.fromSize(),
133                                    ModelAPI.ModelAPI_AttributeDouble))
134         self.assertTrue(isinstance(self.extrusion.toObject(),
135                                    ModelAPI.ModelAPI_AttributeSelection))
136         self.assertTrue(isinstance(self.extrusion.toOffset(),
137                                    ModelAPI.ModelAPI_AttributeDouble))
138         self.assertTrue(isinstance(self.extrusion.fromObject(),
139                                    ModelAPI.ModelAPI_AttributeSelection))
140         self.assertTrue(isinstance(self.extrusion.fromOffset(),
141                                    ModelAPI.ModelAPI_AttributeDouble))
142
143     def test_extrusion_set_sizes(self):
144         self.extrusion.setSizes(15, 20)
145         self.assertEqual(self.extrusion.creationMethod().value(), "BySizes")
146         self.assertEqual(self.extrusion.toSize().value(), 15)
147         self.assertEqual(self.extrusion.fromSize().value(), 20)
148         self.assertEqual(self.extrusion.toObject().context(), None)
149         self.assertEqual(self.extrusion.toOffset().isInitialized(), False)
150         self.assertEqual(self.extrusion.fromObject().context(), None)
151         self.assertEqual(self.extrusion.fromOffset().isInitialized(), False)
152
153     def test_extrusion_set_planes_and_offsets(self):
154         # to
155         to_plane = model.defaultPlane("XOY")
156         to_plane.origin().setZ(10)
157         to_sketch = model.addSketch(self.part, to_plane)
158         to_circle = to_sketch.addCircle(0, 0, 10)
159         # from
160         from_plane = model.defaultPlane("XOY")
161         from_plane.origin().setZ(-10)
162         from_sketch = model.addSketch(self.part, from_plane)
163         from_circle = from_sketch.addCircle(0, 0, 10)
164
165         model.do()
166
167         to_object = to_sketch.selectFace()[0]
168         from_object = from_sketch.selectFace()[0]
169
170         self.part.moveFeature(self.extrusion.feature(), from_sketch.feature())
171
172         self.extrusion.setPlanesAndOffsets(to_object, 15, from_object, 20)
173
174
175 if __name__ == "__main__":
176     unittest.main(exit=False)