import pandas as pd

from psx_signal.evaluation import ExpandingWindowSplitter


def test_expanding_folds_are_ordered_and_disjoint() -> None:
    dates = pd.Series(pd.bdate_range("2020-01-01", periods=30))
    folds = ExpandingWindowSplitter(10, 5, 5, 5).split(dates)
    assert len(folds) == 3
    for fold in folds:
        assert fold.train_dates.max() < fold.validation_dates.min()
        assert fold.validation_dates.max() < fold.test_dates.min()
        assert not set(fold.train_dates) & set(fold.test_dates)
    assert len(folds[1].train_dates) > len(folds[0].train_dates)

