aboutsummaryrefslogtreecommitdiff
path: root/database/src/tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'database/src/tests.rs')
-rw-r--r--database/src/tests.rs57
1 files changed, 57 insertions, 0 deletions
diff --git a/database/src/tests.rs b/database/src/tests.rs
new file mode 100644
index 0000000..dd4d1ae
--- /dev/null
+++ b/database/src/tests.rs
@@ -0,0 +1,57 @@
+/*
+ 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 <metamuffin.org>
+*/
+
+use std::sync::LazyLock;
+
+use crate::{
+ backends::{Database, new_memory},
+ table::Table,
+};
+use anyhow::Result;
+use jellyobject::{ObjectBuffer, Registry, fields};
+
+pub static TAGREG: LazyLock<Registry> = 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(())
+}