| LOW | tests/unit/_shape_test.py | 13 | def _make_axis_aligned_oriented_rectangle() -> Shape: |
| LOW | tests/unit/_shape_test.py | 21 | def test_rotate_oriented_rectangle_around_origin() -> None: |
| LOW | tests/unit/_shape_test.py | 35 | def test_rotate_non_oriented_rectangle_raises() -> None: |
| LOW | tests/unit/_shape_test.py | 49 | def test_nearest_vertex_index_returns_none_for_mask() -> None: |
| LOW | tests/unit/load_image_file_test.py | 23 | def test_tiff_without_alpha_encoded_as_jpeg(tmp_path: Path) -> None: |
| LOW | tests/unit/load_image_file_test.py | 29 | def test_tiff_with_alpha_encoded_as_png(tmp_path: Path) -> None: |
| LOW | tests/unit/load_image_file_test.py | 35 | def test_jpeg_returns_raw_bytes(tmp_path: Path) -> None: |
| LOW | tests/unit/load_image_file_test.py | 41 | def test_png_returns_raw_bytes(tmp_path: Path) -> None: |
| LOW | tests/unit/load_image_file_test.py | 70 | def test_constant_value_tiff_returns_black(tmp_path: Path) -> None: |
| LOW | tests/unit/load_image_file_test.py | 81 | def test_two_band_tiff_falls_back_to_first_band(tmp_path: Path) -> None: |
| LOW | tests/unit/_label_file_test.py | 88 | def test_read_label_file_returns_label_data(data_path: Path) -> None: |
| LOW | tests/unit/_label_file_test.py | 98 | def test_read_label_file_extracts_other_data( |
| LOW | tests/unit/_label_file_test.py | 129 | def test_read_label_file_raises_read_error_on_malformed( |
| LOW | tests/unit/_label_file_test.py | 142 | def test_write_label_file_round_trips(data_path: Path, tmp_path: Path) -> None: |
| LOW | tests/unit/_label_file_test.py | 179 | def test_write_label_file_rejects_reserved_other_data_key( |
| LOW | tests/unit/_label_file_test.py | 193 | def test_write_label_file_raises_on_dimension_mismatch( |
| LOW | tests/unit/_label_file_test.py | 209 | def test_write_label_file_raises_write_error_on_io_failure(tmp_path: Path) -> None: |
| LOW | tests/unit/config_test.py | 13 | def test_get_user_config_file_creates_sparse( |
| LOW | tests/unit/config_test.py | 24 | def test_get_user_config_file_does_not_overwrite( |
| LOW | tests/unit/config_test.py | 35 | def test_get_user_config_file_skip_creation( |
| LOW | tests/unit/config_test.py | 44 | def test_migrate_store_data_to_with_image_data(tmp_path: Path, old_value: bool) -> None: |
| LOW | tests/unit/config_test.py | 62 | def test_migrate_ai_model_name(input_name: str, expected_name: str) -> None: |
| LOW | tests/unit/config_test.py | 85 | def test_migrate_polygon_shortcut_to_shape(old_key: str, new_key: str) -> None: |
| LOW | tests/unit/config_test.py | 92 | def test_migrate_polygon_shortcuts_no_shortcuts_key() -> None: |
| LOW | tests/unit/config_test.py | 98 | def test_migrate_polygon_shortcut_skips_when_new_key_exists() -> None: |
| LOW | tests/unit/utils/qt_test.py | 45 | def test_project_point_on_perpendicular_line( |
| LOW | tests/unit/utils/qt_test.py | 61 | def test_project_point_on_line(point: QPointF, expected: tuple[float, float]) -> None: |
| LOW | tests/unit/utils/shape_test.py | 31 | def test_shape_to_mask_oriented_rectangle_marks_inside_pixels() -> None: |
| LOW | tests/unit/utils/shape_test.py | 45 | def test_shape_to_mask_rectangle_reversed_coords() -> None: |
| LOW | tests/unit/utils/image_test.py | 26 | def test_img_data_to_png_data() -> None: |
| LOW | tests/unit/_automation/_shape_builders_test.py | 13 | def test_shapes_from_detections_rectangle_uses_bbox() -> None: |
| LOW | tests/unit/_automation/_shape_builders_test.py | 24 | def test_shapes_from_detections_rectangle_without_bbox_is_dropped() -> None: |
| LOW | tests/unit/_automation/_shape_builders_test.py | 33 | def test_shapes_from_detections_circle_with_mask_uses_centroid_and_area() -> None: |
| LOW | tests/unit/_automation/_shape_builders_test.py | 54 | def test_shapes_from_detections_circle_without_mask_falls_back_to_inscribed() -> None: |
| LOW | tests/unit/_automation/_shape_builders_test.py | 67 | def test_shapes_from_detections_oriented_rectangle_with_mask_uses_min_area_rect() -> ( |
| LOW | tests/unit/_automation/_shape_builders_test.py | 89 | def test_shapes_from_detections_oriented_rectangle_without_mask_falls_back() -> None: |
| LOW | tests/unit/_automation/_shape_builders_test.py | 101 | def test_shapes_from_detections_oriented_rectangle_with_rotated_mask( |
| LOW | tests/unit/_automation/_shape_builders_test.py | 125 | def test_shapes_from_detections_oriented_rectangle_with_square_mask() -> None: |
| LOW | tests/unit/_automation/_shape_builders_test.py | 139 | def test_shapes_from_detections_oriented_rectangle_square_mask_no_bbox() -> None: |
| LOW | tests/unit/_automation/_shape_builders_test.py | 153 | def test_shapes_from_detections_mask_drops_empty_mask() -> None: |
| LOW | tests/unit/_automation/_suppression_test.py | 147 | def test_redundant_empty_detections() -> None: |
| LOW | tests/unit/_automation/_suppression_test.py | 151 | def test_redundant_drops_duplicate_bbox_only_detections() -> None: |
| LOW | tests/unit/_automation/_suppression_test.py | 160 | def test_redundant_passes_through_detections_without_bbox() -> None: |
| LOW | tests/unit/_automation/_suppression_test.py | 168 | def test_redundant_raises_on_mask_shape_mismatch() -> None: |
| LOW | tests/unit/_automation/_suppression_test.py | 178 | def test_redundant_rejects_mixed_mask_and_bbox_only() -> None: |
| LOW | tests/unit/_automation/_suppression_test.py | 29 | def test_redundant_drops_duplicate_mask_keeps_first( |
| LOW | tests/unit/_automation/_suppression_test.py | 40 | def test_redundant_keeps_first_when_descriptions_differ() -> None: |
| LOW | tests/unit/_automation/_suppression_test.py | 53 | def test_redundant_keeps_only_first_among_three_duplicates( |
| LOW | tests/unit/_automation/_suppression_test.py | 67 | def test_redundant_keeps_disjoint_masks() -> None: |
| LOW | tests/unit/_automation/_suppression_test.py | 82 | def test_redundant_drops_mask_contained_in_larger_mask() -> None: |
| LOW | tests/unit/_automation/_suppression_test.py | 99 | def test_redundant_keeps_partial_overlap_below_containment_threshold() -> None: |
| LOW | tests/unit/_automation/_suppression_test.py | 118 | def test_redundant_keeps_triangles_sharing_bbox() -> None: |
| LOW | tests/unit/_automation/_suppression_test.py | 136 | def test_redundant_does_not_suppress_across_labels( |
| LOW | tests/unit/_automation/_suppression_test.py | 189 | def test_overlapping_drops_polygon_detection_overlapping_existing_polygon() -> None: |
| LOW | tests/unit/_automation/_suppression_test.py | 205 | def test_overlapping_keeps_when_iou_below_threshold() -> None: |
| LOW | tests/unit/_automation/_suppression_test.py | 220 | def test_overlapping_uses_mask_iou_not_bbox_iou() -> None: |
| LOW | tests/unit/_automation/_suppression_test.py | 239 | def test_overlapping_empty_detections() -> None: |
| LOW | tests/unit/_automation/_suppression_test.py | 252 | def test_overlapping_no_existing_shapes_passes_through() -> None: |
| LOW | tests/unit/_automation/_suppression_test.py | 263 | def test_overlapping_passes_through_detection_without_bbox() -> None: |
| LOW | tests/unit/_automation/_suppression_test.py | 277 | def test_overlapping_drops_detection_engulfing_smaller_existing_shape() -> None: |
| 194 more matches not shown… |