public void testIllegalSuggestionName() {
    try {
      new SuggestBuilder()
          .addSuggestion(null, PhraseSuggestionBuilderTests.randomPhraseSuggestionBuilder());
      fail("exception expected");
    } catch (NullPointerException e) {
      assertEquals("every suggestion needs a name", e.getMessage());
    }

    try {
      new SuggestBuilder()
          .addSuggestion("my-suggest", PhraseSuggestionBuilderTests.randomPhraseSuggestionBuilder())
          .addSuggestion(
              "my-suggest", PhraseSuggestionBuilderTests.randomPhraseSuggestionBuilder());
      fail("exception expected");
    } catch (IllegalArgumentException e) {
      assertEquals("already added another suggestion with name [my-suggest]", e.getMessage());
    }
  }
 private static SuggestionBuilder<?> randomSuggestionBuilder() {
   switch (randomIntBetween(0, 2)) {
     case 0:
       return TermSuggestionBuilderTests.randomTermSuggestionBuilder();
     case 1:
       return PhraseSuggestionBuilderTests.randomPhraseSuggestionBuilder();
     case 2:
       return CompletionSuggesterBuilderTests.randomCompletionSuggestionBuilder();
     default:
       return TermSuggestionBuilderTests.randomTermSuggestionBuilder();
   }
 }
 @Override
 protected SuggestBuilder createMutation(SuggestBuilder original) throws IOException {
   SuggestBuilder mutation = new SuggestBuilder().setGlobalText(original.getGlobalText());
   for (Entry<String, SuggestionBuilder<?>> suggestionBuilder :
       original.getSuggestions().entrySet()) {
     mutation.addSuggestion(suggestionBuilder.getKey(), suggestionBuilder.getValue());
   }
   if (randomBoolean()) {
     mutation.setGlobalText(randomAsciiOfLengthBetween(5, 60));
   } else {
     mutation.addSuggestion(
         randomAsciiOfLength(10), PhraseSuggestionBuilderTests.randomPhraseSuggestionBuilder());
   }
   return mutation;
 }