conformance.rs (1703B)
1 #![cfg(feature = "memory")] 2 3 #[path = "conformance/suite.rs"] 4 mod suite; 5 6 use radroots_storage::{ 7 EventStore, Journal, Outbox, ProjectionStore, atomic::AtomicStorage, 8 backup::StorageReliability, memory::MemoryStorage, private_artifact::PrivateArtifactStore, 9 }; 10 11 use suite::StorageConformanceHarness; 12 13 #[derive(Default)] 14 struct MemoryHarness { 15 storage: MemoryStorage, 16 } 17 18 impl StorageConformanceHarness for MemoryHarness { 19 fn event_store(&self) -> &dyn EventStore { 20 &self.storage 21 } 22 23 fn journal(&self) -> &dyn Journal { 24 &self.storage 25 } 26 27 fn outbox(&self) -> &dyn Outbox { 28 &self.storage 29 } 30 31 fn projection_store(&self) -> &dyn ProjectionStore { 32 &self.storage 33 } 34 35 fn private_artifact_store(&self) -> &dyn PrivateArtifactStore { 36 &self.storage 37 } 38 39 fn atomic_storage(&self) -> &dyn AtomicStorage { 40 &self.storage 41 } 42 43 fn reliability(&self) -> &dyn StorageReliability { 44 &self.storage 45 } 46 } 47 48 #[test] 49 fn memory_backend_shares_state_across_every_storage_spi() { 50 suite::assert_shared_state_conformance(&MemoryHarness::default()); 51 } 52 53 #[test] 54 fn memory_backend_atomic_failure_is_all_or_nothing() { 55 suite::assert_atomic_failure_isolation(&MemoryHarness::default()); 56 } 57 58 #[test] 59 fn memory_backend_rejects_identity_and_digest_conflicts() { 60 suite::assert_conflict_conformance(&MemoryHarness::default()); 61 } 62 63 #[test] 64 fn memory_backend_supports_every_atomic_workflow() { 65 suite::assert_atomic_workflow_conformance(&MemoryHarness::default()); 66 } 67 68 #[test] 69 fn memory_backend_supports_reliability_and_explicit_close() { 70 suite::assert_reliability_and_close_conformance(&MemoryHarness::default()); 71 }