diff options
Diffstat (limited to 'mingling_pathf/test/src/lib.rs')
| -rw-r--r-- | mingling_pathf/test/src/lib.rs | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/mingling_pathf/test/src/lib.rs b/mingling_pathf/test/src/lib.rs index 51e19a6..824cbbf 100644 --- a/mingling_pathf/test/src/lib.rs +++ b/mingling_pathf/test/src/lib.rs @@ -233,8 +233,11 @@ fn test_groupped_derive_analyze() { "::Derived1", "::Derived2", "::Derived3", + "::EnumDerived1", + "::EnumDerived2", "::sub::Derived1", "::sub::Derived3", + "::sub::EnumDerived1", ]; assert_eq!(r.len(), required.len()); @@ -315,12 +318,41 @@ fn test_dispatcher_clap_analyze() { let r = analyzer.analyze_file(file).unwrap(); let required: Vec<&str> = vec![ + // Root: entry types (bare dispatcher_clap, no params) "::EntryClap1", "::EntryClap2", "::EntryClap3", "::EntryClap4", + // Root: with CMD type + "::EntryWithCmd", + "::CMDGreet", + // Root: with CMD + error + "::EntryWithError", + "::CMDDelete", + "::ErrorDelete", + // Root: with CMD + help + "::EntryWithHelp", + "::CMDHelp", + "::__internal_help_cmdhelp_help", + // Root: with CMD + error + help + "::EntryFull", + "::CMDFull", + "::ErrorFull", + "::__internal_help_cmdfull_help", + // Sub: entry types (bare dispatcher_clap) "::sub::EntryClap1", "::sub::EntryClap3", + // Sub: with CMD type + "::sub::EntryWithCmd", + "::sub::CMDGreet", + // Sub: with CMD + error + "::sub::EntryWithError", + "::sub::CMDDelete", + "::sub::ErrorDelete", + // Sub: with CMD + help + "::sub::EntryWithHelp", + "::sub::CMDHelp", + "::sub::__internal_help_cmdhelp_help", ]; assert_eq!(r.len(), required.len()); @@ -328,3 +360,30 @@ fn test_dispatcher_clap_analyze() { assert!(r.contains(*entry), "Result should contain: {}", entry); } } + +#[test] +fn test_dispatcher_clap_dispatch_tree() { + use mingling_pathf::config::PathfinderConfig; + use mingling_pathf::pattern_analyzer; + + let file = current_dir() + .unwrap() + .join("src/test_files/test_dispatcher_clap.rs"); + + // Without dispatch_tree: 26 items (same set as test_dispatcher_clap_analyze) + let r1 = pattern_analyzer::init().analyze_file(&file).unwrap(); + assert_eq!(r1.len(), 26); + + // With dispatch_tree: 26 + 4 __internal (root) + 3 __internal (sub, no "full") = 33 + let r2 = pattern_analyzer::init_with_config(PathfinderConfig::with_dispatch_tree()) + .analyze_file(&file) + .unwrap(); + assert_eq!(r2.len(), 33); + assert!(r2.contains("::__internal_dispatcher_greet")); + assert!(r2.contains("::__internal_dispatcher_delete")); + assert!(r2.contains("::__internal_dispatcher_helpcmd")); + assert!(r2.contains("::__internal_dispatcher_full")); + assert!(r2.contains("::sub::__internal_dispatcher_greet")); + assert!(r2.contains("::sub::__internal_dispatcher_delete")); + assert!(r2.contains("::sub::__internal_dispatcher_helpcmd")); +} |
