# {py:mod}`simvx.core.testing.diagnostics` ```{py:module} simvx.core.testing.diagnostics ``` ```{autodoc2-docstring} simvx.core.testing.diagnostics :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`NodeCounter ` - ```{autodoc2-docstring} simvx.core.testing.diagnostics.NodeCounter :summary: ``` * - {py:obj}`FrameTimer ` - ```{autodoc2-docstring} simvx.core.testing.diagnostics.FrameTimer :summary: ``` ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`scene_diff ` - ```{autodoc2-docstring} simvx.core.testing.diagnostics.scene_diff :summary: ``` * - {py:obj}`scene_describe ` - ```{autodoc2-docstring} simvx.core.testing.diagnostics.scene_describe :summary: ``` * - {py:obj}`ui_describe ` - ```{autodoc2-docstring} simvx.core.testing.diagnostics.ui_describe :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`__all__ ` - ```{autodoc2-docstring} simvx.core.testing.diagnostics.__all__ :summary: ``` ```` ### API ````{py:data} __all__ :canonical: simvx.core.testing.diagnostics.__all__ :value: > ['scene_diff', 'NodeCounter', 'FrameTimer', 'scene_describe', 'ui_describe'] ```{autodoc2-docstring} simvx.core.testing.diagnostics.__all__ ``` ```` ````{py:function} scene_diff(before: dict, after: dict, _path: str = '') -> list[str] :canonical: simvx.core.testing.diagnostics.scene_diff ```{autodoc2-docstring} simvx.core.testing.diagnostics.scene_diff ``` ```` `````{py:class} NodeCounter :canonical: simvx.core.testing.diagnostics.NodeCounter ```{autodoc2-docstring} simvx.core.testing.diagnostics.NodeCounter ``` ````{py:method} count(root: simvx.core.node.Node) -> dict[str, int] :canonical: simvx.core.testing.diagnostics.NodeCounter.count :staticmethod: ```{autodoc2-docstring} simvx.core.testing.diagnostics.NodeCounter.count ``` ```` ````{py:method} total(root: simvx.core.node.Node) -> int :canonical: simvx.core.testing.diagnostics.NodeCounter.total :staticmethod: ```{autodoc2-docstring} simvx.core.testing.diagnostics.NodeCounter.total ``` ```` ````` `````{py:class} FrameTimer() :canonical: simvx.core.testing.diagnostics.FrameTimer ```{autodoc2-docstring} simvx.core.testing.diagnostics.FrameTimer ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core.testing.diagnostics.FrameTimer.__init__ ``` ````{py:method} begin_frame() -> None :canonical: simvx.core.testing.diagnostics.FrameTimer.begin_frame ```{autodoc2-docstring} simvx.core.testing.diagnostics.FrameTimer.begin_frame ``` ```` ````{py:method} end_frame() -> None :canonical: simvx.core.testing.diagnostics.FrameTimer.end_frame ```{autodoc2-docstring} simvx.core.testing.diagnostics.FrameTimer.end_frame ``` ```` ````{py:property} average_ms :canonical: simvx.core.testing.diagnostics.FrameTimer.average_ms :type: float ```{autodoc2-docstring} simvx.core.testing.diagnostics.FrameTimer.average_ms ``` ```` ````{py:property} max_ms :canonical: simvx.core.testing.diagnostics.FrameTimer.max_ms :type: float ```{autodoc2-docstring} simvx.core.testing.diagnostics.FrameTimer.max_ms ``` ```` ````{py:property} min_ms :canonical: simvx.core.testing.diagnostics.FrameTimer.min_ms :type: float ```{autodoc2-docstring} simvx.core.testing.diagnostics.FrameTimer.min_ms ``` ```` ````{py:property} fps :canonical: simvx.core.testing.diagnostics.FrameTimer.fps :type: float ```{autodoc2-docstring} simvx.core.testing.diagnostics.FrameTimer.fps ``` ```` ````{py:property} frame_count :canonical: simvx.core.testing.diagnostics.FrameTimer.frame_count :type: int ```{autodoc2-docstring} simvx.core.testing.diagnostics.FrameTimer.frame_count ``` ```` ````{py:method} reset() -> None :canonical: simvx.core.testing.diagnostics.FrameTimer.reset ```{autodoc2-docstring} simvx.core.testing.diagnostics.FrameTimer.reset ``` ```` ````` ````{py:function} scene_describe(root: simvx.core.node.Node, include_properties: bool = True, include_layout: bool = True) -> str :canonical: simvx.core.testing.diagnostics.scene_describe ```{autodoc2-docstring} simvx.core.testing.diagnostics.scene_describe ``` ```` ````{py:function} ui_describe(root, include_layout: bool = True) -> str :canonical: simvx.core.testing.diagnostics.ui_describe ```{autodoc2-docstring} simvx.core.testing.diagnostics.ui_describe ``` ````