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));
        }
Пример #2
0
        /// <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);