# Label Validation Tests

**Task**: AZ-156_test_label_validation
**Name**: Label Validation Tests
**Description**: Implement 5 blackbox tests for YOLO label validation — valid labels, out-of-range coords, missing files, multi-line corruption
**Complexity**: 1 point
**Dependencies**: AZ-152_test_infrastructure
**Component**: Blackbox Tests
**Jira**: AZ-156
**Epic**: AZ-151

## Problem

Labels must be validated before dataset formation. Tests verify the check_label function correctly accepts valid labels and rejects corrupted ones.

## Outcome

- 5 passing pytest tests in `tests/test_label_validation.py`

## Scope

### Included
- BT-LBL-01: Valid label accepted (returns True)
- BT-LBL-02: Label with x > 1.0 rejected (returns False)
- BT-LBL-03: Label with height > 1.0 rejected (returns False)
- BT-LBL-04: Missing label file rejected (returns False)
- BT-LBL-05: Multi-line label with one corrupted line (returns False)

### Excluded
- Integration with dataset formation (separate task)

## Acceptance Criteria

**AC-1: Valid label**
Given label file with content `0 0.5 0.5 0.1 0.1`
When check_label(path) is called
Then returns True

**AC-2: x out of range**
Given label file with content `0 1.5 0.5 0.1 0.1`
When check_label(path) is called
Then returns False

**AC-3: height out of range**
Given label file with content `0 0.5 0.5 0.1 1.2`
When check_label(path) is called
Then returns False

**AC-4: Missing file**
Given non-existent file path
When check_label(path) is called
Then returns False

**AC-5: Multi-line corruption**
Given label with `0 0.5 0.5 0.1 0.1\n3 0.5 0.5 0.1 1.5`
When check_label(path) is called
Then returns False

## Constraints

- Label files are generated in tmp_path at test time
- No external fixtures needed
