def METHOD_NAME():
    """
    Test rare edge-cases when data has many classes or very few samples when doing train test splits.
    """
    data = pd.DataFrame(index=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
    data["label"] = [0, 1, 1, 2, 3, 4, 5, 5, 5, 5, 5, 5]
    for test_size in range(1, 12):
        """
        Normal Case: Regression should always work
        """
        X_train, X_test, y_train, y_test = generate_train_test_split(X=data, y=data["label"], problem_type="regression", test_size=test_size)
        assert len(X_train) == len(y_train)
        assert list(X_train.index) == list(y_train.index)
        assert len(X_test) == len(y_test)
        assert list(X_test.index) == list(y_test.index)
        assert len(X_test) == test_size
        assert len(X_train) == len(data) - test_size
    for test_size in range(1, 6):
        """
        Edge-case: There are fewer test rows than classes
         This only works because of special try/except logic in `generate_train_test_split`.
        """
        X_train, X_test, y_train, y_test = generate_train_test_split(X=data, y=data["label"], problem_type="multiclass", test_size=test_size)
        assert len(X_train) == len(y_train)
        assert list(X_train.index) == list(y_train.index)
        assert len(X_test) == len(y_test)
        assert list(X_test.index) == list(y_test.index)
        assert len(X_test) <= test_size
        assert len(X_train) == len(data) - len(X_test)
    for test_size in range(6, 7):
        """
        Normal Case
        """
        X_train, X_test, y_train, y_test = generate_train_test_split(X=data, y=data["label"], problem_type="multiclass", test_size=test_size)
        assert len(X_train) == len(y_train)
        assert list(X_train.index) == list(y_train.index)
        assert len(X_test) == len(y_test)
        assert list(X_test.index) == list(y_test.index)
        assert len(X_test) <= test_size
        assert len(X_train) == len(data) - len(X_test)
    for test_size in range(7, 12):
        """
        Edge-case: There are fewer train rows than classes
        Error due to not enough training data to have at least one instance of every class in train.
        Note: Ideally this shouldn't raise an exception, but writing the logic to avoid the error is tricky and the scenario should never occur in practice.
        """
        with pytest.raises(ValueError):
            X_train, X_test, y_train, y_test = generate_train_test_split(X=data, y=data["label"], problem_type="multiclass", test_size=test_size)