lib

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

conformance.rs (1529B)


      1 #[path = "conformance/suite.rs"]
      2 mod suite;
      3 #[path = "conformance/support.rs"]
      4 mod support;
      5 
      6 use radroots_transport::Error;
      7 use suite::{
      8     assert_request_boundaries, assert_sink_cancellation, assert_sink_conformance,
      9     assert_sink_error, assert_source_cancellation, assert_source_conformance, assert_source_error,
     10 };
     11 use support::{CombinedAdapter, MockSink, MockSource};
     12 
     13 #[test]
     14 fn source_only_adapter_satisfies_the_reusable_contract() {
     15     let source = MockSource::successful();
     16     assert_source_conformance(&source);
     17 }
     18 
     19 #[test]
     20 fn sink_only_adapter_satisfies_the_reusable_contract() {
     21     let sink = MockSink::successful();
     22     assert_sink_conformance(&sink);
     23 }
     24 
     25 #[test]
     26 fn combined_adapter_satisfies_both_reusable_contracts() {
     27     let adapter = CombinedAdapter::successful();
     28     assert_source_conformance(&adapter);
     29     assert_sink_conformance(&adapter);
     30 }
     31 
     32 #[test]
     33 fn request_identity_and_operation_bounds_fail_closed() {
     34     assert_request_boundaries();
     35 }
     36 
     37 #[test]
     38 fn normalized_adapter_errors_are_not_retried_or_rewritten() {
     39     let source = MockSource::failing(Error::UnsupportedOperation);
     40     assert_source_error(&source, Error::UnsupportedOperation);
     41 
     42     let sink = MockSink::failing(Error::UnsupportedOperation);
     43     assert_sink_error(&sink, Error::UnsupportedOperation);
     44 }
     45 
     46 #[test]
     47 fn source_and_sink_cancellation_observe_publication_boundaries() {
     48     let source = MockSource::pending();
     49     assert_source_cancellation(&source);
     50 
     51     let sink = MockSink::pending();
     52     assert_sink_cancellation(&sink);
     53 }