Skip to content

Commit 4d5f4a5

Browse files
committed
improve docs of vec2d by moving most tests into doctests
1 parent e4a315f commit 4d5f4a5

File tree

2 files changed

+51
-107
lines changed

2 files changed

+51
-107
lines changed

pymunk/tests/test_common.py

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,16 +108,65 @@ def testNoStaticShape(self) -> None:
108108
b3.position = -9, 0
109109

110110
space.add(b1, c1, b2, c2, b3, c3)
111+
print("\nc1", c1)
111112

112113
def remove_first(arbiter: p.Arbiter, space: p.Space, data: Any) -> None:
114+
print("SEP 1", arbiter.shapes)
115+
print(" space.shapes", space.shapes)
116+
print(" space._remove_later", space._remove_later)
113117
first_shape = arbiter.shapes[0]
114118
if c1 in space.shapes:
115119
space.remove(c1)
120+
print(" space.shapes", space.shapes)
121+
print(" space._remove_later", space._remove_later)
122+
print("SEP done")
116123
# space.add_post_step_callback(space.remove, first_shape, first_shape.body)
117-
space.remove(c1)
124+
# space.remove(c1)
118125

119126
space.add_collision_handler(2, 0).separate = remove_first
120-
127+
print(1)
121128
space.step(1.0 / 60)
129+
print(2)
122130
b2.position = 22, 0
123131
space.step(1.0 / 60)
132+
print(3)
133+
134+
def testX(self) -> None:
135+
space = p.Space()
136+
137+
b1 = p.Body()
138+
c1 = p.Circle(b1, 10)
139+
c1.collision_type = 2
140+
141+
b2 = p.Body()
142+
c2 = p.Circle(b2, 10)
143+
144+
b3 = p.Body()
145+
c3 = p.Circle(b3, 10)
146+
147+
# b1.position = 0, 0
148+
# b2.position = 9, 0
149+
# b3.position = -9, 0
150+
151+
space.add(b1, c1, b2, c2, b3, c3)
152+
print("\nc1", c1)
153+
154+
def separate(arbiter: p.Arbiter, space: p.Space, data: Any) -> None:
155+
print("SEP 1", arbiter.shapes)
156+
print(" space.shapes", space.shapes)
157+
print(" space._remove_later", space._remove_later)
158+
if c1 in space.shapes:
159+
space.remove(c1)
160+
print(" space.shapes", space.shapes)
161+
print(" space._remove_later", space._remove_later)
162+
print("SEP done")
163+
# space.add_post_step_callback(space.remove, first_shape, first_shape.body)
164+
# space.remove(c1)
165+
166+
space.add_collision_handler(2, 0).separate = separate
167+
print(1)
168+
space.step(1)
169+
print(2)
170+
b2.position = 22, 0
171+
space.step(1)
172+
print(3)

pymunk/tests/test_vec2d.py

Lines changed: 0 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import math
2-
import pickle
31
import unittest
42

53
import pymunk
@@ -8,103 +6,16 @@
86

97
class UnitTestVec2d(unittest.TestCase):
108
def testCreationAndAccess(self) -> None:
11-
v = Vec2d(*(0, 0))
12-
self.assertEqual(v.x, 0)
13-
self.assertEqual(v[0], 0)
14-
self.assertEqual(v.y, 0)
15-
self.assertEqual(v[1], 0)
16-
17-
v = Vec2d(3, 5)
18-
self.assertEqual(v.x, 3)
19-
self.assertEqual(v[0], 3)
20-
self.assertEqual(v.y, 5)
21-
self.assertEqual(v[1], 5)
229

2310
v = Vec2d(111, 222)
24-
self.assertTrue(v.x == 111 and v.y == 222)
25-
with self.assertRaises(AttributeError):
26-
v.x = 333 # type: ignore
2711
with self.assertRaises(TypeError):
2812
v[1] = 444 # type: ignore
2913

30-
v = Vec2d(3, 5)
31-
self.assertEqual(len(v), 2)
32-
self.assertEqual(list(v), [3, 5])
33-
self.assertEqual(tuple(v), (3, 5))
34-
35-
v = Vec2d.from_polar(3, 2)
36-
self.assertEqual(v.length, 3)
37-
self.assertEqual(v.angle, 2)
38-
39-
def testMath(self) -> None:
40-
v = Vec2d(111, 222)
41-
self.assertEqual(v + Vec2d(1, 2), Vec2d(112, 224))
42-
self.assertEqual(v + (1, 2), Vec2d(112, 224))
43-
self.assertEqual((1, 2) + v, Vec2d(112, 224))
44-
45-
self.assertEqual(v - Vec2d(1, 2), Vec2d(110, 220))
46-
self.assertEqual(v - (1, 2), Vec2d(110, 220))
47-
self.assertEqual((1, 2) - v, Vec2d(-110, -220))
48-
49-
self.assertEqual(v * 3, Vec2d(333, 666))
50-
self.assertEqual(3 * v, Vec2d(333, 666))
51-
52-
self.assertEqual(v / 2, Vec2d(55.5, 111))
53-
self.assertEqual(v // 2, Vec2d(55, 111))
54-
55-
def testUnary(self) -> None:
56-
v = Vec2d(111, 222)
57-
self.assertEqual(+v, v)
58-
self.assertEqual(-v, Vec2d(-111, -222))
59-
self.assertAlmostEqual(abs(v), 248.20354550247666)
60-
6114
def testLength(self) -> None:
6215
v = Vec2d(3, 4)
63-
self.assertTrue(v.length == 5)
64-
self.assertTrue(v.get_length_sqrd() == 25)
6516
with self.assertRaises(AttributeError):
6617
v.length = 5 # type: ignore
6718

68-
def testAnglesDegrees(self) -> None:
69-
v = Vec2d(0, 3)
70-
self.assertEqual(v.angle_degrees, 90)
71-
v2 = Vec2d(*v)
72-
v = v.rotated_degrees(-90)
73-
self.assertEqual(v.get_angle_degrees_between(v2), 90)
74-
v2 = v2.rotated_degrees(-90)
75-
self.assertEqual(v.length, v2.length)
76-
self.assertAlmostEqual(v2.angle_degrees, 0, 10)
77-
self.assertAlmostEqual(v2.x, 3)
78-
self.assertAlmostEqual(v2.y, 0)
79-
self.assertTrue((v - v2).length < 0.00001)
80-
self.assertEqual(v.length, v2.length)
81-
v2 = v2.rotated_degrees(300)
82-
self.assertAlmostEqual(
83-
v.get_angle_degrees_between(v2), -60
84-
) # Allow a little more error than usual (floats..)
85-
v2 = v2.rotated_degrees(v2.get_angle_degrees_between(v))
86-
self.assertAlmostEqual(v.get_angle_degrees_between(v2), 0)
87-
88-
def testAnglesRadians(self) -> None:
89-
v = Vec2d(0, 3)
90-
self.assertEqual(v.angle, math.pi / 2.0)
91-
v2 = Vec2d(*v)
92-
v = v.rotated(-math.pi / 2.0)
93-
self.assertEqual(v.get_angle_between(v2), math.pi / 2.0)
94-
v2 = v2.rotated(-math.pi / 2.0)
95-
self.assertEqual(v.length, v2.length)
96-
self.assertAlmostEqual(v2.angle, 0)
97-
self.assertEqual(v2.x, 3)
98-
self.assertAlmostEqual(v2.y, 0)
99-
self.assertTrue((v - v2).length < 0.00001)
100-
self.assertEqual(v.length, v2.length)
101-
v2 = v2.rotated(math.pi / 3.0 * 5.0)
102-
self.assertAlmostEqual(
103-
v.get_angle_between(v2), -math.pi / 3.0
104-
) # Allow a little more error than usual (floats..)
105-
v2 = v2.rotated(v2.get_angle_between(v))
106-
self.assertAlmostEqual(v.get_angle_between(v2), 0)
107-
10819
def testComparison(self) -> None:
10920
int_vec = Vec2d(3, -2)
11021
flt_vec = Vec2d(3.0, -2.0)
@@ -117,19 +28,3 @@ def testComparison(self) -> None:
11728
self.assertTrue(int_vec != (0, 0))
11829
self.assertTrue(int_vec != 5) # type: ignore
11930
self.assertTrue(int_vec != (3, -2, -5)) # type: ignore
120-
121-
def testImmuatable(self) -> None:
122-
inplace_vec = Vec2d(5, 13)
123-
inplace_ref = inplace_vec
124-
inplace_vec *= 0.5
125-
inplace_vec += Vec2d(0.5, 0.5)
126-
inplace_vec -= Vec2d(3.5, 3.5)
127-
inplace_vec /= 5
128-
self.assertEqual(inplace_ref, Vec2d(5, 13))
129-
self.assertEqual(inplace_vec, Vec2d(-0.1, 0.7))
130-
131-
def testPickle(self) -> None:
132-
testvec = Vec2d(5, 0.3)
133-
testvec_str = pickle.dumps(testvec)
134-
loaded_vec = pickle.loads(testvec_str)
135-
self.assertEqual(testvec, loaded_vec)

0 commit comments

Comments
 (0)