From 8011bf78e64b7aae1c407fcb54c1afb5f52bfd9c Mon Sep 17 00:00:00 2001 From: John Taylor Date: Tue, 29 Jan 2019 12:02:00 -0800 Subject: [PATCH] allow choice recognizer to accept null and empty string --- .../Choices/ChoiceRecognizers.cs | 5 +++++ libraries/Microsoft.Bot.Builder.Dialogs/Choices/Find.cs | 5 ----- .../ChoicesRecognizersTests.cs | 7 +++++++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/libraries/Microsoft.Bot.Builder.Dialogs/Choices/ChoiceRecognizers.cs b/libraries/Microsoft.Bot.Builder.Dialogs/Choices/ChoiceRecognizers.cs index 1084615ec4..470730f8aa 100644 --- a/libraries/Microsoft.Bot.Builder.Dialogs/Choices/ChoiceRecognizers.cs +++ b/libraries/Microsoft.Bot.Builder.Dialogs/Choices/ChoiceRecognizers.cs @@ -17,6 +17,11 @@ public static List> RecognizeChoices(string utterance, public static List> RecognizeChoices(string utterance, IList list, FindChoicesOptions options = null) { + if (utterance == null) + { + utterance = string.Empty; + } + // Try finding choices by text search first // - We only want to use a single strategy for returning results to avoid issues where utterances // like the "the third one" or "the red one" or "the first division book" would miss-recognize as diff --git a/libraries/Microsoft.Bot.Builder.Dialogs/Choices/Find.cs b/libraries/Microsoft.Bot.Builder.Dialogs/Choices/Find.cs index 47db49bc8e..a3a09b88d2 100644 --- a/libraries/Microsoft.Bot.Builder.Dialogs/Choices/Find.cs +++ b/libraries/Microsoft.Bot.Builder.Dialogs/Choices/Find.cs @@ -21,11 +21,6 @@ public static List> FindChoices(string utterance, IList public static List> FindChoices(string utterance, IList choices, FindChoicesOptions options = null) { - if (string.IsNullOrEmpty(utterance)) - { - throw new ArgumentNullException(nameof(utterance)); - } - if (choices == null) { throw new ArgumentNullException(nameof(choices)); diff --git a/tests/Microsoft.Bot.Builder.Dialogs.Tests/ChoicesRecognizersTests.cs b/tests/Microsoft.Bot.Builder.Dialogs.Tests/ChoicesRecognizersTests.cs index 7be161bf36..78038da625 100644 --- a/tests/Microsoft.Bot.Builder.Dialogs.Tests/ChoicesRecognizersTests.cs +++ b/tests/Microsoft.Bot.Builder.Dialogs.Tests/ChoicesRecognizersTests.cs @@ -168,6 +168,13 @@ public void ShouldFindMultipleChoicesInAnUtteranceByNumerical_index() AssertChoice(found[1], "blue", 2, 1.0f); } + [TestMethod] + public void ShouldAcceptNullForUtterance() + { + var found = ChoiceRecognizers.RecognizeChoices(null, colorChoices); + Assert.AreEqual(0, found.Count); + } + // Helper functions private static void AssertResult(ModelResult result, int start, int end, string text)