domain: add cross-cutting value objects (SystemId, DateTimeStamp, Checksum, StructuredData)

This commit is contained in:
2026-05-31 03:16:28 +02:00
parent f9cb142c3b
commit 3571c94bec
28 changed files with 320 additions and 122 deletions

View File

@@ -0,0 +1,27 @@
use domain::value_objects::Checksum;
#[test]
fn accepts_valid_sha256() {
let hex = "a".repeat(64);
assert!(Checksum::new(&hex).is_ok());
}
#[test]
fn rejects_short() {
let hex = "a".repeat(63);
assert!(Checksum::new(&hex).is_err());
}
#[test]
fn rejects_non_hex() {
let mut hex = "a".repeat(63);
hex.push('g');
assert!(Checksum::new(&hex).is_err());
}
#[test]
fn normalizes_to_lowercase() {
let hex = "A".repeat(64);
let cs = Checksum::new(&hex).unwrap();
assert_eq!(cs.as_str(), "a".repeat(64));
}