diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-06-20 01:11:25 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-06-20 01:11:25 +0800 |
| commit | 9d491352d161ee629cc47459537344ba0ea4bb35 (patch) | |
| tree | 40d847da5cfafce48c3ca99c78bcc077da4c4fb2 /mingling_core/src/comp | |
| parent | 8749087c5035fbe4c0dce0893a39e0e2265fa130 (diff) | |
Add shared `MockProgramCollect` and conditional `Groupped` bounds
Extract duplicate `MockCollect` implementations into a reusable
`MockProgramCollect` type. Conditionally require `Serialize` on the
`Groupped` trait when the `general_renderer` feature is enabled.
Diffstat (limited to 'mingling_core/src/comp')
| -rw-r--r-- | mingling_core/src/comp/comp_ctx.rs | 65 |
1 files changed, 6 insertions, 59 deletions
diff --git a/mingling_core/src/comp/comp_ctx.rs b/mingling_core/src/comp/comp_ctx.rs index b9f9020..8d7fa5c 100644 --- a/mingling_core/src/comp/comp_ctx.rs +++ b/mingling_core/src/comp/comp_ctx.rs @@ -20,80 +20,27 @@ where #[cfg(test)] mod tests { - use super::*; - use crate::{AnyOutput, ChainProcess, Groupped, RenderResult}; - - /// Minimal mock collector that satisfies `C: ProgramCollect<Enum = C>` - /// by setting `Enum = Self`. - #[derive(Debug, Clone, PartialEq)] - struct MockCollect; - - impl Groupped<MockCollect> for MockCollect { - fn member_id() -> MockCollect { - MockCollect - } - } + use crate::MockProgramCollect; - impl ProgramCollect for MockCollect { - type Enum = MockCollect; - type ErrorDispatcherNotFound = MockCollect; - type ErrorRendererNotFound = MockCollect; - type ResultEmpty = MockCollect; - - fn build_renderer_not_found(_member_id: MockCollect) -> AnyOutput<MockCollect> { - unimplemented!() - } - fn build_dispatcher_not_found(_args: Vec<String>) -> AnyOutput<MockCollect> { - unimplemented!() - } - fn build_empty_result() -> AnyOutput<MockCollect> { - unimplemented!() - } - fn render(_any: AnyOutput<MockCollect>, _r: &mut RenderResult) { - unimplemented!() - } - fn render_help(_any: AnyOutput<MockCollect>, _r: &mut RenderResult) { - unimplemented!() - } - fn do_chain(_any: AnyOutput<MockCollect>) -> ChainProcess<MockCollect> { - unimplemented!() - } - #[cfg(feature = "comp")] - fn do_comp(_any: &AnyOutput<MockCollect>, _ctx: &crate::ShellContext) -> crate::Suggest { - unimplemented!() - } - fn has_renderer(_any: &AnyOutput<MockCollect>) -> bool { - unimplemented!() - } - fn has_chain(_any: &AnyOutput<MockCollect>) -> bool { - unimplemented!() - } - - #[cfg(feature = "general_renderer")] - fn general_render( - _any: AnyOutput<MockCollect>, - _setting: &crate::GeneralRendererSetting, - ) -> Result<RenderResult, crate::error::GeneralRendererSerializeError> { - unimplemented!() - } - } + use super::*; #[test] fn test_is_completing_with_comp_subcommand() { - let program: Program<MockCollect> = + let program: Program<MockProgramCollect> = Program::new_with_args(["program", "__comp", "some", "args"]); assert!(program.is_completing()); } #[test] fn test_is_completing_with_normal_subcommand() { - let program: Program<MockCollect> = Program::new_with_args(["program", "normal", "cmd"]); + let program: Program<MockProgramCollect> = + Program::new_with_args(["program", "normal", "cmd"]); assert!(!program.is_completing()); } #[test] fn test_is_completing_with_no_args() { - let program: Program<MockCollect> = Program::new_with_args(["program"]); + let program: Program<MockProgramCollect> = Program::new_with_args(["program"]); assert!(!program.is_completing()); } } |
