public void VerifyPredictionForCommandAndPositionalParameters() { var predictionContext = PredictionContext.Create("Get-AzStorageAccount resourcegroup"); var commandAst = predictionContext.InputAst.FindAll(p => p is CommandAst, true).LastOrDefault() as CommandAst; var commandName = (commandAst?.CommandElements?.FirstOrDefault() as StringConstantExpressionAst)?.Value; var inputParameterSet = new ParameterSet(commandAst, _azContext); var rawUserInput = predictionContext.InputAst.Extent.Text; var presentCommands = new Dictionary <string, int>(); var result = this._predictor.GetSuggestion(commandName, inputParameterSet, rawUserInput, presentCommands, 3, 1, CancellationToken.None); var expected = new PredictiveSuggestion[] { new PredictiveSuggestion("Get-AzStorageAccount resourcegroup -Name 'myStorageAccount'"), new PredictiveSuggestion("Get-AzStorageAccount resourcegroup -Name 'myStorageAccount' -DefaultProfile {IAzureContextContainer}"), new PredictiveSuggestion("Get-AzStorageAccount resourcegroup -Name 'myStorageAccount' -IncludeGeoReplicationStats"), }; Assert.Equal(expected.Select(e => e.SuggestionText), result.PredictiveSuggestions.Select(r => r.SuggestionText)); }
/// <summary> /// Adds a new suggestion. /// </summary> /// <param name="predictiveSuggestion">The suggestion to show to the user.</param> /// <param name="sourceText">The text that used to construct <paramref name="predictiveSuggestion"/>.</param> /// <param name="suggestionSource">The source where the suggestion is from.</param> public void AddSuggestion(PredictiveSuggestion predictiveSuggestion, string sourceText, SuggestionSource suggestionSource) { Validation.CheckArgument(predictiveSuggestion, $"{nameof(predictiveSuggestion)} cannot be null."); Validation.CheckArgument(!string.IsNullOrWhiteSpace(predictiveSuggestion.SuggestionText), $"{nameof(predictiveSuggestion)} cannot have a null or whitespace suggestion text."); Validation.CheckArgument(!string.IsNullOrWhiteSpace(sourceText), $"{nameof(sourceText)} cannot be null or whitespace."); _predictiveSuggestions.Add(predictiveSuggestion); _sourceTexts.Add(sourceText); _suggestionSources.Add(suggestionSource); CheckObjectInvariant(); }
/// <summary> /// Adds a new suggestion. /// </summary> /// <param name="predictiveSuggestion">The suggestion to show to the user.</param> /// <param name="sourceText">The text that used to construct <paramref name="predictiveSuggestion"/>.</param> /// <param name="suggestionSource">The source where the suggestion is from.</param> /// <returns>True if the suggestion is added. Otherwise, it returns false.</returns> public bool AddSuggestion(PredictiveSuggestion predictiveSuggestion, string sourceText, SuggestionSource suggestionSource) { Validation.CheckArgument(predictiveSuggestion, $"{nameof(predictiveSuggestion)} cannot be null."); Validation.CheckArgument(!string.IsNullOrWhiteSpace(predictiveSuggestion.SuggestionText), $"{nameof(predictiveSuggestion)} cannot have a null or whitespace suggestion text."); Validation.CheckArgument(!string.IsNullOrWhiteSpace(sourceText), $"{nameof(sourceText)} cannot be null or whitespace."); for (var i = 0; i < _predictiveSuggestions.Count; ++i) { if (string.Equals(_predictiveSuggestions[i].SuggestionText, predictiveSuggestion.SuggestionText, StringComparison.Ordinal)) { return(false); } } _predictiveSuggestions.Add(predictiveSuggestion); _sourceTexts.Add(sourceText); _suggestionSources.Add(suggestionSource); CheckObjectInvariant(); return(true); }
/// <summary> /// Adds a new suggestion. /// </summary> /// <param name="predictiveSuggestion">The suggestion to show to the user.</param> /// <param name="sourceText">The text that used to construct <paramref name="predictiveSuggestion"/>.</param> public void AddSuggestion(PredictiveSuggestion predictiveSuggestion, string sourceText) => AddSuggestion(predictiveSuggestion, sourceText, SuggestionSource.None);