MCPcopy Create free account
hub / github.com/cosdata/cosdata / test_to_internal

Function test_to_internal

src/models/rpc.rs:263–439  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

261
262 #[test]
263 fn test_to_internal() {
264 // Filter with a single column
265 let mut column = HashMap::new();
266 column.insert(
267 "foo".to_string(),
268 ComparisonOperator::Eq(MetadataColumnValue::StringValue("hello".to_string())),
269 );
270 let filter = Filter::Comparison { column };
271 let internal = filter.to_internal().unwrap();
272 match internal {
273 metadata::Filter::Is(pred) => {
274 assert_eq!("foo", pred.field_name);
275 assert_eq!(
276 pred.field_value,
277 metadata::FieldValue::String("hello".to_string()),
278 );
279 assert_eq!(pred.operator, metadata::Operator::Equal);
280 }
281 _ => panic!(),
282 }
283
284 // Filter with multiple columns
285 let mut column = HashMap::new();
286 column.insert(
287 "a".to_string(),
288 ComparisonOperator::Eq(MetadataColumnValue::StringValue("hello".to_string())),
289 );
290 column.insert(
291 "b".to_string(),
292 ComparisonOperator::Ne(MetadataColumnValue::IntValue(2)),
293 );
294 let filter = Filter::Comparison { column };
295 let internal = filter.to_internal().unwrap();
296 match internal {
297 metadata::Filter::And(preds) => {
298 assert_eq!(2, preds.len());
299 let p1 = preds.iter().find(|p| p.field_name == "a").unwrap();
300 assert_eq!("a", p1.field_name);
301 assert_eq!(
302 p1.field_value,
303 metadata::FieldValue::String("hello".to_string()),
304 );
305 assert_eq!(p1.operator, metadata::Operator::Equal);
306
307 let p2 = preds.iter().find(|p| p.field_name == "b").unwrap();
308 assert_eq!("b", p2.field_name);
309 assert_eq!(p2.field_value, metadata::FieldValue::Int(2));
310 assert_eq!(p2.operator, metadata::Operator::NotEqual);
311 }
312 _ => panic!(),
313 }
314
315 // Filter with Logical::And + single column filters
316 let mut c1 = HashMap::new();
317 c1.insert(
318 "a".to_string(),
319 ComparisonOperator::Eq(MetadataColumnValue::StringValue("hello".to_string())),
320 );

Callers

nothing calls this directly

Calls 3

to_internalMethod · 0.80
insertMethod · 0.45
iterMethod · 0.45

Tested by

no test coverage detected