Salome HOME
Test ConstructionAPI_Point by old PythonAPI tests
[modules/shaper.git] / src / PythonAPI / Test / TestFeaturesExtrusion.py
1 import unittest
2
3 import ModelAPI
4
5 import model
6
7 #-----------------------------------------------------------------------------
8 # Fixtures
9
10 class FeaturesAddExtrusionFixture(unittest.TestCase):
11
12     def setUp(self):
13         model.begin()
14         # Create part
15         partset = model.moduleDocument()
16         self.part = model.addPart(partset).document()
17         model.do()
18
19     def tearDown(self):
20         model.end()
21         model.reset()
22
23
24 class FeaturesExtrusionFixture(FeaturesAddExtrusionFixture):
25
26     def setUp(self):
27         FeaturesAddExtrusionFixture.setUp(self)
28         # Create extrusion
29         sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
30         circle = sketch.addCircle(0, 0, 10)
31         model.do()
32
33         base = sketch.selectFace(circle.result())
34         self.extrusion = model.addExtrusion(self.part, base, 10, 0)
35         model.do()
36
37     def tearDown(self):
38         FeaturesAddExtrusionFixture.tearDown(self)
39
40 #-----------------------------------------------------------------------------
41 # TestCases
42
43 class FeaturesAddExtrusionTestCase(FeaturesAddExtrusionFixture):
44
45     def test_add_extrusion_no_base(self):
46         try:
47             extrusion = model.addExtrusion(self.part)
48             fail("addExtrusion should assert if base is not None")
49         except AssertionError:
50             pass
51
52     def test_add_extrusion_by_face_and_size(self):
53         sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
54         circle = sketch.addCircle(0, 0, 10)
55         model.do()
56
57         base = sketch.selectFace(circle.result())
58         extrusion = model.addExtrusion(self.part, base, 10, 0)
59         model.do()
60
61         self.assertEqual(extrusion.getCreationMethod().value(), "BySizes")
62         self.assertEqual(extrusion.getToSize().value(), 10)
63         self.assertEqual(extrusion.getFromSize().value(), 0)
64         self.assertEqual(extrusion.getToObject().context(), None)
65         self.assertEqual(extrusion.getToOffset().value(), 0)
66         self.assertEqual(extrusion.getFromObject().context(), None)
67         self.assertEqual(extrusion.getFromOffset().value(), 0)
68
69     def test_add_extrusion_by_face_and_planes(self):
70         # base
71         base_sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
72         base_circle = base_sketch.addCircle(0, 0, 10)
73         # to
74         to_plane = model.defaultPlane("XOY")
75         to_plane.location().setZ(10)
76         to_sketch = model.addSketch(self.part, to_plane)
77         to_circle = to_sketch.addCircle(0, 0, 10)
78         # from
79         from_plane = model.defaultPlane("XOY")
80         from_plane.location().setZ(-10)
81         from_sketch = model.addSketch(self.part, from_plane)
82         from_circle = from_sketch.addCircle(0, 0, 10)
83
84         model.do()
85
86         base = base_sketch.selectFace(base_circle.result())
87         to_object = to_sketch.selectFace(to_circle.result())[0]
88         from_object = from_sketch.selectFace(from_circle.result())[0]
89         extrusion = model.addExtrusion(self.part, base,
90                                        to_object, 15,
91                                        from_object, 20)
92
93         self.assertEqual(extrusion.getCreationMethod().value(), "ByPlanesAndOffsets")
94         self.assertEqual(extrusion.getToSize().value(), 0)
95         self.assertEqual(extrusion.getFromSize().value(), 0)
96 #         self.assertEqual(extrusion.getToObject().context(),
97 #                          to_sketch.result())
98         self.assertEqual(extrusion.getToOffset().value(), 15)
99 #         self.assertEqual(extrusion.getFromObject().context(),
100 #                          from_sketch.result())
101         self.assertEqual(extrusion.getFromOffset().value(), 20)
102
103
104 class FeaturesExtrusionTestCase(FeaturesExtrusionFixture):
105
106     def test_extrusion_feature_calls(self):
107         # call method of the feature
108         self.assertEqual(self.extrusion.getKind(), "Extrusion")
109
110     def test_extrusion_get_attribute(self):
111         # call method of the feature
112         self.assertTrue(isinstance(self.extrusion.getBase(),
113                                    ModelAPI.ModelAPI_AttributeSelectionList))
114         self.assertTrue(isinstance(self.extrusion.getCreationMethod(),
115                                    ModelAPI.ModelAPI_AttributeString))
116         self.assertTrue(isinstance(self.extrusion.getToSize(),
117                                    ModelAPI.ModelAPI_AttributeDouble))
118         self.assertTrue(isinstance(self.extrusion.getFromSize(),
119                                    ModelAPI.ModelAPI_AttributeDouble))
120         self.assertTrue(isinstance(self.extrusion.getToObject(),
121                                    ModelAPI.ModelAPI_AttributeSelection))
122         self.assertTrue(isinstance(self.extrusion.getToOffset(),
123                                    ModelAPI.ModelAPI_AttributeDouble))
124         self.assertTrue(isinstance(self.extrusion.getFromObject(),
125                                    ModelAPI.ModelAPI_AttributeSelection))
126         self.assertTrue(isinstance(self.extrusion.getFromOffset(),
127                                    ModelAPI.ModelAPI_AttributeDouble))
128
129     def test_extrusion_set_sizes(self):
130         self.extrusion.setSizes(15, 20)
131         self.assertEqual(self.extrusion.getCreationMethod().value(), "BySizes")
132         self.assertEqual(self.extrusion.getToSize().value(), 15)
133         self.assertEqual(self.extrusion.getFromSize().value(), 20)
134         self.assertEqual(self.extrusion.getToObject().context(), None)
135         self.assertEqual(self.extrusion.getToOffset().value(), 0)
136         self.assertEqual(self.extrusion.getFromObject().context(), None)
137         self.assertEqual(self.extrusion.getFromOffset().value(), 0)
138
139     def test_extrusion_set_planes_and_offsets(self):
140         # to
141         to_plane = model.defaultPlane("XOY")
142         to_plane.location().setZ(10)
143         to_sketch = model.addSketch(self.part, to_plane)
144         to_circle = to_sketch.addCircle(0, 0, 10)
145         # from
146         from_plane = model.defaultPlane("XOY")
147         from_plane.location().setZ(-10)
148         from_sketch = model.addSketch(self.part, from_plane)
149         from_circle = from_sketch.addCircle(0, 0, 10)
150
151         model.do()
152
153         to_object = to_sketch.selectFace(to_circle.result())[0]
154         from_object = from_sketch.selectFace(from_circle.result())[0]
155         self.extrusion.setPlanesAndOffsets(to_object, 15, from_object, 20)
156
157
158 if __name__ == "__main__":
159     unittest.main()