From 696c03b8512ef185218bf49da298387d6c63797a Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 16 Aug 2022 17:53:59 +0200 Subject: [PATCH 1/3] Add better int and long handling for StaticValue annotation --- src/de/steamwar/command/SWCommandUtils.java | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/de/steamwar/command/SWCommandUtils.java b/src/de/steamwar/command/SWCommandUtils.java index 94a9c93..69e0b8c 100644 --- a/src/de/steamwar/command/SWCommandUtils.java +++ b/src/de/steamwar/command/SWCommandUtils.java @@ -145,18 +145,11 @@ public class SWCommandUtils { return index == -1 ? null : !falseValues.contains(index); }, (commandSender, s) -> tabCompletes); } - if ((parameter.getType() == int.class || parameter.getType() == Integer.class) && staticValue.value().length >= 2) { + if ((parameter.getType() == int.class || parameter.getType() == Integer.class || parameter.getType() == long.class || parameter.getType() == Long.class) && staticValue.value().length >= 2) { List tabCompletes = new ArrayList<>(Arrays.asList(staticValue.value())); return createMapper(s -> { - int index = tabCompletes.indexOf(s); - return index == -1 ? null : index; - }, (commandSender, s) -> tabCompletes); - } - if ((parameter.getType() == long.class || parameter.getType() == Long.class) && staticValue.value().length >= 2) { - List tabCompletes = new ArrayList<>(Arrays.asList(staticValue.value())); - return createMapper(s -> { - long index = tabCompletes.indexOf(s); - return index == -1 ? null : index; + Number index = tabCompletes.indexOf(s); + return index.longValue() == -1 ? null : index; }, (commandSender, s) -> tabCompletes); } } From c2795f0f34a8050f77276b980a33d4032a412b05 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 16 Aug 2022 18:04:55 +0200 Subject: [PATCH 2/3] Add StaticValueCommand and StaticValueCommandTest --- .../steamwar/command/StaticValueCommand.java | 55 ++++++++ .../command/StaticValueCommandTest.java | 123 ++++++++++++++++++ 2 files changed, 178 insertions(+) create mode 100644 testsrc/de/steamwar/command/StaticValueCommand.java create mode 100644 testsrc/de/steamwar/command/StaticValueCommandTest.java diff --git a/testsrc/de/steamwar/command/StaticValueCommand.java b/testsrc/de/steamwar/command/StaticValueCommand.java new file mode 100644 index 0000000..0eca60d --- /dev/null +++ b/testsrc/de/steamwar/command/StaticValueCommand.java @@ -0,0 +1,55 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2022 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package de.steamwar.command; + +import de.steamwar.command.dto.ExecutionIdentifier; +import de.steamwar.command.dto.TestSWCommand; + +public class StaticValueCommand extends TestSWCommand { + + public StaticValueCommand() { + super("staticvalue"); + } + + @Register + public void defaultStaticValue(String s, @StaticValue({"hello", "world"}) String staticValue) { + throw new ExecutionIdentifier("RunStaticValue with " + staticValue); + } + + @Register + public void booleanStaticValue(String s, @StaticValue(value = {"-a", "-b", "-c"}, allowISE = true) boolean staticValue) { + throw new ExecutionIdentifier("RunStaticValue with " + staticValue); + } + + @Register + public void booleanStaticValueOtherFalseValue(String s, @StaticValue(value = {"-d", "-e", "-f"}, allowISE = true, falseValues = { 1 }) boolean staticValue) { + throw new ExecutionIdentifier("RunStaticValue with " + staticValue); + } + + @Register + public void intStaticValue(String s, @StaticValue(value = {"-g", "-h", "-i"}, allowISE = true) int staticValue) { + throw new ExecutionIdentifier("RunStaticValue with int " + staticValue); + } + + @Register + public void longStaticValue(String s, @StaticValue(value = {"-j", "-k", "-l"}, allowISE = true) long staticValue) { + throw new ExecutionIdentifier("RunStaticValue with long " + staticValue); + } +} diff --git a/testsrc/de/steamwar/command/StaticValueCommandTest.java b/testsrc/de/steamwar/command/StaticValueCommandTest.java new file mode 100644 index 0000000..055b8e2 --- /dev/null +++ b/testsrc/de/steamwar/command/StaticValueCommandTest.java @@ -0,0 +1,123 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2022 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package de.steamwar.command; + +import de.steamwar.command.dto.ExecutionIdentifier; +import org.junit.Test; + +import static de.steamwar.AssertionUtils.assertCMDFramework; + +public class StaticValueCommandTest { + + @Test + public void defaultTest() { + StaticValueCommand cmd = new StaticValueCommand(); + try { + cmd.execute("", "", new String[] {"hello"}); + } catch (Exception e) { + assertCMDFramework(e, ExecutionIdentifier.class, "RunStaticValue with hello"); + } + try { + cmd.execute("", "", new String[] {"world"}); + } catch (Exception e) { + assertCMDFramework(e, ExecutionIdentifier.class, "RunStaticValue with world"); + } + } + + @Test + public void booleanTest() { + StaticValueCommand cmd = new StaticValueCommand(); + try { + cmd.execute("", "", new String[] {"-a"}); + } catch (Exception e) { + assertCMDFramework(e, ExecutionIdentifier.class, "RunStaticValue with false"); + } + try { + cmd.execute("", "", new String[] {"-b"}); + } catch (Exception e) { + assertCMDFramework(e, ExecutionIdentifier.class, "RunStaticValue with true"); + } + try { + cmd.execute("", "", new String[] {"-c"}); + } catch (Exception e) { + assertCMDFramework(e, ExecutionIdentifier.class, "RunStaticValue with true"); + } + } + + @Test + public void booleanOtherFalseTest() { + StaticValueCommand cmd = new StaticValueCommand(); + try { + cmd.execute("", "", new String[] {"-d"}); + } catch (Exception e) { + assertCMDFramework(e, ExecutionIdentifier.class, "RunStaticValue with true"); + } + try { + cmd.execute("", "", new String[] {"-e"}); + } catch (Exception e) { + assertCMDFramework(e, ExecutionIdentifier.class, "RunStaticValue with false"); + } + try { + cmd.execute("", "", new String[] {"-f"}); + } catch (Exception e) { + assertCMDFramework(e, ExecutionIdentifier.class, "RunStaticValue with true"); + } + } + + @Test + public void intTest() { + StaticValueCommand cmd = new StaticValueCommand(); + try { + cmd.execute("", "", new String[] {"-g"}); + } catch (Exception e) { + assertCMDFramework(e, ExecutionIdentifier.class, "RunStaticValue with int 0"); + } + try { + cmd.execute("", "", new String[] {"-h"}); + } catch (Exception e) { + assertCMDFramework(e, ExecutionIdentifier.class, "RunStaticValue with int 1"); + } + try { + cmd.execute("", "", new String[] {"-i"}); + } catch (Exception e) { + assertCMDFramework(e, ExecutionIdentifier.class, "RunStaticValue with int 2"); + } + } + + @Test + public void longTest() { + StaticValueCommand cmd = new StaticValueCommand(); + try { + cmd.execute("", "", new String[] {"-j"}); + } catch (Exception e) { + assertCMDFramework(e, ExecutionIdentifier.class, "RunStaticValue with long 0"); + } + try { + cmd.execute("", "", new String[] {"-k"}); + } catch (Exception e) { + assertCMDFramework(e, ExecutionIdentifier.class, "RunStaticValue with long 1"); + } + try { + cmd.execute("", "", new String[] {"-l"}); + } catch (Exception e) { + assertCMDFramework(e, ExecutionIdentifier.class, "RunStaticValue with long 2"); + } + } +} \ No newline at end of file From 498a638790ba61d9567d0ac76a5b00c71eba7736 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Tue, 16 Aug 2022 18:11:10 +0200 Subject: [PATCH 3/3] Add one last test --- .../de/steamwar/command/StaticValueCommandTest.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/testsrc/de/steamwar/command/StaticValueCommandTest.java b/testsrc/de/steamwar/command/StaticValueCommandTest.java index 055b8e2..665250a 100644 --- a/testsrc/de/steamwar/command/StaticValueCommandTest.java +++ b/testsrc/de/steamwar/command/StaticValueCommandTest.java @@ -22,10 +22,20 @@ package de.steamwar.command; import de.steamwar.command.dto.ExecutionIdentifier; import org.junit.Test; +import java.util.List; + import static de.steamwar.AssertionUtils.assertCMDFramework; +import static de.steamwar.AssertionUtils.assertTabCompletes; public class StaticValueCommandTest { + @Test + public void tabCompletionTest() { + StaticValueCommand cmd = new StaticValueCommand(); + List strings = cmd.tabComplete("", "", new String[]{""}); + assertTabCompletes(strings, "hello", "world", "-a", "-b", "-c", "-d", "-e", "-f", "-g", "-h", "-i", "-j", "-k", "-l"); + } + @Test public void defaultTest() { StaticValueCommand cmd = new StaticValueCommand();