From 901dff07ed357694eb35284a58c3cc6c003c53ce Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sun, 18 Jan 2026 03:56:25 +0100 Subject: move db tests; remove old imports --- database/src/lib.rs | 2 +- database/src/table.rs | 57 +++++++++++++++++++++++++++++++++++++++++++++ database/src/test_shared.rs | 28 ++++++++++++++++++++++ database/src/tests.rs | 57 --------------------------------------------- 4 files changed, 86 insertions(+), 58 deletions(-) create mode 100644 database/src/test_shared.rs delete mode 100644 database/src/tests.rs (limited to 'database/src') diff --git a/database/src/lib.rs b/database/src/lib.rs index 67cbca4..cd9777d 100644 --- a/database/src/lib.rs +++ b/database/src/lib.rs @@ -10,6 +10,6 @@ pub mod table; pub mod query; pub mod filter; #[cfg(test)] -pub mod tests; +pub mod test_shared; pub type Pad32 = u32; diff --git a/database/src/table.rs b/database/src/table.rs index ace0fb8..4535b4c 100644 --- a/database/src/table.rs +++ b/database/src/table.rs @@ -103,3 +103,60 @@ impl Table { self.query(txn, query).next() } } + +#[cfg(test)] +mod test { + use crate::{ + backends::{Database, new_memory}, + table::Table, + test_shared::{NAME, new_bob}, + }; + use anyhow::Result; + + #[test] + pub fn insert_get() -> Result<()> { + let db = new_memory(); + let table = Table::new(5); + + let mut bob_row = 0; + db.write_transaction(&mut |txn| { + bob_row = table.insert(txn, new_bob())?; + Ok(()) + })?; + + let mut bob = None; + db.read_transaction(&mut |txn| { + bob = table.get(txn, bob_row)?; + Ok(()) + })?; + + assert_eq!(bob.unwrap().as_object().get(NAME).unwrap(), "Bob"); + Ok(()) + } + + #[test] + pub fn update() -> Result<()> { + let db = new_memory(); + let table = Table::new(5); + + let mut bob_row = 0; + let mut bob = None; + + db.write_transaction(&mut |txn| { + bob_row = table.insert(txn, new_bob())?; + Ok(()) + })?; + db.write_transaction(&mut |txn| { + let better_bob = new_bob().as_object().insert(NAME, "Better Bob"); + table.update(txn, bob_row, better_bob)?; + Ok(()) + })?; + db.read_transaction(&mut |txn| { + bob = table.get(txn, bob_row)?; + Ok(()) + })?; + + assert_eq!(bob.unwrap().as_object().get(NAME).unwrap(), "Better Bob"); + Ok(()) + } +} diff --git a/database/src/test_shared.rs b/database/src/test_shared.rs new file mode 100644 index 0000000..fbd9501 --- /dev/null +++ b/database/src/test_shared.rs @@ -0,0 +1,28 @@ +/* + This file is part of jellything (https://codeberg.org/metamuffin/jellything) + which is licensed under the GNU Affero General Public License (version 3); see /COPYING. + Copyright (C) 2026 metamuffin +*/ + +use jellyobject::{ObjectBuffer, Registry, fields}; +use std::sync::LazyLock; + +pub static TAGREG: LazyLock = LazyLock::new(|| { + let mut reg = Registry::default(); + register_fields(&mut reg); + reg +}); +fields! { + NAME: &str = 15 "name"; + AGE: u32 = 13 "age"; + FRIEND: &str = 54321 "friend"; +} + +pub(crate) fn new_bob() -> ObjectBuffer { + ObjectBuffer::new(&mut [ + (NAME.0, &"Bob"), + (AGE.0, &35_u32), + (FRIEND.0, &"Alice"), + (FRIEND.0, &"Charlie"), + ]) +} diff --git a/database/src/tests.rs b/database/src/tests.rs deleted file mode 100644 index dd4d1ae..0000000 --- a/database/src/tests.rs +++ /dev/null @@ -1,57 +0,0 @@ -/* - This file is part of jellything (https://codeberg.org/metamuffin/jellything) - which is licensed under the GNU Affero General Public License (version 3); see /COPYING. - Copyright (C) 2026 metamuffin -*/ - -use std::sync::LazyLock; - -use crate::{ - backends::{Database, new_memory}, - table::Table, -}; -use anyhow::Result; -use jellyobject::{ObjectBuffer, Registry, fields}; - -pub static TAGREG: LazyLock = LazyLock::new(|| { - let mut reg = Registry::default(); - register_fields(&mut reg); - reg -}); -fields! { - NAME: &str = 15 "name"; - AGE: u32 = 13 "age"; - FRIEND: &str = 54321 "friend"; -} - -fn test_object() -> ObjectBuffer { - ObjectBuffer::new(&mut [ - (NAME.0, &"Bob"), - (AGE.0, &35_u32), - (FRIEND.0, &"Alice"), - (FRIEND.0, &"Charlie"), - ]) -} - -#[test] -fn table_insert_get() -> Result<()> { - let db = new_memory(); - let table = Table::new(5); - - let mut bob_row = 0; - db.write_transaction(&mut |txn| { - bob_row = table.insert(txn, test_object())?; - Ok(()) - })?; - - let mut bob = None; - db.read_transaction(&mut |txn| { - bob = table.get(txn, bob_row)?; - Ok(()) - })?; - - assert!(bob.is_some()); - assert_eq!(bob.unwrap().as_object().get(NAME).unwrap(), "Bob"); - - Ok(()) -} -- cgit v1.3