datafusion-roaring 0.1.2

Roaring bitmap UDFs for Apache DataFusion
Documentation
use datafusion_roaring::{
    all_udafs, all_udfs, roaring_agg_udaf, roaring_cardinality_udf, roaring_contains_udf,
    roaring_difference_udf, roaring_intersection_udf, roaring_or_agg_udaf, roaring_union_udf,
    roaring_xor_udf,
};

#[test]
fn exported_function_inventory_is_complete_and_ordered() {
    let scalar_names = all_udfs()
        .into_iter()
        .map(|udf| udf.name().to_owned())
        .collect::<Vec<_>>();
    assert_eq!(
        scalar_names,
        [
            "roaring_cardinality",
            "roaring_contains",
            "roaring_min",
            "roaring_max",
            "roaring_rank",
            "roaring_select",
            "roaring_is_empty",
            "roaring_serialized_size",
            "roaring_contains_range",
            "roaring_range_cardinality",
            "roaring_empty",
            "roaring_from_range",
            "roaring_from_uint_list",
            "roaring_or",
            "roaring_union",
            "roaring_and",
            "roaring_intersection",
            "roaring_xor",
            "roaring_symmetric_difference",
            "roaring_andnot",
            "roaring_difference",
            "roaring_union_cardinality",
            "roaring_or_cardinality",
            "roaring_intersection_cardinality",
            "roaring_and_cardinality",
            "roaring_symmetric_difference_cardinality",
            "roaring_xor_cardinality",
            "roaring_difference_cardinality",
            "roaring_andnot_cardinality",
            "roaring_intersects",
            "roaring_is_disjoint",
            "roaring_is_subset",
            "roaring_is_superset",
            "roaring_insert",
            "roaring_remove",
            "roaring_insert_range",
            "roaring_remove_range",
            "roaring_is_valid",
            "roaring_validate",
            "roaring_to_uint_list",
        ]
    );

    let aggregate_names = all_udafs()
        .into_iter()
        .map(|udaf| udaf.name().to_owned())
        .collect::<Vec<_>>();
    assert_eq!(
        aggregate_names,
        ["roaring_agg", "roaring_or_agg", "roaring_union_agg"]
    );
}

#[test]
fn individual_constructors_return_the_documented_names() {
    let scalar_names = [
        roaring_cardinality_udf().name().to_owned(),
        roaring_contains_udf().name().to_owned(),
        roaring_union_udf().name().to_owned(),
        roaring_intersection_udf().name().to_owned(),
        roaring_difference_udf().name().to_owned(),
        roaring_xor_udf().name().to_owned(),
    ];
    assert_eq!(
        scalar_names,
        [
            "roaring_cardinality",
            "roaring_contains",
            "roaring_union",
            "roaring_intersection",
            "roaring_difference",
            "roaring_xor",
        ]
    );

    assert_eq!(roaring_agg_udaf().name(), "roaring_agg");
    assert_eq!(roaring_or_agg_udaf().name(), "roaring_or_agg");
}