pub mod support; use nu_cli::NuCompleter; use reedline::Completer; use support::{match_suggestions, new_engine}; #[test] fn variables_completions() { // Create a new engine let (dir, _, mut engine, mut stack) = new_engine(); // Add record value as example let record = "let actor = { name: 'Tom Hardy', age: 44 }"; assert!(support::merge_input(record.as_bytes(), &mut engine, &mut stack, dir).is_ok()); // Instatiate a new completer let mut completer = NuCompleter::new(std::sync::Arc::new(engine), stack); // Test completions for $nu let suggestions = completer.complete("$nu.", 4); assert_eq!(8, suggestions.len()); let expected: Vec = vec![ "config-path".into(), "env-path".into(), "history-path".into(), "home-path".into(), "os-info".into(), "pid".into(), "scope".into(), "temp-path".into(), ]; // Match results match_suggestions(expected, suggestions); // Test completions for $nu.h (filter) let suggestions = completer.complete("$nu.h", 5); assert_eq!(2, suggestions.len()); let expected: Vec = vec!["history-path".into(), "home-path".into()]; // Match results match_suggestions(expected, suggestions); // Test completions for custom var let suggestions = completer.complete("$actor.", 7); assert_eq!(2, suggestions.len()); let expected: Vec = vec!["age".into(), "name".into()]; // Match results match_suggestions(expected, suggestions); // Test completions for custom var (filtering) let suggestions = completer.complete("$actor.n", 7); assert_eq!(1, suggestions.len()); let expected: Vec = vec!["name".into()]; // Match results match_suggestions(expected, suggestions); // Test completions for $env let suggestions = completer.complete("$env.", 5); assert_eq!(2, suggestions.len()); let expected: Vec = vec!["PWD".into(), "TEST".into()]; // Match results match_suggestions(expected, suggestions); // Test completions for $env let suggestions = completer.complete("$env.T", 5); assert_eq!(1, suggestions.len()); let expected: Vec = vec!["TEST".into()]; // Match results match_suggestions(expected, suggestions); }