xref: /webrtc/interceptor/src/mock/mock_builder.rs (revision ffe74184)
1 use crate::error::Result;
2 use crate::{Interceptor, InterceptorBuilder};
3 use std::sync::Arc;
4 
5 pub type MockBuilderResult = Result<Arc<dyn Interceptor + Send + Sync>>;
6 
7 /// MockBuilder is a mock Builder for testing.
8 pub struct MockBuilder {
9     pub build: Box<dyn (Fn(&str) -> MockBuilderResult) + Send + Sync + 'static>,
10 }
11 
12 impl MockBuilder {
new<F: (Fn(&str) -> MockBuilderResult) + Send + Sync + 'static>(f: F) -> Self13     pub fn new<F: (Fn(&str) -> MockBuilderResult) + Send + Sync + 'static>(f: F) -> Self {
14         MockBuilder { build: Box::new(f) }
15     }
16 }
17 
18 impl InterceptorBuilder for MockBuilder {
build(&self, id: &str) -> MockBuilderResult19     fn build(&self, id: &str) -> MockBuilderResult {
20         (self.build)(id)
21     }
22 }
23