From 08a97b2c4f9ddc78d354795be8bf2a43c5f21acd Mon Sep 17 00:00:00 2001 From: Brian <32250137+TehBrian@users.noreply.github.com> Date: Tue, 7 Jun 2022 08:18:59 -0400 Subject: [PATCH] fix: make BooleanArgument suggestions lowercase (#336) --- .../arguments/standard/BooleanArgument.java | 12 ++++++++++-- .../arguments/standard/BooleanParserTest.java | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/BooleanArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/BooleanArgument.java index 5764a43b..179e8bc5 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/standard/BooleanArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/standard/BooleanArgument.java @@ -34,9 +34,11 @@ import cloud.commandframework.exceptions.parsing.NoInputProvidedException; import cloud.commandframework.exceptions.parsing.ParserException; import java.util.Arrays; import java.util.List; +import java.util.Locale; import java.util.Objects; import java.util.Queue; import java.util.function.BiFunction; +import java.util.stream.Collectors; import org.apiguardian.api.API; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; @@ -162,10 +164,16 @@ public final class BooleanArgument extends CommandArgument { @API(status = API.Status.STABLE) public static final class BooleanParser implements ArgumentParser { + private static final List STRICT = Arrays.asList("TRUE", "FALSE"); private static final List LIBERAL = Arrays.asList("TRUE", "YES", "ON", "FALSE", "NO", "OFF"); private static final List LIBERAL_TRUE = Arrays.asList("TRUE", "YES", "ON"); private static final List LIBERAL_FALSE = Arrays.asList("FALSE", "NO", "OFF"); + private static final List STRICT_LOWER = STRICT + .stream().map(s -> s.toLowerCase(Locale.ROOT)).collect(Collectors.toList()); + private static final List LIBERAL_LOWER = LIBERAL + .stream().map(s -> s.toLowerCase(Locale.ROOT)).collect(Collectors.toList()); + private final boolean liberal; /** @@ -225,10 +233,10 @@ public final class BooleanArgument extends CommandArgument { final @NonNull String input ) { if (!this.liberal) { - return Arrays.asList("TRUE", "FALSE"); + return STRICT_LOWER; } - return LIBERAL; + return LIBERAL_LOWER; } @Override diff --git a/cloud-core/src/test/java/cloud/commandframework/arguments/standard/BooleanParserTest.java b/cloud-core/src/test/java/cloud/commandframework/arguments/standard/BooleanParserTest.java index 3fb63e6f..f5bff39f 100644 --- a/cloud-core/src/test/java/cloud/commandframework/arguments/standard/BooleanParserTest.java +++ b/cloud-core/src/test/java/cloud/commandframework/arguments/standard/BooleanParserTest.java @@ -148,8 +148,8 @@ class BooleanParserTest { static Stream Suggestions_ExpectedSuggestions_Source() { return Stream.of( - Arguments.arguments(false, ArgumentTestHelper.linkedListOf("TRUE", "FALSE")), - Arguments.arguments(true, ArgumentTestHelper.linkedListOf("TRUE", "YES", "ON", "FALSE", "NO", "OFF")) + Arguments.arguments(false, ArgumentTestHelper.linkedListOf("true", "false")), + Arguments.arguments(true, ArgumentTestHelper.linkedListOf("true", "yes", "on", "false", "no", "off")) ); } }