from __future__ import annotations from dpg_map.commands import CommandKind, MapCommand, MapCommandQueue def test_overlay_updates_coalesce_by_overlay_tag() -> None: queue = MapCommandQueue() queue.put(MapCommand(CommandKind.UPDATE_OVERLAY, "map", {"tag": "vehicle", "lat": 1.0})) queue.put(MapCommand(CommandKind.UPDATE_OVERLAY, "map", {"tag": "vehicle", "lat": 2.0})) queue.put(MapCommand(CommandKind.UPDATE_OVERLAY, "map", {"tag": "other", "lat": 3.0})) drained = queue.drain() assert len(drained) == 2 assert drained[0].payload == {"tag": "vehicle", "lat": 2.0} assert drained[1].payload == {"tag": "other", "lat": 3.0} def test_latest_view_update_wins_but_structural_commands_keep_order() -> None: queue = MapCommandQueue() queue.put(MapCommand(CommandKind.ADD_OVERLAY, "map", {"tag": "a"})) queue.put(MapCommand(CommandKind.SET_VIEW, "map", {"zoom": 3})) queue.put(MapCommand(CommandKind.SET_VIEW, "map", {"zoom": 4})) queue.put(MapCommand(CommandKind.DELETE_OVERLAY, "map", {"tag": "a"})) drained = queue.drain() assert [command.kind for command in drained] == [ CommandKind.ADD_OVERLAY, CommandKind.SET_VIEW, CommandKind.DELETE_OVERLAY, ] assert drained[1].payload == {"zoom": 4}