Provide an aggregation query covering every feature
- Id
- 3cbb0056f6a9f479750a525eb8716f9fa0768e31
- Author
- Caio
- Commit time
- 2019-12-30T10:55:02+01:00
Modified tique_derive/src/lib.rs
}
});
+ let full_range = get_public_struct_fields(&input).map(|field| {
+ let name = &field.ident;
+ let ty = extract_type_if_option(&field.ty).unwrap_or(&field.ty);
+ quote_spanned! { field.span()=>
+ #name: vec![std::#ty::MIN..std::#ty::MAX]
+ }
+ });
+
quote! {
- #[derive(serde::Serialize, serde::Deserialize, Default, Debug, Clone)]
+ #[derive(serde::Serialize, serde::Deserialize, Default, Debug, Clone, PartialEq)]
pub struct #name {
#(#fields),*
+ }
+
+ impl #name {
+ pub fn full_range() -> Self {
+ Self {
+ #(#full_range),*
+ }
+ }
}
}
}
Modified tique_derive/tests/basic.rs
}
#[test]
+fn agg_query_full_range_generation() {
+ assert_eq!(
+ FeatAggregationQuery {
+ a: vec![std::u64::MIN..std::u64::MAX],
+ b: vec![std::i16::MIN..std::i16::MAX],
+ c: vec![std::f32::MIN..std::f32::MAX],
+ d: vec![std::f64::MIN..std::f64::MAX],
+ },
+ FeatAggregationQuery::full_range(),
+ );
+}
+
+#[test]
fn collector_integration() -> tantivy::Result<()> {
let mut builder = SchemaBuilder::new();