From 9e0b198e6317be47ff60df01546a45aadc6ec8bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Ml=C3=A1dek?= Date: Fri, 28 Jul 2023 11:27:48 +0200 Subject: [PATCH] wip, test: add tests for only-entity queries --- db/src/engine.rs | 7 ++++--- db/src/lib.rs | 10 ++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/db/src/engine.rs b/db/src/engine.rs index 2d2b049..aaab0dc 100644 --- a/db/src/engine.rs +++ b/db/src/engine.rs @@ -57,9 +57,10 @@ pub fn execute( && matches!(pattern.attribute, PatternQueryComponent::Discard) && matches!(pattern.value, PatternQueryComponent::Discard) => { - Ok(InnerQueryResult::Entities( - entries.into_iter().map(|e| e.entity).collect(), - )) + let mut result: Vec> = entries.into_iter().map(|e| e.entity).collect(); + result.sort_unstable(); + result.dedup(); + Ok(InnerQueryResult::Entities(result)) } QueryPart::Matches(pattern) if matches!(pattern.entity, PatternQueryComponent::Discard) diff --git a/db/src/lib.rs b/db/src/lib.rs index 8a6a508..abef0da 100644 --- a/db/src/lib.rs +++ b/db/src/lib.rs @@ -547,6 +547,16 @@ mod test { let result = connection.query::>(query).unwrap(); assert_eq!(result.len(), 0); + // Test only-queries + let query = format!(r#"(matches ? ? ?)"#).parse().unwrap(); + let result = connection.query::>(query).unwrap(); + assert_eq!(result.len(), 2); + + let query = format!(r#"(matches ? _ _)"#).parse().unwrap(); + let result = connection.query::>(query).unwrap(); + println!("{:?}", result); + assert_eq!(result.len(), 1); + // Test IN queries for entities let other_entity = Address::Uuid(uuid::Uuid::new_v4()); upend_insert_val!(connection, random_entity, ATTR_LABEL, "BAZQUX").unwrap();