Skip to content

Commit ffed596

Browse files
leandro-benedet-garciardb
authored andcommitted
tests: add more unit tests for vector classes
Closes panda3d#826
1 parent 2960b67 commit ffed596

File tree

3 files changed

+201
-12
lines changed

3 files changed

+201
-12
lines changed

tests/linmath/test_lvector2.py

Lines changed: 64 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,90 @@
11
from math import floor, ceil
22
import sys
33

4+
from panda3d.core import Vec2, Vec3, Vec4, Vec2F, Vec2D
45
import pytest
56

6-
from panda3d.core import Vec2
7-
8-
9-
original_vector = Vec2(2.3, -2.6)
107

118
reason = '''Rounding in Python 2.7 expects to return a float value, since it returns a Vector it
129
does not work. When Python 2.7 gets deprecated, remove this check.'''
1310

11+
1412
@pytest.mark.skipif(sys.version_info < (3, 5), reason=reason)
1513
def test_round():
14+
original_vector = Vec2(2.3, -2.6)
15+
1616
rounded_vector = round(original_vector)
1717
assert rounded_vector.x == 2
1818
assert rounded_vector.y == -3
1919

20+
2021
@pytest.mark.skipif(sys.version_info < (3, 5), reason=reason)
2122
def test_floor():
23+
original_vector = Vec2(2.3, -2.6)
24+
2225
rounded_vector = floor(original_vector)
2326
assert rounded_vector.x == 2
2427
assert rounded_vector.y == -3
2528

29+
2630
@pytest.mark.skipif(sys.version_info < (3, 5), reason=reason)
2731
def test_ceil():
32+
original_vector = Vec2(2.3, -2.6)
33+
2834
rounded_vector = ceil(original_vector)
2935
assert rounded_vector.x == 3
3036
assert rounded_vector.y == -2
37+
38+
39+
def test_vec2_creation():
40+
assert Vec2(x=1, y=2) == Vec2(1, 2) == Vec2((1, 2))
41+
42+
43+
def test_vec2_getter_setter():
44+
original_vector = Vec2(2, 3)
45+
46+
assert original_vector.x == 2
47+
assert original_vector.y == 3
48+
49+
original_vector.x = 1
50+
original_vector.y = 3
51+
52+
assert original_vector == Vec2(1, 3)
53+
54+
original_vector[0] = 3
55+
original_vector[1] = 1
56+
57+
assert original_vector == Vec2(3, 1)
58+
59+
original_vector.set_x(-8)
60+
original_vector.set_y(6)
61+
62+
assert original_vector.x == -8
63+
assert original_vector.y == 6
64+
65+
66+
def test_vec2_sum():
67+
original_vector = Vec2(2, 3)
68+
69+
assert original_vector + original_vector == Vec2(4, 6)
70+
assert original_vector + 3 == Vec2(5, 6)
71+
72+
73+
def test_vec2_power():
74+
assert Vec2(2, -3) ** 2 == Vec2(4, 9)
75+
76+
77+
def test_vec2_len():
78+
assert len(Vec2(2, -3)) == 2
79+
80+
81+
def test_vec2_swizzle_mask():
82+
original_vector = Vec2(3, 5)
83+
84+
assert original_vector.yx == Vec2(5, 3)
85+
assert original_vector.xy == original_vector
86+
87+
88+
def test_vec2_str():
89+
assert str(Vec2F(2, 3)) == "LVector2f(2, 3)"
90+
assert str(Vec2D(2, 3)) == "LVector2d(2, 3)"

tests/linmath/test_lvector3.py

Lines changed: 65 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
from math import floor, ceil
22
import sys
33

4+
from panda3d.core import Vec2, Vec3, Vec3F, Vec3D
45
import pytest
56

6-
from panda3d.core import Vec3
7-
8-
9-
original_vector = Vec3(2.3, -2.6, 3.5)
107

118
reason = '''Rounding in Python 2.7 expects to return a float value, since it returns a Vector it
129
does not work. When Python 2.7 gets deprecated, remove this check.'''
1310

1411
@pytest.mark.skipif(sys.version_info < (3, 5), reason=reason)
1512
def test_round():
13+
original_vector = Vec3(2.3, -2.6, 3.5)
14+
1615
rounded_vector = round(original_vector)
1716
assert rounded_vector.x == 2
1817
assert rounded_vector.y == -3
@@ -21,6 +20,8 @@ def test_round():
2120

2221
@pytest.mark.skipif(sys.version_info < (3, 5), reason=reason)
2322
def test_floor():
23+
original_vector = Vec3(2.3, -2.6, 3.5)
24+
2425
rounded_vector = floor(original_vector)
2526
assert rounded_vector.x == 2
2627
assert rounded_vector.y == -3
@@ -29,7 +30,67 @@ def test_floor():
2930

3031
@pytest.mark.skipif(sys.version_info < (3, 5), reason=reason)
3132
def test_ceil():
33+
original_vector = Vec3(2.3, -2.6, 3.5)
34+
3235
rounded_vector = ceil(original_vector)
3336
assert rounded_vector.x == 3
3437
assert rounded_vector.y == -2
3538
assert rounded_vector.z == 4
39+
40+
41+
def test_vec3_creation():
42+
assert Vec3(x=1, y=2, z=1) == Vec3(1, 2, 1) == Vec3((1, 2, 1))
43+
44+
45+
def test_vec3_getter_setter():
46+
original_vector = Vec3(2, 3, 7)
47+
48+
assert original_vector.x == 2
49+
assert original_vector.y == 3
50+
assert original_vector.z == 7
51+
52+
original_vector.x = 1
53+
original_vector.y = 3
54+
original_vector.z = 5
55+
56+
assert original_vector == Vec3(1, 3, 5)
57+
58+
original_vector[0] = 3
59+
original_vector[1] = 1
60+
original_vector[2] = 1
61+
62+
assert original_vector == Vec3(3, 1, 1)
63+
64+
original_vector.set_x(-8)
65+
original_vector.set_y(6)
66+
original_vector.set_z(10)
67+
68+
assert original_vector.x == -8
69+
assert original_vector.y == 6
70+
assert original_vector.z == 10
71+
72+
73+
def test_vec3_sum():
74+
original_vector = Vec3(2, 3, -2)
75+
76+
assert original_vector + original_vector == Vec3(4, 6, -4)
77+
assert original_vector + 3 == Vec3(5, 6, 1)
78+
79+
80+
def test_vec3_power():
81+
assert Vec3(2, -3, 2) ** 2 == Vec3(4, 9, 4)
82+
83+
84+
def test_vec3_len():
85+
assert len(Vec3(2, -3, 10)) == 3
86+
87+
def test_vec3_swizzle_mask():
88+
original_vector = Vec3(3, 5, 1)
89+
90+
assert original_vector.xy == Vec2(3, 5)
91+
assert original_vector.zxy == Vec3(1, 3, 5)
92+
93+
94+
def test_vec3_str():
95+
assert str(Vec3F(2, 3, 1)) == "LVector3f(2, 3, 1)"
96+
assert str(Vec3D(2, 3, 1)) == "LVector3d(2, 3, 1)"

tests/linmath/test_lvector4.py

Lines changed: 72 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
from math import floor, ceil
22
import sys
33

4+
from panda3d.core import Vec2, Vec3, Vec4, Vec4F, Vec4D
45
import pytest
56

6-
from panda3d.core import Vec4
7-
8-
9-
original_vector = Vec4(2.3, -2.6, 3.5, 1)
107

118
reason = '''Rounding in Python 2.7 expects to return a float value, since it returns a Vector it
129
does not work. When Python 2.7 gets deprecated, remove this check.'''
1310

1411
@pytest.mark.skipif(sys.version_info < (3, 5), reason=reason)
1512
def test_round():
13+
original_vector = Vec4(2.3, -2.6, 3.5, 1)
14+
1615
rounded_vector = round(original_vector)
1716
assert rounded_vector.x == 2
1817
assert rounded_vector.y == -3
@@ -22,6 +21,8 @@ def test_round():
2221

2322
@pytest.mark.skipif(sys.version_info < (3, 5), reason=reason)
2423
def test_floor():
24+
original_vector = Vec4(2.3, -2.6, 3.5, 1)
25+
2526
rounded_vector = floor(original_vector)
2627
assert rounded_vector.x == 2
2728
assert rounded_vector.y == -3
@@ -31,8 +32,75 @@ def test_floor():
3132

3233
@pytest.mark.skipif(sys.version_info < (3, 5), reason=reason)
3334
def test_ceil():
35+
original_vector = Vec4(2.3, -2.6, 3.5, 1)
36+
3437
rounded_vector = ceil(original_vector)
3538
assert rounded_vector.x == 3
3639
assert rounded_vector.y == -2
3740
assert rounded_vector.z == 4
3841
assert rounded_vector.w == 1
42+
43+
44+
def test_vec4_creation():
45+
assert Vec4(x=1, y=2, z=1, w=7) == Vec4(1, 2, 1, 7) == Vec4((1, 2, 1, 7))
46+
47+
48+
def test_vec4_getter_setter():
49+
original_vector = Vec4(2, 3, 7, 9)
50+
51+
assert original_vector.x == 2
52+
assert original_vector.y == 3
53+
assert original_vector.z == 7
54+
assert original_vector.w == 9
55+
56+
original_vector.x = 1
57+
original_vector.y = 3
58+
original_vector.z = 5
59+
original_vector.w = -8
60+
61+
assert original_vector == Vec4(1, 3, 5, -8)
62+
63+
original_vector[0] = 3
64+
original_vector[1] = 1
65+
original_vector[2] = 1
66+
original_vector[3] = -2
67+
68+
assert original_vector == Vec4(3, 1, 1, -2)
69+
70+
original_vector.set_x(-8)
71+
original_vector.set_y(6)
72+
original_vector.set_z(10)
73+
original_vector.set_w(30)
74+
75+
assert original_vector.x == -8
76+
assert original_vector.y == 6
77+
assert original_vector.z == 10
78+
assert original_vector.w == 30
79+
80+
81+
def test_vec4_sum():
82+
original_vector = Vec4(2, 3, -2, 1)
83+
84+
assert original_vector + original_vector == Vec4(4, 6, -4, 2)
85+
assert original_vector + 3 == Vec4(5, 6, 1, 4)
86+
87+
88+
def test_vec4_power():
89+
assert Vec4(2, -3, 2, -1) ** 2 == Vec4(4, 9, 4, 1)
90+
91+
92+
def test_vec4_len():
93+
assert len(Vec4(2, -3, 10, 30)) == 4
94+
95+
96+
def test_vec4_swizzle_mask():
97+
original_vector = Vec4(3, 5, 1, 0)
98+
99+
assert original_vector.xy == Vec2(3, 5)
100+
assert original_vector.zxy == Vec3(1, 3, 5)
101+
assert original_vector.zxyw == Vec4(1, 3, 5, 0)
102+
103+
104+
def test_vec4_str():
105+
assert str(Vec4F(2, 3, 1, 9)) == "LVector4f(2, 3, 1, 9)"
106+
assert str(Vec4D(2, 3, 1, 9)) == "LVector4d(2, 3, 1, 9)"

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy