You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
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
|