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