lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

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 }