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.
be-optimumoh/tests/unit/test_target_reliability_uti...

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