def test_add_column_row_condition():
    e = PandasExecutionEngine()

    # Checking that adding a simple column row condition is functional
    new_domain_kwargs = e.add_column_row_condition({}, "a")
    assert new_domain_kwargs == {
        "condition_parser": "great_expectations__experimental__",
        "row_condition": 'col("a").notnull()',
    }

    # Ensuring that this also works when formatted differently
    new_domain_kwargs = e.add_column_row_condition({"column": "a"})
    assert new_domain_kwargs == {
        "column": "a",
        "condition_parser": "great_expectations__experimental__",
        "row_condition": 'col("a").notnull()',
    }

    # Ensuring that everything still works if a row condition of None given
    new_domain_kwargs = e.add_column_row_condition(
        {"column": "a", "row_condition": None}
    )
    assert new_domain_kwargs == {
        "column": "a",
        "row_condition": None,
        "condition_parser": "great_expectations__experimental__",
        "row_condition": 'col("a").notnull()',
    }

    # Identity case
    new_domain_kwargs = e.add_column_row_condition({}, "a", filter_null=False)
    assert new_domain_kwargs == {}
def test_add_column_row_condition_with_unsupported_conditions():
    e = PandasExecutionEngine()

    # Ensuring that an attempt to filter nans within base class yields an error
    with pytest.raises(GreatExpectationsError) as error:
        new_domain_kwargs = e.add_column_row_condition({}, "a", filter_nan=True)

    # Having a pre-existing row condition should result in an error, as we should not be updating it
    with pytest.raises(GreatExpectationsError) as error:
        new_domain_kwargs = e.add_column_row_condition(
            {"column": "a", "row_condition": "col(a) == 2"}
        )

    # Testing that error raised when column not given
    with pytest.raises(AssertionError) as error:
        new_domain_kwargs = e.add_column_row_condition({})