express: Implement copy.deepcopy() for PointerToArray

It actually makes a unique copy of the underlying array.
This commit is contained in:
rdb
2022-12-19 16:19:46 +01:00
parent 0ace26a938
commit e67cd74725
5 changed files with 97 additions and 0 deletions
+60
View File
@@ -69,3 +69,63 @@ def test_cpta_float_pickle():
data_pta2 = loads(dumps(data_pta, proto))
assert tuple(data_pta2) == (1.0, 2.0, 3.0)
assert data_pta2.get_data() == data_pta.get_data()
def test_pta_float_copy():
from panda3d.core import PTA_float
from copy import copy
null_pta = PTA_float()
assert copy(null_pta).is_null()
empty_pta = PTA_float([])
empty_pta_copy = copy(empty_pta)
assert not empty_pta_copy.is_null()
assert len(empty_pta_copy) == 0
assert empty_pta_copy.get_ref_count() == 2
data_pta = PTA_float([1.0, 2.0, 3.0])
data_pta_copy = copy(data_pta)
assert not data_pta_copy.is_null()
assert data_pta_copy.get_ref_count() == 2
assert tuple(data_pta_copy) == (1.0, 2.0, 3.0)
def test_pta_float_deepcopy():
from panda3d.core import PTA_float
from copy import deepcopy
null_pta = PTA_float()
assert deepcopy(null_pta).is_null()
empty_pta = PTA_float([])
empty_pta_copy = deepcopy(empty_pta)
assert not empty_pta_copy.is_null()
assert len(empty_pta_copy) == 0
assert empty_pta_copy.get_ref_count() == 1
data_pta = PTA_float([1.0, 2.0, 3.0])
data_pta_copy = deepcopy(data_pta)
assert not data_pta_copy.is_null()
assert data_pta_copy.get_ref_count() == 1
assert tuple(data_pta_copy) == (1.0, 2.0, 3.0)
def test_cpta_float_deepcopy():
from panda3d.core import PTA_float, CPTA_float
from copy import deepcopy
null_pta = CPTA_float(PTA_float())
assert deepcopy(null_pta).is_null()
empty_pta = CPTA_float([])
empty_pta_copy = deepcopy(empty_pta)
assert not empty_pta_copy.is_null()
assert len(empty_pta_copy) == 0
assert empty_pta_copy.get_ref_count() == 1
data_pta = CPTA_float([1.0, 2.0, 3.0])
data_pta_copy = deepcopy(data_pta)
assert not data_pta_copy.is_null()
assert data_pta_copy.get_ref_count() == 1
assert tuple(data_pta_copy) == (1.0, 2.0, 3.0)