aboutsummaryrefslogtreecommitdiff
path: root/mingling_core/src/comp/comp_ctx.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-06-20 01:11:25 +0800
committer魏曹先生 <1992414357@qq.com>2026-06-20 01:11:25 +0800
commit9d491352d161ee629cc47459537344ba0ea4bb35 (patch)
tree40d847da5cfafce48c3ca99c78bcc077da4c4fb2 /mingling_core/src/comp/comp_ctx.rs
parent8749087c5035fbe4c0dce0893a39e0e2265fa130 (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/comp_ctx.rs')
-rw-r--r--mingling_core/src/comp/comp_ctx.rs65
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());
}
}