9 preserve
= ['camera', 'DIRECT']
10 unexpected_nodes
= [c
for c
in render
.children
if c
.name
not in preserve
]
11 for node
in unexpected_nodes
: Assert
.__process
_render
3d
_exception
(node
)
14 def __process_render3d_exception(node
):
16 message
= f
'unexpected render3d node: {node.name}'
17 raise Exception(message
)
20 def assert_aspect2d():
22 'a2dBackground', 'a2dTopCenter', 'a2dTopCenterNS',
23 'a2dBottomCenter', 'a2dBottomCenterNS', 'a2dLeftCenter',
24 'a2dLeftCenterNS', 'a2dRightCenter', 'a2dRightCenterNS',
25 'a2dTopLeft', 'a2dTopLeftNS', 'a2dTopRight',
26 'a2dTopRightNS', 'a2dBottomLeft', 'a2dBottomLeftNS',
27 'a2dBottomRight', 'a2dBottomRightNS', 'test_txt']
28 unexpected_nodes
= [c
for c
in aspect2d
.children
29 if c
.name
not in preserve
and not c
.has_python_tag('preserve')]
30 for node
in unexpected_nodes
: Assert
.__process
_aspect
2d
_exception
(node
)
33 def __process_aspect2d_exception(node
):
35 message
= f
'unexpected aspect2d node: {node.name}'
36 raise Exception(message
)
39 def assert_render2d():
40 preserve
= ['aspect2d', 'pixel2d', 'camera2d']
41 unexpected_nodes
= [c
for c
in render2d
.children
if c
.name
not in preserve
and not c
.has_python_tag('preserve')]
42 for node
in unexpected_nodes
: Assert
.__process
_render
2d
_exception
(node
)
45 def __process_render2d_exception(self
, node
):
47 message
= f
'unexpected render2d node: {node.name}'
48 raise Exception(message
)
52 preserve
= ['window-event', 'window-closed', 'async_loader_0', 'async_loader_1',
53 'render-texture-targets-changed', 'aspectRatioChanged', 'new_scene']
54 preserve_re
= ['^async_loader_.*', '^click-mouse1-pg.*']
55 unexpected_events
= [e
for e
in messenger
.getEvents()
56 if e
not in preserve
and not any(search(r
, e
) for r
in preserve_re
)]
57 for e
in unexpected_events
: Assert
.__process
_event
_exception
(e
)
60 def __process_event_exception(event
):
61 if (acc
:= messenger
.who_accepts(event
)):
62 Assert
.__process
_event
_acceptors
(acc
, event
)
65 def __process_event_acceptors(acceptors
, event
):
66 for key
, a
in acceptors
.items(): Assert
.__process
_event
_acceptor
(key
, a
, event
)
69 def __process_event_acceptor(key
, acceptor
, event
):
71 # print(f'the event {event} accepted by <{key}, {acceptor[0]}> is persistent')
73 Assert
.__actually
_process
_event
_exception
(acceptor
, event
)
76 def __actually_process_event_exception(acceptor
, event
):
77 message
= f
'unexpected event: {event}, {str(acceptor)}'
78 raise Exception(message
)
83 'ivalLoop', 'garbageCollectStates', 'collisionLoop',
84 'igLoop', 'audioLoop', 'resetPrevTransform', 'dataLoop',
85 'eventManager', 'simplepbr update', 'on frame music',
86 'assert_fps', 'DIRECTContextTask']
87 unexpected_tasks
= [t
for t
in taskMgr
.getTasks() + taskMgr
.getDoLaters()
88 if t
.name
not in preserve
and not hasattr(t
, 'preserve')]
89 for t
in unexpected_tasks
: Assert
.__process
_task
_exception
(t
)
92 def __process_task_exception(task
):
93 message
= f
'unexpected task: {task.name}'
94 raise Exception(message
)
99 #if RenderToTexture.buffers:
103 def assert_threads():
104 thread_names
= [thread
.name
for thread
in threading
.enumerate()]
105 preserve
= ['MainThread', 'rpc_server']
106 unexpected_tasks
= [t
for t
in thread_names
if t
not in preserve
]
107 for t
in unexpected_tasks
: Assert
.__process
_unexpected
_thread
(t
)
110 def __process_unexpected_thread(thread_name
):
111 message
= f
'unexpected thread: {thread_name}'
112 raise Exception(message
)