Salome HOME
CPP API for FeaturesPlugin_Extrusion
[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_by_face_and_size(self):
46         sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
47         circle = sketch.addCircle(0, 0, 10)
48         model.do()
49
50         base = sketch.selectFace(circle.result())
51         extrusion = model.addExtrusion(self.part, base, 10, 0)
52         model.do()
53
54         self.assertEqual(extrusion.getCreationMethod().value(), "BySizes")
55         self.assertEqual(extrusion.getToSize().value(), 10)
56         self.assertEqual(extrusion.getFromSize().value(), 0)
57         self.assertEqual(extrusion.getToObject().context(), None)
58         self.assertEqual(extrusion.getToOffset().value(), 0)
59         self.assertEqual(extrusion.getFromObject().context(), None)
60         self.assertEqual(extrusion.getFromOffset().value(), 0)
61
62     def test_add_extrusion_by_face_and_planes(self):
63         # base
64         base_sketch = model.addSketch(self.part, model.defaultPlane("XOY"))
65         base_circle = base_sketch.addCircle(0, 0, 10)
66         # to
67         to_plane = model.defaultPlane("XOY")
68         to_plane.location().setZ(10)
69         to_sketch = model.addSketch(self.part, to_plane)
70         to_circle = to_sketch.addCircle(0, 0, 10)
71         # from
72         from_plane = model.defaultPlane("XOY")
73         from_plane.location().setZ(-10)
74         from_sketch = model.addSketch(self.part, from_plane)
75         from_circle = from_sketch.addCircle(0, 0, 10)
76
77         model.do()
78
79         base = base_sketch.selectFace(base_circle.result())
80         to_object = to_sketch.selectFace(to_circle.result())[0]
81         from_object = from_sketch.selectFace(from_circle.result())[0]
82         extrusion = model.addExtrusion(self.part, base,
83                                        to_object, 15,
84                                        from_object, 20)
85
86         self.assertEqual(extrusion.getCreationMethod().value(), "ByPlanesAndOffsets")
87         self.assertEqual(extrusion.getToSize().value(), 0)
88         self.assertEqual(extrusion.getFromSize().value(), 0)
89 #         self.assertEqual(extrusion.getToObject().context(),
90 #                          to_sketch.result())
91         self.assertEqual(extrusion.getToOffset().value(), 15)
92 #         self.assertEqual(extrusion.getFromObject().context(),
93 #                          from_sketch.result())
94         self.assertEqual(extrusion.getFromOffset().value(), 20)
95
96
97 class FeaturesExtrusionTestCase(FeaturesExtrusionFixture):
98
99     def test_extrusion_feature_calls(self):
100         # call method of the feature
101         self.assertEqual(self.extrusion.getKind(), "Extrusion")
102
103     def test_extrusion_get_attribute(self):
104         # call method of the feature
105         self.assertTrue(isinstance(self.extrusion.getBase(),
106                                    ModelAPI.ModelAPI_AttributeSelectionList))
107         self.assertTrue(isinstance(self.extrusion.getCreationMethod(),
108                                    ModelAPI.ModelAPI_AttributeString))
109         self.assertTrue(isinstance(self.extrusion.getToSize(),
110                                    ModelAPI.ModelAPI_AttributeDouble))
111         self.assertTrue(isinstance(self.extrusion.getFromSize(),
112                                    ModelAPI.ModelAPI_AttributeDouble))
113         self.assertTrue(isinstance(self.extrusion.getToObject(),
114                                    ModelAPI.ModelAPI_AttributeSelection))
115         self.assertTrue(isinstance(self.extrusion.getToOffset(),
116                                    ModelAPI.ModelAPI_AttributeDouble))
117         self.assertTrue(isinstance(self.extrusion.getFromObject(),
118                                    ModelAPI.ModelAPI_AttributeSelection))
119         self.assertTrue(isinstance(self.extrusion.getFromOffset(),
120                                    ModelAPI.ModelAPI_AttributeDouble))
121
122     def test_extrusion_set_sizes(self):
123         self.extrusion.setSizes(15, 20)
124         self.assertEqual(self.extrusion.getCreationMethod().value(), "BySizes")
125         self.assertEqual(self.extrusion.getToSize().value(), 15)
126         self.assertEqual(self.extrusion.getFromSize().value(), 20)
127         self.assertEqual(self.extrusion.getToObject().context(), None)
128         self.assertEqual(self.extrusion.getToOffset().value(), 0)
129         self.assertEqual(self.extrusion.getFromObject().context(), None)
130         self.assertEqual(self.extrusion.getFromOffset().value(), 0)
131
132     def test_extrusion_set_planes_and_offsets(self):
133         # to
134         to_plane = model.defaultPlane("XOY")
135         to_plane.location().setZ(10)
136         to_sketch = model.addSketch(self.part, to_plane)
137         to_circle = to_sketch.addCircle(0, 0, 10)
138         # from
139         from_plane = model.defaultPlane("XOY")
140         from_plane.location().setZ(-10)
141         from_sketch = model.addSketch(self.part, from_plane)
142         from_circle = from_sketch.addCircle(0, 0, 10)
143
144         model.do()
145
146         to_object = to_sketch.selectFace(to_circle.result())[0]
147         from_object = from_sketch.selectFace(from_circle.result())[0]
148         self.extrusion.setPlanesAndOffsets(to_object, 15, from_object, 20)
149
150
151 if __name__ == "__main__":
152     unittest.main()