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 }