31 lines
1.3 KiB
Python
31 lines
1.3 KiB
Python
from __future__ import annotations
|
|
|
|
from dpg_map.commands import CommandKind, MapCommand
|
|
from dpg_map.renderer import drain_renderer_commands
|
|
from dpg_map.state import DirtyFlags, create_map_state
|
|
|
|
|
|
def test_renderer_command_drain_preserves_structural_order_and_coalesces() -> None:
|
|
state = create_map_state(tag="renderer-drain")
|
|
state.dirty = DirtyFlags.NONE
|
|
|
|
state.command_queue.put(MapCommand(CommandKind.ADD_OVERLAY, state.tag, {"tag": "a"}))
|
|
state.command_queue.put(MapCommand(CommandKind.SET_VIEW, state.tag, {"zoom": 3}))
|
|
state.command_queue.put(MapCommand(CommandKind.SET_VIEW, state.tag, {"zoom": 4}))
|
|
state.command_queue.put(MapCommand(CommandKind.UPDATE_OVERLAY, state.tag, {"tag": "a", "v": 1}))
|
|
state.command_queue.put(MapCommand(CommandKind.UPDATE_OVERLAY, state.tag, {"tag": "a", "v": 2}))
|
|
state.command_queue.put(MapCommand(CommandKind.DELETE_OVERLAY, state.tag, {"tag": "a"}))
|
|
|
|
commands = drain_renderer_commands(state)
|
|
|
|
assert [command.kind for command in commands] == [
|
|
CommandKind.ADD_OVERLAY,
|
|
CommandKind.SET_VIEW,
|
|
CommandKind.UPDATE_OVERLAY,
|
|
CommandKind.DELETE_OVERLAY,
|
|
]
|
|
assert commands[1].payload == {"zoom": 4}
|
|
assert commands[2].payload == {"tag": "a", "v": 2}
|
|
assert state.dirty & DirtyFlags.VIEW
|
|
assert state.dirty & DirtyFlags.OVERLAYS
|