test_lvector3.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. from math import floor, ceil
  2. import sys
  3. from panda3d.core import Vec2, Vec3, Vec3F, Vec3D
  4. import pytest
  5. reason = '''Rounding in Python 2.7 expects to return a float value, since it returns a Vector it
  6. does not work. When Python 2.7 gets deprecated, remove this check.'''
  7. @pytest.mark.skipif(sys.version_info < (3, 5), reason=reason)
  8. def test_round():
  9. original_vector = Vec3(2.3, -2.6, 3.5)
  10. rounded_vector = round(original_vector)
  11. assert rounded_vector.x == 2
  12. assert rounded_vector.y == -3
  13. assert rounded_vector.z == 4
  14. @pytest.mark.skipif(sys.version_info < (3, 5), reason=reason)
  15. def test_floor():
  16. original_vector = Vec3(2.3, -2.6, 3.5)
  17. rounded_vector = floor(original_vector)
  18. assert rounded_vector.x == 2
  19. assert rounded_vector.y == -3
  20. assert rounded_vector.z == 3
  21. @pytest.mark.skipif(sys.version_info < (3, 5), reason=reason)
  22. def test_ceil():
  23. original_vector = Vec3(2.3, -2.6, 3.5)
  24. rounded_vector = ceil(original_vector)
  25. assert rounded_vector.x == 3
  26. assert rounded_vector.y == -2
  27. assert rounded_vector.z == 4
  28. def test_vec3_creation():
  29. assert Vec3(x=1, y=2, z=1) == Vec3(1, 2, 1) == Vec3((1, 2, 1))
  30. def test_vec3_getter_setter():
  31. original_vector = Vec3(2, 3, 7)
  32. assert original_vector.x == 2
  33. assert original_vector.y == 3
  34. assert original_vector.z == 7
  35. original_vector.x = 1
  36. original_vector.y = 3
  37. original_vector.z = 5
  38. assert original_vector == Vec3(1, 3, 5)
  39. original_vector[0] = 3
  40. original_vector[1] = 1
  41. original_vector[2] = 1
  42. assert original_vector == Vec3(3, 1, 1)
  43. original_vector.set_x(-8)
  44. original_vector.set_y(6)
  45. original_vector.set_z(10)
  46. assert original_vector.x == -8
  47. assert original_vector.y == 6
  48. assert original_vector.z == 10
  49. def test_vec3_sum():
  50. original_vector = Vec3(2, 3, -2)
  51. assert original_vector + original_vector == Vec3(4, 6, -4)
  52. assert original_vector + 3 == Vec3(5, 6, 1)
  53. def test_vec3_power():
  54. assert Vec3(2, -3, 2) ** 2 == Vec3(4, 9, 4)
  55. def test_vec3_len():
  56. assert len(Vec3(2, -3, 10)) == 3
  57. def test_vec3_swizzle_mask():
  58. original_vector = Vec3(3, 5, 1)
  59. assert original_vector.xy == Vec2(3, 5)
  60. assert original_vector.zxy == Vec3(1, 3, 5)
  61. def test_vec3_str():
  62. assert str(Vec3F(2, 3, 1)) == "LVector3f(2, 3, 1)"
  63. assert str(Vec3D(2, 3, 1)) == "LVector3d(2, 3, 1)"