def test_no_nulls(inc_man_spec, inc_man_file, expression, expected): assert InclusiveManifestEvaluator(inc_man_spec, expression).eval(inc_man_file) == expected def test_missing_column(inc_man_spec, inc_man_file): with pytest.raises(ValidationException): InclusiveManifestEvaluator(inc_man_spec, Expressions.less_than("missing", 5)).eval(inc_man_file) @pytest.mark.parametrize("expression", [ Expressions.less_than("id", 5), Expressions.less_than_or_equal("id", 30), Expressions.equal("id", 70), Expressions.greater_than("id", 78), Expressions.greater_than_or_equal("id", 90), Expressions.not_equal("id", 101), Expressions.less_than_or_equal("id", 30), Expressions.is_null("id"), Expressions.not_null("id")]) def test_missing_stats(inc_man_spec, inc_man_file_ns, expression): assert InclusiveManifestEvaluator(inc_man_spec, expression).eval(inc_man_file_ns) @pytest.mark.parametrize("expression, expected", [ (Expressions.less_than("id", 5), True), (Expressions.greater_than("id", 5), False)]) def test_not(inc_man_spec, inc_man_file, expression, expected): assert InclusiveManifestEvaluator(inc_man_spec, Expressions.not_(expression)).eval(inc_man_file) == expected @pytest.mark.parametrize("expr1, expr2, expected", [
def test_int_not_eq(inc_man_spec, inc_man_file, val, expected): assert InclusiveManifestEvaluator(inc_man_spec, Expressions.not_equal( "id", val)).eval(inc_man_file) == expected
Operation.GT_EQ, Operation.EQ, Operation.NOT_EQ ]) def op(request): yield request.param @pytest.fixture(scope="session", params=[ Expressions.always_false(), Expressions.always_true(), Expressions.less_than("x", 5), Expressions.less_than_or_equal("y", -3), Expressions.greater_than("z", 0), Expressions.greater_than_or_equal("t", 129), Expressions.equal("col", "data"), Expressions.not_equal("col", "abc"), Expressions.not_null("maybeNull"), Expressions.is_null("maybeNull2"), Expressions.not_(Expressions.greater_than("a", 10)), Expressions.and_(Expressions.greater_than_or_equal("a", 0), Expressions.less_than("a", 3)), Expressions.or_(Expressions.less_than("a", 0), Expressions.greater_than("a", 10)), Expressions.equal("a", 5).bind(exp_schema.as_struct()) ]) def expression(request): yield request.param @pytest.fixture(scope="session", params=[
def test_not_equal_alt_syntax(): expected_expr = Expressions.not_equal("col_a", 7) conv_expr = Expressions.convert_string_to_expr("col_a != 7") assert expected_expr == conv_expr