Files
agentic-mobile-control/tests/test_scene_builder.py
T

45 lines
1.2 KiB
Python

from __future__ import annotations
from core.models import Bounds, SceneElement
from perception.scene_builder import bbox_iou, build_scene
def test_scene_builder_merges_overlapping_ocr_into_ui_element() -> None:
ui_button = SceneElement(
id="ui-button",
type="button",
text=None,
bounds=Bounds(10, 10, 100, 40),
confidence=1.0,
source="ui",
)
ocr_label = SceneElement(
id="ocr-label",
type="text",
text="Search",
bounds=Bounds(12, 12, 96, 36),
confidence=0.92,
source="ocr",
)
ocr_only = SceneElement(
id="ocr-only",
type="text",
text="Footer",
bounds=Bounds(0, 100, 40, 20),
confidence=0.8,
source="ocr",
)
scene = build_scene(
screen_width=120,
screen_height=140,
ui_elements=[ui_button],
ocr_elements=[ocr_label, ocr_only],
)
assert len(scene.elements) == 2
assert scene.elements[0].type == "button"
assert scene.elements[0].text == "Search"
assert scene.elements[1].text == "Footer"
assert bbox_iou(ui_button.bounds, ocr_label.bounds) > 0.5