Skip to content

Commit

Permalink
add compilation tests related to recent changes
Browse files Browse the repository at this point in the history
  • Loading branch information
glendc committed Apr 5, 2024
1 parent 77f9ff6 commit 10d9ce1
Show file tree
Hide file tree
Showing 11 changed files with 134 additions and 3 deletions.
2 changes: 1 addition & 1 deletion venndb-macros/src/generate_db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@ fn generate_query_struct_impl(
#(#filter_setters)*

/// Execute the query on the database, returning an iterator over the results.
#vis fn exec(&self) -> Option<#name_query_result<'a>> {
#vis fn execute(&self) -> Option<#name_query_result<'a>> {
let mut filter = ::venndb::__internal::bitvec![1; self.db.rows.len()];

#(#filters)*
Expand Down
4 changes: 2 additions & 2 deletions venndb-usage/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -104,14 +104,14 @@ mod tests {
let results: Vec<_> = query
.is_manager(true)
.is_admin(true)
.exec()
.execute()
.unwrap()
.iter()
.collect();
assert_eq!(results.len(), 1);
assert_eq!(results[0].id, 3);

let mut query = db.query();
assert!(query.is_active(false).exec().is_none());
assert!(query.is_active(false).execute().is_none());
}
}
42 changes: 42 additions & 0 deletions venndb-usage/tests/compiles/derive_struct_all_the_things.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
use venndb::VennDB;

#[derive(Debug, VennDB)]
#[venndb(name = "EmployeeSheet")]
struct Employee {
#[venndb(key)]
id: u32,
name: String,
is_manager: bool,
is_admin: bool,
#[venndb(skip)]
is_active: bool,
department: Department,
}

#[derive(Debug)]
pub enum Department {
Engineering,
Sales,
Marketing,
HR,
}

fn main() {
let mut db = EmployeeSheet::new();
db.append(Employee {
id: 1,
name: "Alice".to_string(),
is_manager: true,
is_admin: false,
is_active: true,
department: Department::Engineering,
});

let employee_ref = db.get_by_id(&1).unwrap();
assert_eq!(employee_ref.id, 1);
assert_eq!(employee_ref.name, "Alice");

let mut query = db.query();
query.is_manager(true).is_admin(true);
assert!(query.execute().is_none());
}
6 changes: 6 additions & 0 deletions venndb-usage/tests/compiles/derive_struct_empty.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
use venndb::VennDB;

#[derive(Debug, VennDB)]
struct Employee {}

fn main() {}
23 changes: 23 additions & 0 deletions venndb-usage/tests/compiles/derive_struct_skip_all.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
use venndb::VennDB;

#[derive(Debug, VennDB)]
struct Employee {
#[venndb(skip)]
id: u32,
#[venndb(skip)]
name: String,
#[venndb(skip)]
is_manager: bool,
#[venndb(skip)]
department: Department,
}

#[derive(Debug)]
pub enum Department {
Engineering,
Sales,
Marketing,
HR,
}

fn main() {}
22 changes: 22 additions & 0 deletions venndb-usage/tests/fails/filter_skipped_field.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
use venndb::VennDB;

#[derive(Debug, VennDB)]
struct Employee {
id: u32,
is_manager: bool,
#[venndb(skip)]
is_active: bool,
}

fn main() {
let mut db = EmployeeDB::new();
db.append(Employee {
id: 1,
is_manager: true,
is_active: true,
});

let mut query = db.query();
query.is_active(true);
assert!(query.execute().is_some());
}
8 changes: 8 additions & 0 deletions venndb-usage/tests/fails/filter_skipped_field.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
error[E0599]: no method named `is_active` found for struct `EmployeeDBQuery` in the current scope
--> tests/fails/filter_skipped_field.rs:20:11
|
3 | #[derive(Debug, VennDB)]
| ------ method `is_active` not found for this struct
...
20 | query.is_active(true);
| ^^^^^^^^^ method not found in `EmployeeDBQuery<'_>`
9 changes: 9 additions & 0 deletions venndb-usage/tests/fails/unknown_attr_field.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
use venndb::VennDB;

#[derive(Debug, VennDB)]
struct Employee {
#[venndb(foo)]
id: u32,
}

fn main() {}
6 changes: 6 additions & 0 deletions venndb-usage/tests/fails/unknown_attr_field.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
error: Invalid field-level `venndb` attribute
Expected one of: `key`
--> tests/fails/unknown_attr_field.rs:5:14
|
5 | #[venndb(foo)]
| ^^^
9 changes: 9 additions & 0 deletions venndb-usage/tests/fails/unknown_attr_struct.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
use venndb::VennDB;

#[derive(Debug, VennDB)]
#[venndb(foo)]
struct Employee {
id: u32,
}

fn main() {}
6 changes: 6 additions & 0 deletions venndb-usage/tests/fails/unknown_attr_struct.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
error: Invalid field-level `venndb` attribute
Expected one of: `name`
--> tests/fails/unknown_attr_struct.rs:4:10
|
4 | #[venndb(foo)]
| ^^^

0 comments on commit 10d9ce1

Please sign in to comment.