pub use super::context_handler::ContextHandler;
pub use super::deep_analyze_handler::DeepAnalyzeHandler;
pub use super::diagnostics_handler::DiagnosticsHandler;
pub use super::edit_apply_handler::EditApplyHandler;
pub use super::edit_preview_handler::EditPreviewHandler;
pub use super::file_summary_handler::FileSummaryHandler;
pub use super::git_status_handler::GitStatusHandler;
pub use super::grep_symbols_handler::GrepSymbolsHandler;
pub use super::impact_analysis_handler::ImpactAnalysisHandler;
pub use super::index_handler::IndexHandler;
pub use super::phase_handler::{PhaseAnalysisAliasHandler, PhaseAnalysisHandler};
pub use super::project_map_handler::ProjectMapHandler;
pub use super::read_file_handler::ReadFileHandler;
pub use super::read_symbol_handler::ReadSymbolHandler;
pub use super::rename_symbol_handler::RenameSymbolHandler;
pub use super::search_handler::SearchHandler;
pub use super::symbol_lookup_handler::SymbolLookupHandler;
pub use super::text_search_handler::TextSearchHandler;
pub use super::write_handler::WriteHandler;
dispatch_handler! {
Index => IndexHandler,
Search => SearchHandler,
DeepAnalyze => DeepAnalyzeHandler,
Context => ContextHandler,
Diagnostics => DiagnosticsHandler,
PhaseAnalysis => PhaseAnalysisHandler,
PhaseAnalysisAlias => PhaseAnalysisAliasHandler,
FileSummary => FileSummaryHandler,
SymbolLookup => SymbolLookupHandler,
ProjectMap => ProjectMapHandler,
GrepSymbols => GrepSymbolsHandler,
ReadSymbol => ReadSymbolHandler,
Write => WriteHandler,
EditPreview => EditPreviewHandler,
EditApply => EditApplyHandler,
RenameSymbol => RenameSymbolHandler,
ImpactAnalysis => ImpactAnalysisHandler,
TextSearch => TextSearchHandler,
ReadFile => ReadFileHandler,
GitStatus => GitStatusHandler,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_handler_names() {
assert_eq!(IndexHandler.name(), "leindex.index");
assert_eq!(SearchHandler.name(), "leindex.search");
assert_eq!(DeepAnalyzeHandler.name(), "leindex.deep-analyze");
assert_eq!(ContextHandler.name(), "leindex.context");
assert_eq!(DiagnosticsHandler.name(), "leindex.diagnostics");
assert_eq!(PhaseAnalysisHandler.name(), "leindex.phase-analysis");
assert_eq!(PhaseAnalysisAliasHandler.name(), "phase_analysis");
assert_eq!(FileSummaryHandler.name(), "leindex.file-summary");
assert_eq!(SymbolLookupHandler.name(), "leindex.symbol-lookup");
assert_eq!(ProjectMapHandler.name(), "leindex.project-map");
assert_eq!(GrepSymbolsHandler.name(), "leindex.grep-symbols");
assert_eq!(ReadSymbolHandler.name(), "leindex.read-symbol");
assert_eq!(WriteHandler.name(), "leindex.write");
assert_eq!(EditPreviewHandler.name(), "leindex.edit-preview");
assert_eq!(EditApplyHandler.name(), "leindex.edit-apply");
assert_eq!(RenameSymbolHandler.name(), "leindex.rename-symbol");
assert_eq!(ImpactAnalysisHandler.name(), "leindex.impact-analysis");
}
#[test]
fn test_handler_titles() {
assert_eq!(IndexHandler.title(), "LeIndex [Index]");
assert_eq!(SearchHandler.title(), "LeIndex [Search]");
assert_eq!(DeepAnalyzeHandler.title(), "LeIndex [Deep Analyze]");
assert_eq!(ContextHandler.title(), "LeIndex [Context]");
assert_eq!(DiagnosticsHandler.title(), "LeIndex [Diagnostics]");
assert_eq!(PhaseAnalysisHandler.title(), "LeIndex [Phase Analysis]");
assert_eq!(PhaseAnalysisAliasHandler.title(), "Phase Analysis");
assert_eq!(FileSummaryHandler.title(), "LeIndex [File Summary]");
assert_eq!(SymbolLookupHandler.title(), "LeIndex [Symbol Lookup]");
assert_eq!(ProjectMapHandler.title(), "LeIndex [Project Map]");
assert_eq!(GrepSymbolsHandler.title(), "LeIndex [Grep Symbols]");
assert_eq!(ReadSymbolHandler.title(), "LeIndex [Read Symbol]");
assert_eq!(WriteHandler.title(), "LeIndex [Write]");
assert_eq!(EditPreviewHandler.title(), "LeIndex [Edit Preview]");
assert_eq!(EditApplyHandler.title(), "LeIndex [Edit Apply]");
assert_eq!(RenameSymbolHandler.title(), "LeIndex [Rename Symbol]");
assert_eq!(ImpactAnalysisHandler.title(), "LeIndex [Impact Analysis]");
}
#[test]
fn test_argument_schemas() {
let schemas = vec![
IndexHandler.argument_schema(),
SearchHandler.argument_schema(),
DeepAnalyzeHandler.argument_schema(),
WriteHandler.argument_schema(),
];
for schema in schemas {
assert!(schema.is_object());
assert!(schema.get("type").is_some());
}
}
#[test]
fn test_all_tools_have_project_path_except_index_diagnostics() {
let tools_with_project_path = vec![
SearchHandler.argument_schema(),
DeepAnalyzeHandler.argument_schema(),
ContextHandler.argument_schema(),
FileSummaryHandler.argument_schema(),
SymbolLookupHandler.argument_schema(),
ProjectMapHandler.argument_schema(),
GrepSymbolsHandler.argument_schema(),
ReadSymbolHandler.argument_schema(),
WriteHandler.argument_schema(),
EditPreviewHandler.argument_schema(),
EditApplyHandler.argument_schema(),
RenameSymbolHandler.argument_schema(),
ImpactAnalysisHandler.argument_schema(),
];
for schema in tools_with_project_path {
let props = schema.get("properties").unwrap();
assert!(
props.get("project_path").is_some(),
"All query tools must accept project_path"
);
}
}
}