step 2: add thread safe state commands and cache model
This commit is contained in:
35
tests/test_commands.py
Normal file
35
tests/test_commands.py
Normal file
@@ -0,0 +1,35 @@
|
||||
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}
|
||||
Reference in New Issue
Block a user