test_pointertoarray.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. def test_pta_float_compare():
  2. from panda3d.core import PTA_float, CPTA_float
  3. # Two null PTAs
  4. assert PTA_float() == PTA_float()
  5. assert not (PTA_float() != PTA_float())
  6. # Two non-null PTAs
  7. assert PTA_float([1]) != PTA_float([1])
  8. assert not (PTA_float([1]) == PTA_float([1]))
  9. # A copy of a PTA
  10. pta = PTA_float([1])
  11. assert pta == PTA_float(pta)
  12. assert not (pta != PTA_float(pta))
  13. # A const copy of a PTA
  14. pta = PTA_float([1])
  15. cpta = CPTA_float(pta)
  16. assert pta == cpta
  17. assert not (pta != cpta)
  18. def test_pta_float_pickle():
  19. from panda3d.core import PTA_float
  20. from direct.stdpy.pickle import dumps, loads, HIGHEST_PROTOCOL
  21. null_pta = PTA_float()
  22. empty_pta = PTA_float([])
  23. data_pta = PTA_float([1.0, 2.0, 3.0])
  24. data = data_pta.get_data()
  25. for proto in range(1, HIGHEST_PROTOCOL + 1):
  26. null_pta2 = loads(dumps(null_pta, proto))
  27. assert null_pta2.is_null()
  28. assert len(null_pta2) == 0
  29. empty_pta2 = loads(dumps(empty_pta, proto))
  30. assert not empty_pta2.is_null()
  31. assert len(empty_pta2) == 0
  32. data_pta2 = loads(dumps(data_pta, proto))
  33. assert tuple(data_pta2) == (1.0, 2.0, 3.0)
  34. assert data_pta2.get_data() == data_pta.get_data()
  35. def test_cpta_float_pickle():
  36. from panda3d.core import PTA_float, CPTA_float
  37. from direct.stdpy.pickle import dumps, loads, HIGHEST_PROTOCOL
  38. null_pta = CPTA_float(PTA_float())
  39. empty_pta = CPTA_float([])
  40. data_pta = CPTA_float([1.0, 2.0, 3.0])
  41. data = data_pta.get_data()
  42. for proto in range(1, HIGHEST_PROTOCOL + 1):
  43. null_pta2 = loads(dumps(null_pta, proto))
  44. assert null_pta2.is_null()
  45. assert len(null_pta2) == 0
  46. empty_pta2 = loads(dumps(empty_pta, proto))
  47. assert not empty_pta2.is_null()
  48. assert len(empty_pta2) == 0
  49. data_pta2 = loads(dumps(data_pta, proto))
  50. assert tuple(data_pta2) == (1.0, 2.0, 3.0)
  51. assert data_pta2.get_data() == data_pta.get_data()
  52. def test_pta_float_copy():
  53. from panda3d.core import PTA_float
  54. from copy import copy
  55. null_pta = PTA_float()
  56. assert copy(null_pta).is_null()
  57. empty_pta = PTA_float([])
  58. empty_pta_copy = copy(empty_pta)
  59. assert not empty_pta_copy.is_null()
  60. assert len(empty_pta_copy) == 0
  61. assert empty_pta_copy.get_ref_count() == 2
  62. data_pta = PTA_float([1.0, 2.0, 3.0])
  63. data_pta_copy = copy(data_pta)
  64. assert not data_pta_copy.is_null()
  65. assert data_pta_copy.get_ref_count() == 2
  66. assert tuple(data_pta_copy) == (1.0, 2.0, 3.0)
  67. def test_pta_float_deepcopy():
  68. from panda3d.core import PTA_float
  69. from copy import deepcopy
  70. null_pta = PTA_float()
  71. assert deepcopy(null_pta).is_null()
  72. empty_pta = PTA_float([])
  73. empty_pta_copy = deepcopy(empty_pta)
  74. assert not empty_pta_copy.is_null()
  75. assert len(empty_pta_copy) == 0
  76. assert empty_pta_copy.get_ref_count() == 1
  77. data_pta = PTA_float([1.0, 2.0, 3.0])
  78. data_pta_copy = deepcopy(data_pta)
  79. assert not data_pta_copy.is_null()
  80. assert data_pta_copy.get_ref_count() == 1
  81. assert tuple(data_pta_copy) == (1.0, 2.0, 3.0)
  82. def test_cpta_float_deepcopy():
  83. from panda3d.core import PTA_float, CPTA_float
  84. from copy import deepcopy
  85. null_pta = CPTA_float(PTA_float())
  86. assert deepcopy(null_pta).is_null()
  87. empty_pta = CPTA_float([])
  88. empty_pta_copy = deepcopy(empty_pta)
  89. assert not empty_pta_copy.is_null()
  90. assert len(empty_pta_copy) == 0
  91. assert empty_pta_copy.get_ref_count() == 1
  92. data_pta = CPTA_float([1.0, 2.0, 3.0])
  93. data_pta_copy = deepcopy(data_pta)
  94. assert not data_pta_copy.is_null()
  95. assert data_pta_copy.get_ref_count() == 1
  96. assert tuple(data_pta_copy) == (1.0, 2.0, 3.0)