import pytest from datetime import datetime, timedelta from src.calculation_target_reliability.utils import generate_down_periods def test_generate_down_periods_count(): start = datetime(2025, 1, 1) end = datetime(2025, 1, 31) # Test fixed number of periods periods = generate_down_periods(start, end, num_periods=5) # It attempts to generate 5, but might be fewer due to overlaps assert len(periods) <= 5 # Check they are within range for p_start, p_end in periods: assert p_start >= start assert p_end <= end assert p_start < p_end def test_generate_down_periods_no_overlap(): start = datetime(2025, 1, 1) end = datetime(2025, 1, 31) periods = generate_down_periods(start, end, num_periods=10) # Sort and check gaps for i in range(len(periods) - 1): assert periods[i][1] <= periods[i+1][0] def test_generate_down_periods_too_small_range(): start = datetime(2025, 1, 1) end = datetime(2025, 1, 2) # Requesting 5 days duration in 1 day range periods = generate_down_periods(start, end, num_periods=1, min_duration=5) assert len(periods) == 0