From ed9259074736e895fda7022cd277e8fd75e43059 Mon Sep 17 00:00:00 2001 From: glendc Date: Sun, 7 Apr 2024 23:13:14 +0200 Subject: [PATCH] add test for a venn db without keys to ensure it works as expected --- venndb-macros/src/generate_db.rs | 1 + venndb-usage/src/main.rs | 45 ++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/venndb-macros/src/generate_db.rs b/venndb-macros/src/generate_db.rs index c93cfc0..c33f136 100644 --- a/venndb-macros/src/generate_db.rs +++ b/venndb-macros/src/generate_db.rs @@ -88,6 +88,7 @@ fn generate_db_struct_methods( let method_append = generate_db_struct_method_append(name, name_db, vis, db_error, fields); quote! { + #[allow(clippy::unused_unit)] impl #name_db { #method_new diff --git a/venndb-usage/src/main.rs b/venndb-usage/src/main.rs index bae655e..fd71247 100644 --- a/venndb-usage/src/main.rs +++ b/venndb-usage/src/main.rs @@ -324,4 +324,49 @@ mod tests { let result = query.execute().unwrap().any(); assert!(result.id == 1 || result.id == 2 || result.id == 3); } + + #[test] + fn test_db_without_keys() { + #[derive(Debug, VennDB)] + struct NoKeys { + name: String, + a: bool, + b: bool, + } + + let mut db = NoKeysDB::from_rows(vec![ + NoKeys { + name: "Alice".to_string(), + a: true, + b: false, + }, + NoKeys { + name: "Bob".to_string(), + a: false, + b: true, + }, + ]); + + assert_eq!(db.len(), 2); + assert_eq!(db.capacity(), 2); + + let mut query = db.query(); + query.a(true); + let results: Vec<_> = query.execute().unwrap().iter().collect(); + assert_eq!(results.len(), 1); + assert_eq!(results[0].name, "Alice"); + + db.append(NoKeys { + name: "Charlie".to_string(), + a: true, + b: true, + }); + + let mut query = db.query(); + query.b(true); + let results: Vec<_> = query.execute().unwrap().iter().collect(); + assert_eq!(results.len(), 2); + assert_eq!(results[0].name, "Bob"); + assert_eq!(results[1].name, "Charlie"); + } }