diff --git a/src/engine.rs b/src/engine.rs new file mode 100644 index 0000000..9b27d78 --- /dev/null +++ b/src/engine.rs @@ -0,0 +1,33 @@ +pub trait InputEngine { + fn get(&self) -> String; +} + +struct InputEngineStdin {} + +impl InputEngine for InputEngineStdin { + fn get(&self) -> String { + return "hello world".to_string(); + } +} + +#[cfg(test)] +mod test { + use super::*; + + struct InputEngineTest {} + impl InputEngine for InputEngineTest { + fn get(&self) -> String { + return "hello world".to_string(); + } + } + + #[test] + fn test_input_engine_impl() { + let input_engine_test = InputEngineTest{}; + _test_input_engine_impl(&input_engine_test); + } + + fn _test_input_engine_impl(engine: &dyn InputEngine) { + assert_eq!("hello world".to_string(), engine.get()); + } +} diff --git a/src/main.rs b/src/main.rs index 1d8a9b5..64f10b4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,5 @@ pub mod config; +pub mod engine; fn main() { let cfg = config::build_config();