"""Headless tests for PointTarget (per-point labels).""" import numpy as np from splasher.core.target import PointTarget def test_apply_assigns_class_to_points_in_rect(): xy = np.array([[0.0, 0.0], [2.0, 2.0], [5.0, 5.0]]) t = PointTarget(ignore_id=0) assert t.apply(0, (1.0, 1.0, 3.0, 3.0), class_id=7, xy=xy) lab = t.labels(0) assert lab.tolist() == [0, 7, 0] def test_apply_no_points_returns_false(): xy = np.array([[0.0, 0.0]]) t = PointTarget() assert t.apply(0, (10.0, 10.0, 20.0, 20.0), class_id=1, xy=xy) is False assert not t.has(0) def test_undo_restores(): xy = np.array([[0.0, 0.0], [2.0, 2.0]]) t = PointTarget() t.apply(0, (1.0, 1.0, 3.0, 3.0), class_id=3, xy=xy) t.apply(0, (-1.0, -1.0, 1.0, 1.0), class_id=4, xy=xy) assert t.labels(0).tolist() == [4, 3] t.undo(0) assert t.labels(0).tolist() == [0, 3] def test_clear(): xy = np.array([[2.0, 2.0]]) t = PointTarget() t.apply(0, (1.0, 1.0, 3.0, 3.0), class_id=5, xy=xy) t.clear(0) assert t.labels(0).tolist() == [0]