itools_config/
test_macro.rs1use crate::Parse;
4
5#[derive(Debug)]
7pub struct TestCli {
8 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
21pub fn test_macro() {
23 println!("Testing CLI macro API...");
24
25 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 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 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 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}