mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-29 00:06:44 -04:00
tests: add various tests for PythonTask.__dict__ access
This commit is contained in:
parent
71b8bceb79
commit
5f0f005723
78
tests/event/test_pythontask.py
Normal file
78
tests/event/test_pythontask.py
Normal file
@ -0,0 +1,78 @@
|
||||
from panda3d.core import PythonTask
|
||||
import pytest
|
||||
import types
|
||||
import sys
|
||||
|
||||
|
||||
def test_pythontask_property_builtin():
|
||||
task = PythonTask()
|
||||
|
||||
# Read-write property
|
||||
assert task.name == ""
|
||||
task.name = "ABC"
|
||||
|
||||
# Read-only property
|
||||
assert task.dt == 0.0
|
||||
with pytest.raises(AttributeError):
|
||||
task.dt = 1.0
|
||||
assert task.dt == 0.0
|
||||
|
||||
# Non-existent property
|
||||
with pytest.raises(AttributeError):
|
||||
task.abc
|
||||
|
||||
|
||||
def test_pythontask_property_custom():
|
||||
task = PythonTask()
|
||||
assert not hasattr(task, 'custom_field')
|
||||
|
||||
task.custom_field = 1.0
|
||||
assert hasattr(task, 'custom_field')
|
||||
assert task.custom_field == 1.0
|
||||
|
||||
task.custom_field = 2.0
|
||||
assert task.custom_field == 2.0
|
||||
|
||||
del task.custom_field
|
||||
assert not hasattr(task, 'custom_field')
|
||||
|
||||
|
||||
def test_pythontask_property_override():
|
||||
task = PythonTask()
|
||||
assert isinstance(task.gather, types.BuiltinMethodType)
|
||||
|
||||
task.gather = 123
|
||||
assert task.gather == 123
|
||||
|
||||
del task.gather
|
||||
assert isinstance(task.gather, types.BuiltinMethodType)
|
||||
|
||||
|
||||
def test_pythontask_dict_get():
|
||||
task = PythonTask()
|
||||
|
||||
d = task.__dict__
|
||||
rc1 = sys.getrefcount(d)
|
||||
|
||||
task.__dict__
|
||||
task.__dict__
|
||||
|
||||
rc2 = sys.getrefcount(d)
|
||||
|
||||
assert rc1 == rc2
|
||||
|
||||
|
||||
def test_pythontask_dict_set():
|
||||
task = PythonTask()
|
||||
d = {}
|
||||
|
||||
rc1 = sys.getrefcount(d)
|
||||
task.__dict__ = d
|
||||
rc2 = sys.getrefcount(d)
|
||||
|
||||
assert rc1 + 1 == rc2
|
||||
|
||||
task.__dict__ = {}
|
||||
rc2 = sys.getrefcount(d)
|
||||
|
||||
assert rc1 == rc2
|
Loading…
x
Reference in New Issue
Block a user