def test_lagged_training_data_unequal_freq(self, params):
        """
        Tests that `create_lagged_training_data` produces `X`, `y`, and `times`
        outputs that are consistent with those generated by using the helper
        functions `get_feature_times`, `construct_X_block`, and `construct_labels`.
        Consistency is checked over all combinations of parameter values
        specified by `self.target_lag_combos`, `self.covariates_lag_combos`,
        `self.output_chunk_length_combos`, `self.multi_models_combos`, and
        `self.max_samples_per_ts_combos`.

        This particular test uses timeseries of unequal frequencies. Since all timeseries
        are *not* of the same frequency, the implementation of the 'time intersection' method
        is being tested here.
        """
        series_type, stride = params
        # Define range index timeseries - each has different number of components,
        # different start times, different lengths, different values, and different
        # frequencies:
        if series_type == "integer":
            target = helper_create_multivariate_linear_timeseries(
                n_components=2, start_value=0, end_value=10, start=2, length=20, freq=1
            )
            past = helper_create_multivariate_linear_timeseries(
                n_components=3, start_value=10, end_value=20, start=4, length=10, freq=2
            )
            future = helper_create_multivariate_linear_timeseries(
                n_components=4, start_value=20, end_value=30, start=6, length=7, freq=3
            )
        else:
            target = helper_create_multivariate_linear_timeseries(
                n_components=2,
                start_value=0,
                end_value=10,
                start=pd.Timestamp("1/1/2000"),
                length=20,
                freq="D",
            )
            past = helper_create_multivariate_linear_timeseries(
                n_components=3,
                start_value=10,
                end_value=20,
                start=pd.Timestamp("1/2/2000"),
                length=10,
                freq="2D",
            )
            future = helper_create_multivariate_linear_timeseries(
                n_components=4,
                start_value=20,
                end_value=30,
                start=pd.Timestamp("1/3/2000"),
                length=7,
                freq="3D",
            )
        # Conduct test for each input parameter combo:
        for (
            lags,
            lags_past,
            lags_future,
            output_chunk_length,
            multi_models,
            max_samples_per_ts,
            output_chunk_shift,
        ) in product(
            self.target_lag_combos,
            self.past_lag_combos,
            self.future_lag_combos,
            self.output_chunk_length_combos,
            self.multi_models_combos,
            self.max_samples_per_ts_combos,
            self.output_chunk_shift_combos,
        ):
            all_lags = (lags, lags_past, lags_future)
            # Skip test where all lags are `None` - can't assemble features and
            # labels for this single combo of input params:
            lags_is_none = [x is None for x in all_lags]
            if all(lags_is_none):
                continue

            expected_X, expected_y, expected_times = (
                self.helper_create_expected_lagged_data(
                    target,
                    past,
                    future,
                    lags,
                    lags_past,
                    lags_future,
                    output_chunk_length,
                    output_chunk_shift,
                    multi_models,
                    max_samples_per_ts,
                    stride,
                )
            )

            kwargs = {
                "expected_X": expected_X,
                "expected_y": expected_y,
                "expected_times_x": expected_times,
                "expected_times_y": expected_times,
                "target": target,
                "past_cov": past,
                "future_cov": future,
                "lags": lags,
                "lags_past": lags_past,
                "lags_future": lags_future,
                "output_chunk_length": output_chunk_length,
                "output_chunk_shift": output_chunk_shift,
                "use_static_covariates": False,
                "multi_models": multi_models,
                "max_samples_per_ts": max_samples_per_ts,
                "use_moving_windows": False,
                "concatenate": True,
                "stride": stride,
            }

            self.helper_check_lagged_data(convert_lags_to_dict=False, **kwargs)

            with pytest.raises(ValueError) as err:
                self.helper_check_lagged_data(convert_lags_to_dict=True, **kwargs)
            assert str(err.value).startswith(
                "`use_moving_windows=False` is not supported when any of the lags"
            )

        Tests that `create_lagged_training_data` produces `X`, `y`, and `times`
        outputs that are consistent with those generated by using the helper
        functions `get_feature_times`, `construct_X_block`, and `construct_labels`.
        Consistency is checked over all combinations of parameter values
        specified by `self.target_lag_combos`, `self.covariates_lag_combos`,
        `self.output_chunk_length_combos`, `self.multi_models_combos`, and
        `self.max_samples_per_ts_combos`.

        This particular test uses timeseries of unequal frequencies. Since all timeseries
        are *not* of the same frequency, the implementation of the 'time intersection' method
        is being tested here.
        
darts/tests/utils/tabularization/test_create_lagged_training_data.py