Skip to main content

itools_config/
test_macro.rs

1//! 测试 CLI 宏 API
2
3use crate::Parse;
4
5/// 测试命令行工具
6#[derive(Debug)]
7pub struct TestCli {
8    /// 命令
9    pub command: String,
10}
11
12impl Parse for TestCli {
13    fn parse(args: &mut Vec<String>) -> Self {
14        if args.is_empty() {
15            panic!("Expected command");
16        }
17        Self { command: args.remove(0) }
18    }
19}
20
21/// 测试宏功能
22pub fn test_macro() {
23    println!("Testing CLI macro API...");
24
25    // 测试初始化命令
26    let args1 = vec!["init", "test-project"];
27    let mut args1_str: Vec<String> = args1.iter().map(|s| s.to_string()).collect();
28    let cli1 = TestCli::parse(&mut args1_str);
29    println!("Test 1 passed: {:?}", cli1);
30
31    // 测试构建命令
32    let args2 = vec!["build"];
33    let mut args2_str: Vec<String> = args2.iter().map(|s| s.to_string()).collect();
34    let cli2 = TestCli::parse(&mut args2_str);
35    println!("Test 2 passed: {:?}", cli2);
36
37    // 测试开发命令
38    let args3 = vec!["dev"];
39    let mut args3_str: Vec<String> = args3.iter().map(|s| s.to_string()).collect();
40    let cli3 = TestCli::parse(&mut args3_str);
41    println!("Test 3 passed: {:?}", cli3);
42
43    // 测试检查命令
44    let args4 = vec!["check"];
45    let mut args4_str: Vec<String> = args4.iter().map(|s| s.to_string()).collect();
46    let cli4 = TestCli::parse(&mut args4_str);
47    println!("Test 4 passed: {:?}", cli4);
48
49    println!("All tests passed!");
50}