From ffbdb9ce397a6408d5a91cbdcbaf4e13b0c3ba0b Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 6 Jan 2026 14:56:20 +0100 Subject: Multi fields; object buffer constructor; unit tests --- common/object/src/tests.rs | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 common/object/src/tests.rs (limited to 'common/object/src/tests.rs') diff --git a/common/object/src/tests.rs b/common/object/src/tests.rs new file mode 100644 index 0000000..35a29ba --- /dev/null +++ b/common/object/src/tests.rs @@ -0,0 +1,39 @@ +/* + 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 crate::{ObjectBuffer, Tag, TypedTag}; +use std::marker::PhantomData; + +const NAME: TypedTag<&str> = TypedTag(Tag(15), PhantomData); +const AGE: TypedTag = TypedTag(Tag(13), PhantomData); +const FRIEND: TypedTag<&str> = TypedTag(Tag(54321), PhantomData); + +fn test_object() -> ObjectBuffer { + ObjectBuffer::new(&mut [ + (NAME.0, &"Bob"), + (AGE.0, &35_u32), + (FRIEND.0, &"Alice"), + (FRIEND.0, &"Charlie"), + ]) +} + +#[test] +fn read_single_field() { + let bob = test_object(); + let bob = bob.as_object(); + assert_eq!(bob.get(NAME), Some("Bob")); + assert_eq!(bob.get(AGE), Some(35)); +} + +#[test] +fn read_multi_field() { + let bob = test_object(); + let bob = bob.as_object(); + + let mut friends = bob.iter(FRIEND); + assert_eq!(friends.next(), Some("Alice")); + assert_eq!(friends.next(), Some("Charlie")); + assert_eq!(friends.next(), None); +} -- cgit v1.3