Salome HOME
fdccca617353510548e3d2955ea690a7e519d6db
[modules/shaper.git] / src / SketchPlugin / Test / TestMoveCircle.py
1 """
2     Test movement of the sketch circle
3 """
4
5 import unittest
6 from GeomDataAPI import geomDataAPI_Point2D
7 from salome.shaper import model
8
9 __updated__ = "2017-05-11"
10
11 class TestMoveCircle(unittest.TestCase):
12   def setUp(self):
13     model.begin()
14     self.myDocument = model.moduleDocument()
15     self.mySketch = model.addSketch(self.myDocument, model.defaultPlane("XOY"))
16     self.myCenter = [70., 50.]
17     self.myRadius = 20.
18     self.myCircle = self.mySketch.addCircle(self.myCenter[0], self.myCenter[1], self.myRadius)
19     self.myDOF = 3
20     model.do()
21     self.checkDOF()
22
23   def tearDown(self):
24     self.checkDOF()
25     model.end()
26     assert(model.checkPythonDump())
27
28   def checkDOF(self):
29     self.assertEqual(model.dof(self.mySketch), self.myDOF)
30
31   def checkPointCoordinates(self, thePoint, theCoordinates):
32     self.assertAlmostEqual(thePoint.x(), theCoordinates[0])
33     self.assertAlmostEqual(thePoint.y(), theCoordinates[1])
34
35   def checkPointOnCircle(self, theCoordinates):
36     self.assertAlmostEqual(model.distancePointPoint(self.myCircle.center(),  theCoordinates), self.myCircle.radius().value())
37
38   def fixCircleRadius(self):
39     self.mySketch.setRadius(self.myCircle.results()[1], self.myRadius)
40     self.myDOF -= 1
41     model.do()
42     self.checkDOF()
43
44   def fixCircleCenter(self):
45     self.mySketch.setFixed(self.myCircle.center())
46     self.myDOF -= 2
47     model.do()
48     self.checkDOF()
49
50
51   def test_move_center_free_circle(self):
52     """ Test 1. Movement of central point of a free circle
53     """
54     newPosition = [self.myCenter[0] + 20., self.myCenter[1] + 10.]
55     self.mySketch.move(self.myCircle.center(), newPosition[0], newPosition[1])
56     model.do()
57     self.checkPointCoordinates(self.myCircle.center(), newPosition)
58     self.assertAlmostEqual(self.myCircle.radius().value(), self.myRadius)
59
60   def test_move_free_circle(self):
61     """ Test 2. Movement of a free circle dragging the edge
62     """
63     newPosition = [120., 90.]
64     self.mySketch.move(self.myCircle.defaultResult(), newPosition[0], newPosition[1])
65     model.do()
66     self.checkPointCoordinates(self.myCircle.center(), self.myCenter)
67     self.checkPointOnCircle(newPosition)
68     self.assertNotEqual(self.myCircle.radius().value(), self.myRadius)
69
70   def test_move_center_circle_fixed_radius(self):
71     """ Test 3. Movement of central point of a circle with fixed radius
72     """
73     self.fixCircleRadius()
74
75     newPosition = [self.myCenter[0] + 20., self.myCenter[1] + 10.]
76     self.mySketch.move(self.myCircle.center(), newPosition[0], newPosition[1])
77     model.do()
78     self.checkPointCoordinates(self.myCircle.center(), newPosition)
79     self.assertAlmostEqual(self.myCircle.radius().value(), self.myRadius)
80
81   def test_move_circle_fixed_radius(self):
82     """ Test 4. Movement of a circle with fixed radius
83     """
84     self.fixCircleRadius()
85
86     newPosition = [120., 90.]
87     self.mySketch.move(self.myCircle.defaultResult(), newPosition[0], newPosition[1])
88     model.do()
89     self.assertAlmostEqual(self.myCircle.radius().value(), self.myRadius)
90     self.assertNotEqual(self.myCircle.center().x(), self.myCenter[0])
91     self.assertNotEqual(self.myCircle.center().y(), self.myCenter[1])
92
93   def test_move_center_circle_fixed_center(self):
94     """ Test 5. Movement of central point of a circle with fixed center (nothing should be changed)
95     """
96     self.fixCircleCenter()
97
98     newPosition = [self.myCenter[0] + 20., self.myCenter[1] + 10.]
99     self.mySketch.move(self.myCircle.center(), newPosition[0], newPosition[1])
100     model.do()
101     self.checkPointCoordinates(self.myCircle.center(), self.myCenter)
102     self.assertAlmostEqual(self.myCircle.radius().value(), self.myRadius)
103
104   def test_move_circle_fixed_center(self):
105     """ Test 6. Movement of a circle with fixed center
106     """
107     self.fixCircleCenter()
108
109     newPosition = [120., 90.]
110     self.mySketch.move(self.myCircle.defaultResult(), newPosition[0], newPosition[1])
111     model.do()
112     self.checkPointOnCircle(newPosition)
113     self.assertNotEqual(self.myCircle.radius().value(), self.myRadius)
114
115   def test_move_fixed_circle(self):
116     """ Test 7. Trying to move fully fixed circle
117     """
118     self.fixCircleCenter()
119     self.fixCircleRadius()
120
121     newPosition = [120., 90.]
122     self.mySketch.move(self.myCircle.defaultResult(), newPosition[0], newPosition[1])
123     model.do()
124     self.checkPointCoordinates(self.myCircle.center(), self.myCenter)
125     self.assertAlmostEqual(self.myCircle.radius().value(), self.myRadius)
126
127
128 if __name__ == '__main__':
129   unittest.main()