From c70031e9f712f7c9c53c4187d22c397189341e83 Mon Sep 17 00:00:00 2001 From: zhaoyd5268 Date: Sat, 11 May 2024 16:33:53 -0700 Subject: [PATCH 1/9] Finish Second Feature --- .../jointheleague/discord_bot/DiscordBot.java | 5 +- .../features/GooBotFeatures/Counter.java | 78 ++++++++++++ .../features/GooBotFeatures/Greeting.java | 35 +++++ .../features/templates/FeatureTemplate.java | 7 +- .../student/first_feature/GreetingTest.java | 120 ++++++++++++++++++ 5 files changed, 239 insertions(+), 6 deletions(-) create mode 100644 src/main/java/org/jointheleague/features/GooBotFeatures/Counter.java create mode 100644 src/main/java/org/jointheleague/features/GooBotFeatures/Greeting.java create mode 100644 src/test/java/org/jointheleague/features/student/first_feature/GreetingTest.java diff --git a/src/main/java/org/jointheleague/discord_bot/DiscordBot.java b/src/main/java/org/jointheleague/discord_bot/DiscordBot.java index ae863505..7da7c743 100644 --- a/src/main/java/org/jointheleague/discord_bot/DiscordBot.java +++ b/src/main/java/org/jointheleague/discord_bot/DiscordBot.java @@ -3,12 +3,13 @@ import org.javacord.api.DiscordApi; import org.javacord.api.DiscordApiBuilder; import org.javacord.api.entity.intent.Intent; +import org.jointheleague.features.GooBotFeatures.Counter; import org.jointheleague.features.abstract_classes.Feature; +import org.jointheleague.features.GooBotFeatures.Greeting; import org.jointheleague.features.examples.second_features.HighLowGame; import org.jointheleague.features.examples.third_features.CatFactsApi; import org.jointheleague.features.examples.third_features.NewsApi; import org.jointheleague.features.examples.first_features.CurrentTime; -import org.jointheleague.features.examples.first_features.RandomNumber; import org.jointheleague.features.help_embed.HelpListener; import org.jointheleague.features.student.first_feature.FeatureOne; @@ -45,6 +46,8 @@ public void connect(boolean printInvite) { api.addMessageCreateListener(helpListener); //add features + addFeature(new Counter(channelName)); + addFeature(new Greeting(channelName)); addFeature(new FeatureOne(channelName)); addFeature(new CurrentTime(channelName)); addFeature(new HighLowGame(channelName)); diff --git a/src/main/java/org/jointheleague/features/GooBotFeatures/Counter.java b/src/main/java/org/jointheleague/features/GooBotFeatures/Counter.java new file mode 100644 index 00000000..e619736f --- /dev/null +++ b/src/main/java/org/jointheleague/features/GooBotFeatures/Counter.java @@ -0,0 +1,78 @@ +package org.jointheleague.features.GooBotFeatures; + +import org.javacord.api.event.message.MessageCreateEvent; +import org.jointheleague.features.abstract_classes.Feature; +import org.jointheleague.features.help_embed.plain_old_java_objects.help_embed.HelpEmbed; + +import java.util.Random; + +public class Counter extends Feature { + + public final String COMMAND = "!counter"; + public int input = -1; + public int counter = 0; + public boolean gameRunning = true; + + public Counter(String channelName) { + super(channelName); + + //Create a help embed to describe feature when !help command is sent + helpEmbed = new HelpEmbed(COMMAND, "Give GooBot a number and play a game where you will " + + "type the first number and then GooBot will do the next, and so on until someone screws up!"); + } + + @Override + public void handle(MessageCreateEvent event) { + String messageContent = event.getMessageContent(); + + if (messageContent.startsWith(COMMAND)) { + + if (!messageContent.equalsIgnoreCase(COMMAND)) { + String num = messageContent.substring(9); + System.out.println(num); + int messageNum = Integer.parseInt(num); + Random ran = new Random(); + int whoStarts = ran.nextInt(2); + System.out.println(whoStarts); + + + } + + + //respond to message here + event.getChannel().sendMessage("Alright! Let's GOO!"); + event.getChannel().sendMessage("You start!"); + while (gameRunning) { + game(event, whoStarts); + } + } else { + event.getChannel().sendMessage("Alright! Let's GOO!"); + event.getChannel().sendMessage("I start!"); + while (gameRunning) { + game(event, whoStarts); + } + } + + + } + + public void game(MessageCreateEvent mce, int starter) { + int counter = 0; + String messageReceived = mce.getMessageContent(); + System.out.println("Content:" + messageReceived); + int actual = Integer.parseInt(messageReceived); + if (actual == counter) { + mce.getChannel().sendMessage("Correct! Lets continue!"); + counter += 1; + mce.getChannel().sendMessage(counter + ""); + } else { + mce.getChannel().sendMessage("Incorrect! Game over!"); + gameRunning = false; + } + + + } +} + + + diff --git a/src/main/java/org/jointheleague/features/GooBotFeatures/Greeting.java b/src/main/java/org/jointheleague/features/GooBotFeatures/Greeting.java new file mode 100644 index 00000000..d596acd7 --- /dev/null +++ b/src/main/java/org/jointheleague/features/GooBotFeatures/Greeting.java @@ -0,0 +1,35 @@ +package org.jointheleague.features.GooBotFeatures; + +import org.javacord.api.event.message.MessageCreateEvent; +import org.jointheleague.features.abstract_classes.Feature; +import org.jointheleague.features.help_embed.plain_old_java_objects.help_embed.HelpEmbed; + +import java.util.ArrayList; +import java.util.Random; + +public class Greeting extends Feature { + + public final String COMMAND = "!greeting"; + + public Greeting(String channelName) { + super(channelName); + + //Create a help embed to describe feature when !help command is sent + helpEmbed = new HelpEmbed(COMMAND, "Says hello in a kind, thoughtful way"); + } + + @Override + public void handle(MessageCreateEvent event) { + String messageContent = event.getMessageContent(); + Random ran = new Random(); + ArrayList responses = new ArrayList(); + responses.add("Good day to you! I’m GooBot."); + responses.add("Pleased to meet you. My name is GooBot"); + responses.add("How are you? I hope you are doing well. I'm GoodBot by the way"); + if (messageContent.startsWith(COMMAND)) { + //respond to message here + event.getChannel().sendMessage(responses.get(ran.nextInt(3))); + } + } + +} diff --git a/src/main/java/org/jointheleague/features/templates/FeatureTemplate.java b/src/main/java/org/jointheleague/features/templates/FeatureTemplate.java index f141564d..5792e955 100644 --- a/src/main/java/org/jointheleague/features/templates/FeatureTemplate.java +++ b/src/main/java/org/jointheleague/features/templates/FeatureTemplate.java @@ -12,10 +12,7 @@ public FeatureTemplate(String channelName) { super(channelName); //Create a help embed to describe feature when !help command is sent - helpEmbed = new HelpEmbed( - COMMAND, - "Give a brief description of your feature here, including how the user interacts with it" - ); + helpEmbed = new HelpEmbed(COMMAND, ""); } @Override @@ -23,7 +20,7 @@ public void handle(MessageCreateEvent event) { String messageContent = event.getMessageContent(); if (messageContent.startsWith(COMMAND)) { //respond to message here - event.getChannel().sendMessage("Sending a message to the channel"); + event.getChannel().sendMessage(""); } } diff --git a/src/test/java/org/jointheleague/features/student/first_feature/GreetingTest.java b/src/test/java/org/jointheleague/features/student/first_feature/GreetingTest.java new file mode 100644 index 00000000..b75e7ff5 --- /dev/null +++ b/src/test/java/org/jointheleague/features/student/first_feature/GreetingTest.java @@ -0,0 +1,120 @@ +package org.jointheleague.features.student.first_feature; + +import org.javacord.api.entity.channel.TextChannel; +import org.javacord.api.event.message.MessageCreateEvent; +import org.jointheleague.features.abstract_classes.Feature; +import org.jointheleague.features.GooBotFeatures.Greeting; +import org.jointheleague.features.help_embed.plain_old_java_objects.help_embed.HelpEmbed; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.*; + +public class GreetingTest { + private final String testChannelName = "Greeting"; + private final Greeting greeting = new Greeting(testChannelName); + + private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); + private final PrintStream originalOut = System.out; + + @Mock + private MessageCreateEvent messageCreateEvent; + + @Mock + private TextChannel textChannel; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + System.setOut(new PrintStream(outContent)); + } + + @AfterEach + public void itShouldNotPrintToSystemOut() { + String expected = ""; + String actual = outContent.toString(); + + assertEquals(expected, actual); + System.setOut(originalOut); + } + + @Test + void itShouldHaveACommand() { + //Given + + //When + String command = greeting.COMMAND; + + //Then + if (!(greeting instanceof Feature)) { + assertNotEquals("!command", command); + } + + assertNotEquals("", command); + assertNotEquals("!", command); + assertNotEquals("!command", command); + assertEquals('!', command.charAt(0)); + assertNotNull(command); + } + + @Test + void itShouldHandleMessagesWithCommand() { + //Given + HelpEmbed helpEmbed = new HelpEmbed(greeting.COMMAND, "test"); + when(messageCreateEvent.getMessageContent()).thenReturn(greeting.COMMAND); + when(messageCreateEvent.getChannel()).thenReturn((textChannel)); + + //When + greeting.handle(messageCreateEvent); + + //Then + verify(textChannel, times(1)).sendMessage(anyString()); + } + + @Test + void itShouldNotHandleMessagesWithoutCommand() { + //Given + String command = ""; + when(messageCreateEvent.getMessageContent()).thenReturn(command); + + //When + greeting.handle(messageCreateEvent); + + //Then + verify(textChannel, never()).sendMessage(""); + } + + @Test + void itShouldHaveAHelpEmbed() { + //Given + + //When + HelpEmbed actualHelpEmbed = greeting.getHelpEmbed(); + + //Then + assertNotNull(actualHelpEmbed); + } + + @Test + void itShouldHaveTheCommandAsTheTitleOfTheHelpEmbed() { + //Given + + //When + String helpEmbedTitle = greeting.getHelpEmbed().getTitle(); + String command = greeting.COMMAND; + + //Then + assertEquals(command, helpEmbedTitle); + } + +} From c6473da9a1998d7fc51eba38c3a044232c98bb06 Mon Sep 17 00:00:00 2001 From: zhaoyd5268 Date: Sun, 26 May 2024 12:52:24 -0700 Subject: [PATCH 2/9] Finish unit tests for second feature --- .gradle/7.3.3/checksums/checksums.lock | Bin 0 -> 17 bytes .../dependencies-accessors.lock | Bin 0 -> 17 bytes .../dependencies-accessors/gc.properties | 0 .../executionHistory/executionHistory.bin | Bin 0 -> 199174 bytes .../executionHistory/executionHistory.lock | Bin 0 -> 17 bytes .gradle/7.3.3/fileChanges/last-build.bin | Bin 0 -> 1 bytes .gradle/7.3.3/fileHashes/fileHashes.bin | Bin 0 -> 22047 bytes .gradle/7.3.3/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .../7.3.3/fileHashes/resourceHashesCache.bin | Bin 0 -> 20537 bytes .gradle/7.3.3/gc.properties | 0 .../buildOutputCleanup.lock | Bin 0 -> 17 bytes .gradle/buildOutputCleanup/cache.properties | 2 + .gradle/buildOutputCleanup/outputFiles.bin | Bin 0 -> 19091 bytes .gradle/file-system.probe | Bin 0 -> 8 bytes .gradle/vcs-1/gc.properties | 0 ...e.features.GooBotTests.CalculatorTest.html | 121 +++++++++++ build/reports/tests/test/css/base-style.css | 179 ++++++++++++++++ build/reports/tests/test/css/style.css | 84 ++++++++ build/reports/tests/test/index.html | 133 ++++++++++++ build/reports/tests/test/js/report.js | 194 ++++++++++++++++++ ...rg.jointheleague.features.GooBotTests.html | 103 ++++++++++ build/test-results/test/binary/output.bin | 0 build/test-results/test/binary/output.bin.idx | Bin 0 -> 1 bytes build/test-results/test/binary/results.bin | Bin 0 -> 544 bytes .../compileJava/previous-compilation-data.bin | Bin 0 -> 40395 bytes .../jointheleague/discord_bot/DiscordBot.java | 4 +- .../features/GooBotFeatures/Calculator.java | 76 +++++++ .../features/GooBotFeatures/Counter.java | 78 ------- .../features/GooBotTests/CalculatorTest.java | 127 ++++++++++++ .../GreetingTest.java | 2 +- 30 files changed, 1022 insertions(+), 81 deletions(-) create mode 100644 .gradle/7.3.3/checksums/checksums.lock create mode 100644 .gradle/7.3.3/dependencies-accessors/dependencies-accessors.lock create mode 100644 .gradle/7.3.3/dependencies-accessors/gc.properties create mode 100644 .gradle/7.3.3/executionHistory/executionHistory.bin create mode 100644 .gradle/7.3.3/executionHistory/executionHistory.lock create mode 100644 .gradle/7.3.3/fileChanges/last-build.bin create mode 100644 .gradle/7.3.3/fileHashes/fileHashes.bin create mode 100644 .gradle/7.3.3/fileHashes/fileHashes.lock create mode 100644 .gradle/7.3.3/fileHashes/resourceHashesCache.bin create mode 100644 .gradle/7.3.3/gc.properties create mode 100644 .gradle/buildOutputCleanup/buildOutputCleanup.lock create mode 100644 .gradle/buildOutputCleanup/cache.properties create mode 100644 .gradle/buildOutputCleanup/outputFiles.bin create mode 100644 .gradle/file-system.probe create mode 100644 .gradle/vcs-1/gc.properties create mode 100644 build/reports/tests/test/classes/org.jointheleague.features.GooBotTests.CalculatorTest.html create mode 100644 build/reports/tests/test/css/base-style.css create mode 100644 build/reports/tests/test/css/style.css create mode 100644 build/reports/tests/test/index.html create mode 100644 build/reports/tests/test/js/report.js create mode 100644 build/reports/tests/test/packages/org.jointheleague.features.GooBotTests.html create mode 100644 build/test-results/test/binary/output.bin create mode 100644 build/test-results/test/binary/output.bin.idx create mode 100644 build/test-results/test/binary/results.bin create mode 100644 build/tmp/compileJava/previous-compilation-data.bin create mode 100644 src/main/java/org/jointheleague/features/GooBotFeatures/Calculator.java delete mode 100644 src/main/java/org/jointheleague/features/GooBotFeatures/Counter.java create mode 100644 src/test/java/org/jointheleague/features/GooBotTests/CalculatorTest.java rename src/test/java/org/jointheleague/features/{student/first_feature => GooBotTests}/GreetingTest.java (98%) diff --git a/.gradle/7.3.3/checksums/checksums.lock b/.gradle/7.3.3/checksums/checksums.lock new file mode 100644 index 0000000000000000000000000000000000000000..68f7ab5fbb4c7c3eaaae9521882ecbc678f4afb0 GIT binary patch literal 17 ScmZSPTlvMuEh58@0SW*r9Rp7Q literal 0 HcmV?d00001 diff --git a/.gradle/7.3.3/dependencies-accessors/dependencies-accessors.lock b/.gradle/7.3.3/dependencies-accessors/dependencies-accessors.lock new file mode 100644 index 0000000000000000000000000000000000000000..59ac938b8a25a80df3b07bfa2554b36a954c68c3 GIT binary patch literal 17 TcmZR6!?mYXw0>zl0~7!NG5rJc literal 0 HcmV?d00001 diff --git a/.gradle/7.3.3/dependencies-accessors/gc.properties b/.gradle/7.3.3/dependencies-accessors/gc.properties new file mode 100644 index 00000000..e69de29b diff --git a/.gradle/7.3.3/executionHistory/executionHistory.bin b/.gradle/7.3.3/executionHistory/executionHistory.bin new file mode 100644 index 0000000000000000000000000000000000000000..b22b218600dc994df436a9a72403e3a4493eb712 GIT binary patch literal 199174 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

xQla{0W1umJIHe7sU!LoTG2(S|^V@QU!3Vbwi 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 literal 0 HcmV?d00001 diff --git a/.gradle/7.3.3/fileChanges/last-build.bin b/.gradle/7.3.3/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/.gradle/7.3.3/fileHashes/fileHashes.bin b/.gradle/7.3.3/fileHashes/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..d9325b7083cb8d4759243d4a314f193bca5bef94 GIT binary patch literal 22047 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 literal 0 HcmV?d00001 diff --git a/.gradle/7.3.3/fileHashes/resourceHashesCache.bin b/.gradle/7.3.3/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000000000000000000000000000000000000..9c62041e1122862f37e8733701dc07cf30fb1cb2 GIT binary patch literal 20537 zcmeI(`#aQW1IO_hk|bqT7PW+ROd+YZNvV|@Gsf6K(j>!}obyOCXj3+cw4o_y>wIV` z8AO!oc_>NC7TVB(N~lR~tuZ>t(_G*0ZLi1eFLq*@FcU1cK$fuMceE#KcW<=_`2Hx2dt<{|E8ft&{!ECKi~}YNkAj81j^C zdLQ>wz!OXotG3BIKEvEuW6C36*=Lol#?PUj1fKNgxo3$L|BA-;jF2gR-tlheub4}i zI~4#=4L$k|*@l~lIrY|*zq@;R*TAtknA08r&lXzHg4A+#F=uoF&neg{bP_xr#?SGd z@){QZvjHanbH^dz`DNy;&hbVr=ClvMOZcrc!6M!^e7_#}Ig@OIit`f;%;{3#7k^Wj z)UbAm$DC0)<>IX5xO?w63IUB|PjNTz1MWA0Kj{k+NQ^Q|abFC)U+ysZ(w-Oz=9D<# z101eF=NPjRbB9a7hqd{{$e>_f+~fVG7(R`BcB>&dDU)lYtw%-gN0980un9Edg$N^kIe*li`Fpg#+AbQFQx?BX6E! z?)VGvwSELG{e>|am^;0ga;aDC6@$IuxUU1g@khD8TPZeYFsCtqZ~4^c?H@b-9N!-T zPDw9g`H8%}@%?h(%sIt-iJIVgXv)A{@1$PVUH8xw+f!do`Tc9#Y)W!5CeW3Ddo-oL zruWAC1Md5bBd>gw#l-hzz`2HN0@m1#+{VvO1-`q9!^FZRtnzUDYwxr27MIC# zc%hP|P}R1oJCHSRpQ1;eNh7>4R1Fhajyss17IukSZR#7~MIWuOn9UU=E9D=G@ya&L zgcrT6cCCawfp2~cXZt*H-3xdT_JDqzq#XR}m{5oCG~9fKGvor#s6OzO^h8D|-sny^ zJi}t6yhdr4NWP)*XP(65Y|0?~EWrjz7Q_mbj^dB^#*Rf)?tmA0N^i3$WQ8-mY}LL_ z>EEgFLcuhps=clLH>)K!gB6)+GgJ=|6poN+lC}Xg^_7k^atwS%)sRTT`n1MzIW{fS z_%U4@USx#CG^d%X*svO}oxHtA=>)uBJFAowP(J9gy*Pr4KGDhWLT{MCR<&mx=g*%N zW_@SBJG_Yf<@*|uhmi5bj~Jj`9e*5Nyo~lY(HtL6wNZbcqpe(80xy=o8EaTdt&Uf% z-)NjUbnXo}MX!8{&%%qV+{&8F!N!Bz?P_0gV}sS<#YL6JR$Jz$ zhOghzf1NmyKf`szzYg6~$!s~~A7j_SJg8X6!N$$d-nmrZIlb$K)^#`Rqh;%9d+Uadh7Yj+E&?p4AZV7VdF%&UhtgXl{=-@V*VepJ5Z)AcGt}! zb)Rh(+~X8gs~GHagBR51ZMk`4od3+EJ8JrvG?P9z34!AF<9h1`9gGz=^wrPUAeT` z5?);I@;eakuD?N)x4!MkM2jxGNK|T6J>92DvzmQ`v@|nrF1)xZsmUgVY%$T{PgG2D*cb^kn{(6Id-{{))_Ps(!54^bRcu=YqdYcyd?aIc2 b6^GdHLeIUqX_j!{W;L@f^ihy>v25{Q3C|4( literal 0 HcmV?d00001 diff --git a/.gradle/7.3.3/gc.properties b/.gradle/7.3.3/gc.properties new file mode 100644 index 00000000..e69de29b diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000000000000000000000000000000000000..b8b7b3ff98bf5b59a5b840ac0a9307c5b0e64f5d GIT binary patch literal 17 UcmZR6b-0I(m;3tx1_&qt05moPh5!Hn literal 0 HcmV?d00001 diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 00000000..a1ebabf9 --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Sat May 11 16:26:17 PDT 2024 +gradle.version=7.3.3 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000000000000000000000000000000000000..756249325cf52c2d7d8d53cbea6ca9ae9a9a3106 GIT binary patch literal 19091 zcmeI%T}V@L7{~GB%!b>vAyYSZ(~Gd)48?AQRHDhwrp$}E$f#g26csB+$3q; z6%~sJ6hc@*QL!AO2#JPUbWATI#A+2u+Pes0*jeZQOky`82ok>o+YaCJ?BSfxE@$L8 zt$L9i+|p6Fbc!0z`x zWvP=5JselA5>GbyXNm@L&R;(xUFL)I|G@=*@X%OOhga(61offUpIYXU<0J--GryuAc_FpF-;EN)zS&+2Y-7k38KMeUlrzY{OEw)Kga+ zC@EESIU;O-4|TPte!=}@-*Yx!mF|Isrmv&7f^7c~^@6M8&m6ICIqN&97YUocT#Ro$ z#r9-V*S3x3bwrbKsq=HxOYZmS%zN(9^V+EEi}ke!A2@%p{okmUDdU%21s@04o_^|; zZ;htDEF;h6Pf~Aq6}>yBtN1K+i-)>(i)^O1_vkS;ucL0$sIN4ocUY+0Dv&N!vFvP literal 0 HcmV?d00001 diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe new file mode 100644 index 0000000000000000000000000000000000000000..d9d830bbf8ec5c7f139d30a06b65f537fb54654c GIT binary patch literal 8 PcmZQzVC>(Pt5gC22e1N4 literal 0 HcmV?d00001 diff --git a/.gradle/vcs-1/gc.properties b/.gradle/vcs-1/gc.properties new file mode 100644 index 00000000..e69de29b diff --git a/build/reports/tests/test/classes/org.jointheleague.features.GooBotTests.CalculatorTest.html b/build/reports/tests/test/classes/org.jointheleague.features.GooBotTests.CalculatorTest.html new file mode 100644 index 00000000..2ecb6655 --- /dev/null +++ b/build/reports/tests/test/classes/org.jointheleague.features.GooBotTests.CalculatorTest.html @@ -0,0 +1,121 @@ + + + + + +Test results - CalculatorTest + + + + + +

+

CalculatorTest

+ +
+ + + + + +
+
+ + + + + + + +
+
+
6
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.411s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Tests

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TestDurationResult
itShouldHandleMessagesWithCommand()0.002spassed
itShouldHaveACommand()0.399spassed
itShouldHaveAHelpEmbed()0.001spassed
itShouldHaveTheCommandAsTheTitleOfTheHelpEmbed()0.001spassed
itShouldNotHandleMessagesWithoutCommand()0.008spassed
itShouldPickACase()0spassed
+
+
+ +
+ + diff --git a/build/reports/tests/test/css/base-style.css b/build/reports/tests/test/css/base-style.css new file mode 100644 index 00000000..4afa73e3 --- /dev/null +++ b/build/reports/tests/test/css/base-style.css @@ -0,0 +1,179 @@ + +body { + margin: 0; + padding: 0; + font-family: sans-serif; + font-size: 12pt; +} + +body, a, a:visited { + color: #303030; +} + +#content { + padding-left: 50px; + padding-right: 50px; + padding-top: 30px; + padding-bottom: 30px; +} + +#content h1 { + font-size: 160%; + margin-bottom: 10px; +} + +#footer { + margin-top: 100px; + font-size: 80%; + white-space: nowrap; +} + +#footer, #footer a { + color: #a0a0a0; +} + +#line-wrapping-toggle { + vertical-align: middle; +} + +#label-for-line-wrapping-toggle { + vertical-align: middle; +} + +ul { + margin-left: 0; +} + +h1, h2, h3 { + white-space: nowrap; +} + +h2 { + font-size: 120%; +} + +ul.tabLinks { + padding-left: 0; + padding-top: 10px; + padding-bottom: 10px; + overflow: auto; + min-width: 800px; + width: auto !important; + width: 800px; +} + +ul.tabLinks li { + float: left; + height: 100%; + list-style: none; + padding-left: 10px; + padding-right: 10px; + padding-top: 5px; + padding-bottom: 5px; + margin-bottom: 0; + -moz-border-radius: 7px; + border-radius: 7px; + margin-right: 25px; + border: solid 1px #d4d4d4; + background-color: #f0f0f0; +} + +ul.tabLinks li:hover { + background-color: #fafafa; +} + +ul.tabLinks li.selected { + background-color: #c5f0f5; + border-color: #c5f0f5; +} + +ul.tabLinks a { + font-size: 120%; + display: block; + outline: none; + text-decoration: none; + margin: 0; + padding: 0; +} + +ul.tabLinks li h2 { + margin: 0; + padding: 0; +} + +div.tab { +} + +div.selected { + display: block; +} + +div.deselected { + display: none; +} + +div.tab table { + min-width: 350px; + width: auto !important; + width: 350px; + border-collapse: collapse; +} + +div.tab th, div.tab table { + border-bottom: solid #d0d0d0 1px; +} + +div.tab th { + text-align: left; + white-space: nowrap; + padding-left: 6em; +} + +div.tab th:first-child { + padding-left: 0; +} + +div.tab td { + white-space: nowrap; + padding-left: 6em; + padding-top: 5px; + padding-bottom: 5px; +} + +div.tab td:first-child { + padding-left: 0; +} + +div.tab td.numeric, div.tab th.numeric { + text-align: right; +} + +span.code { + display: inline-block; + margin-top: 0em; + margin-bottom: 1em; +} + +span.code pre { + font-size: 11pt; + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + padding-right: 10px; + margin: 0; + background-color: #f7f7f7; + border: solid 1px #d0d0d0; + min-width: 700px; + width: auto !important; + width: 700px; +} + +span.wrapped pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: break-all; +} + +label.hidden { + display: none; +} \ No newline at end of file diff --git a/build/reports/tests/test/css/style.css b/build/reports/tests/test/css/style.css new file mode 100644 index 00000000..3dc4913e --- /dev/null +++ b/build/reports/tests/test/css/style.css @@ -0,0 +1,84 @@ + +#summary { + margin-top: 30px; + margin-bottom: 40px; +} + +#summary table { + border-collapse: collapse; +} + +#summary td { + vertical-align: top; +} + +.breadcrumbs, .breadcrumbs a { + color: #606060; +} + +.infoBox { + width: 110px; + padding-top: 15px; + padding-bottom: 15px; + text-align: center; +} + +.infoBox p { + margin: 0; +} + +.counter, .percent { + font-size: 120%; + font-weight: bold; + margin-bottom: 8px; +} + +#duration { + width: 125px; +} + +#successRate, .summaryGroup { + border: solid 2px #d0d0d0; + -moz-border-radius: 10px; + border-radius: 10px; +} + +#successRate { + width: 140px; + margin-left: 35px; +} + +#successRate .percent { + font-size: 180%; +} + +.success, .success a { + color: #008000; +} + +div.success, #successRate.success { + background-color: #bbd9bb; + border-color: #008000; +} + +.failures, .failures a { + color: #b60808; +} + +.skipped, .skipped a { + color: #c09853; +} + +div.failures, #successRate.failures { + background-color: #ecdada; + border-color: #b60808; +} + +ul.linkList { + padding-left: 0; +} + +ul.linkList li { + list-style: none; + margin-bottom: 5px; +} diff --git a/build/reports/tests/test/index.html b/build/reports/tests/test/index.html new file mode 100644 index 00000000..5b681917 --- /dev/null +++ b/build/reports/tests/test/index.html @@ -0,0 +1,133 @@ + + + + + +Test results - Test Summary + + + + + +
+

Test Summary

+
+ + + + + +
+
+ + + + + + + +
+
+
6
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.411s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Packages

+ + + + + + + + + + + + + + + + + + + + + +
PackageTestsFailuresIgnoredDurationSuccess rate
+org.jointheleague.features.GooBotTests +6000.411s100%
+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+org.jointheleague.features.GooBotTests.CalculatorTest +6000.411s100%
+
+
+ +
+ + diff --git a/build/reports/tests/test/js/report.js b/build/reports/tests/test/js/report.js new file mode 100644 index 00000000..83bab4a1 --- /dev/null +++ b/build/reports/tests/test/js/report.js @@ -0,0 +1,194 @@ +(function (window, document) { + "use strict"; + + var tabs = {}; + + function changeElementClass(element, classValue) { + if (element.getAttribute("className")) { + element.setAttribute("className", classValue); + } else { + element.setAttribute("class", classValue); + } + } + + function getClassAttribute(element) { + if (element.getAttribute("className")) { + return element.getAttribute("className"); + } else { + return element.getAttribute("class"); + } + } + + function addClass(element, classValue) { + changeElementClass(element, getClassAttribute(element) + " " + classValue); + } + + function removeClass(element, classValue) { + changeElementClass(element, getClassAttribute(element).replace(classValue, "")); + } + + function initTabs() { + var container = document.getElementById("tabs"); + + tabs.tabs = findTabs(container); + tabs.titles = findTitles(tabs.tabs); + tabs.headers = findHeaders(container); + tabs.select = select; + tabs.deselectAll = deselectAll; + tabs.select(0); + + return true; + } + + function getCheckBox() { + return document.getElementById("line-wrapping-toggle"); + } + + function getLabelForCheckBox() { + return document.getElementById("label-for-line-wrapping-toggle"); + } + + function findCodeBlocks() { + var spans = document.getElementById("tabs").getElementsByTagName("span"); + var codeBlocks = []; + for (var i = 0; i < spans.length; ++i) { + if (spans[i].className.indexOf("code") >= 0) { + codeBlocks.push(spans[i]); + } + } + return codeBlocks; + } + + function forAllCodeBlocks(operation) { + var codeBlocks = findCodeBlocks(); + + for (var i = 0; i < codeBlocks.length; ++i) { + operation(codeBlocks[i], "wrapped"); + } + } + + function toggleLineWrapping() { + var checkBox = getCheckBox(); + + if (checkBox.checked) { + forAllCodeBlocks(addClass); + } else { + forAllCodeBlocks(removeClass); + } + } + + function initControls() { + if (findCodeBlocks().length > 0) { + var checkBox = getCheckBox(); + var label = getLabelForCheckBox(); + + checkBox.onclick = toggleLineWrapping; + checkBox.checked = false; + + removeClass(label, "hidden"); + } + } + + function switchTab() { + var id = this.id.substr(1); + + for (var i = 0; i < tabs.tabs.length; i++) { + if (tabs.tabs[i].id === id) { + tabs.select(i); + break; + } + } + + return false; + } + + function select(i) { + this.deselectAll(); + + changeElementClass(this.tabs[i], "tab selected"); + changeElementClass(this.headers[i], "selected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var h2 = document.createElement("H2"); + + h2.appendChild(document.createTextNode(this.titles[i])); + this.headers[i].appendChild(h2); + } + + function deselectAll() { + for (var i = 0; i < this.tabs.length; i++) { + changeElementClass(this.tabs[i], "tab deselected"); + changeElementClass(this.headers[i], "deselected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var a = document.createElement("A"); + + a.setAttribute("id", "ltab" + i); + a.setAttribute("href", "#tab" + i); + a.onclick = switchTab; + a.appendChild(document.createTextNode(this.titles[i])); + + this.headers[i].appendChild(a); + } + } + + function findTabs(container) { + return findChildElements(container, "DIV", "tab"); + } + + function findHeaders(container) { + var owner = findChildElements(container, "UL", "tabLinks"); + return findChildElements(owner[0], "LI", null); + } + + function findTitles(tabs) { + var titles = []; + + for (var i = 0; i < tabs.length; i++) { + var tab = tabs[i]; + var header = findChildElements(tab, "H2", null)[0]; + + header.parentNode.removeChild(header); + + if (header.innerText) { + titles.push(header.innerText); + } else { + titles.push(header.textContent); + } + } + + return titles; + } + + function findChildElements(container, name, targetClass) { + var elements = []; + var children = container.childNodes; + + for (var i = 0; i < children.length; i++) { + var child = children.item(i); + + if (child.nodeType === 1 && child.nodeName === name) { + if (targetClass && child.className.indexOf(targetClass) < 0) { + continue; + } + + elements.push(child); + } + } + + return elements; + } + + // Entry point. + + window.onload = function() { + initTabs(); + initControls(); + }; +} (window, window.document)); \ No newline at end of file diff --git a/build/reports/tests/test/packages/org.jointheleague.features.GooBotTests.html b/build/reports/tests/test/packages/org.jointheleague.features.GooBotTests.html new file mode 100644 index 00000000..e16b0398 --- /dev/null +++ b/build/reports/tests/test/packages/org.jointheleague.features.GooBotTests.html @@ -0,0 +1,103 @@ + + + + + +Test results - Package org.jointheleague.features.GooBotTests + + + + + +
+

Package org.jointheleague.features.GooBotTests

+ +
+ + + + + +
+
+ + + + + + + +
+
+
6
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.411s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Classes

+ + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+CalculatorTest +6000.411s100%
+
+
+ +
+ + diff --git a/build/test-results/test/binary/output.bin b/build/test-results/test/binary/output.bin new file mode 100644 index 00000000..e69de29b diff --git a/build/test-results/test/binary/output.bin.idx b/build/test-results/test/binary/output.bin.idx new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin new file mode 100644 index 0000000000000000000000000000000000000000..b996c811891445bbe744ff0fb1a06837ec67336e GIT binary patch literal 544 zcmb7>J8r^25QfK?5Kh9QaS%6fEQA}9NU@Z9fx%u_Gsrt8;uLNoq4ZRAX*gfj!Zrbc zM7EmO_s{%V+o~NX37t8~B}b@Ggef{R6r3igogvXPae$h&;|VoMm0(KpJUdSTtn9#_ z+lIB3{2o!NroLFC>rotw<+RhiQHIPuqMH`j-)E?gYBh+*XyBU-unM{j^?gad5c_7Q z!VzjMLew9U%|%?@a{nYW3;ic}_$l>sV?l(4oU2V7NLKhdGtr-`{|!`bdeGRNwq07O heB3hwwZcIk9=}S>H#u3jp3vCoUaNt5`FC#m@C!D}!^{8x literal 0 HcmV?d00001 diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin new file mode 100644 index 0000000000000000000000000000000000000000..9ba8660a67d8002e014c50184e6c5115256db1cd GIT binary patch literal 40395 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�Ne!M$!xI~Zyd1C0rMgABDa#1v-bG?XC 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 Date: Sat, 1 Jun 2024 11:27:41 -0700 Subject: [PATCH 3/9] Finalize unit tests for second feature --- .../executionHistory/executionHistory.bin | Bin 199174 -> 285745 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/7.3.3/fileHashes/fileHashes.bin | Bin 22047 -> 22047 bytes .gradle/7.3.3/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../7.3.3/fileHashes/resourceHashesCache.bin | Bin 20537 -> 22067 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/file-system.probe | Bin 8 -> 8 bytes ...e.features.GooBotTests.CalculatorTest.html | 693 +++++++++++++++++- build/reports/tests/test/index.html | 66 +- ...rg.jointheleague.features.GooBotTests.html | 54 +- build/test-results/test/binary/results.bin | Bin 544 -> 61973 bytes .../compileJava/previous-compilation-data.bin | Bin 40395 -> 40395 bytes .../previous-compilation-data.bin | Bin 0 -> 43846 bytes .../features/GooBotFeatures/Calculator.java | 75 +- .../features/GooBotTests/CalculatorTest.java | 100 ++- 15 files changed, 889 insertions(+), 99 deletions(-) create mode 100644 build/tmp/compileTestJava/previous-compilation-data.bin diff --git a/.gradle/7.3.3/executionHistory/executionHistory.bin b/.gradle/7.3.3/executionHistory/executionHistory.bin index b22b218600dc994df436a9a72403e3a4493eb712..f670752770f983c5f1a626d2c139c63fa2561db7 100644 GIT binary patch delta 2983 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 literal 17 UcmZQRt>9AB{N8^j0|XcV05XOIPXGV_ diff --git a/.gradle/7.3.3/fileHashes/fileHashes.bin b/.gradle/7.3.3/fileHashes/fileHashes.bin index d9325b7083cb8d4759243d4a314f193bca5bef94..ac49624b31b84110a3bf5fa58222717ddafa3b47 100644 GIT binary patch delta 568 zcmbQghH?HH#trQLELYyG{V|!_-$#P?^?^3Mj}uz2KgwCvG&l4!0|R6Km3JH3C+GXu z1+B8En|N7tr`XMyWk($hayTK9Ykx3+0hbPt(lZ7Unn0`w!U7HlrcQ|DijGiDZRgs& zZf+c^4xYlv_5o!Id#;GKojkWHcUO7*B)+wE??H;L@^1G4ng9f1yqm8Ev@k-P7#k#| z5N_VtCuo1|ThsU6Zj%cq%21U{WK5nOqy|xaFh~!=_zYvH217-{VT?`~V>gWPHdrc1 zc$?uz4)Hy8ljID-b&lRT3bA9?eu$G+y8&r5pWe=pyXL^^%KLU<>N7Q__L~qLyA2>Z zK8a3_3{hjb%DdZOa&w5D9m0EHc{H<{G+wOCo$Pe<)SP*(oo^pKMKw!+XY%`yG6hXD zj*@=fIXScLe9d2TX?Yi_qA&9&w}!fe^)Kg@o7y`^LMBl0_M6i|S5X!5oyYXYKJGt3 YlE)UiTCbULXaASiQg;siOBC5~ zifJ>%IOP*SNg&{joopXarZAV~SycUl8{4DV-zP|DD)E68l@vVyt6|{Xu=#303nR-m zpvdIdASs2)!*3*7{on4*z2zU~=C$xQs&c`E$AgT`r=|LEuVGPw^s7N@B(FtSh zhB4j-O9jp3uX0+iw@={0vb24o7uLUk*imvF;-uB`KpM@b%Z;Wo%C2)>di%&PCdX=7 z4~UL3s85*`CP#*VTvc{ra&w5D9mq2fv%n;pStleC>J1irGZsH`*wj>&X(g&zoHHlC z4=EE^J3Y8=+XtIknME8&`_)#mP8JMRnmj$!DD1>k(<$6{>V;Z7_t-cdot=oPo5Kpz c?fDTJKOzmH;&WAcrU>p`_6Ai4OBqN90OGE-HUIzs diff --git a/.gradle/7.3.3/fileHashes/fileHashes.lock b/.gradle/7.3.3/fileHashes/fileHashes.lock index 3e05a345fac2bb1ec918c719d53a687b6e4f8815..71b1d0560839a6a581083f905371d705ae90ef86 100644 GIT binary patch literal 17 UcmZR+`?rUUuTwgP0SuU105CiR1poj5 literal 17 UcmZR+`?rUUuTwgP0Rnyl05Gitc>n+a diff --git a/.gradle/7.3.3/fileHashes/resourceHashesCache.bin b/.gradle/7.3.3/fileHashes/resourceHashesCache.bin index 9c62041e1122862f37e8733701dc07cf30fb1cb2..d6788e938d27e1acde93a8d32142cf125f2f2f9d 100644 GIT binary patch delta 2566 zcmZvd3p7-D9LEVs&T>VK!L*~HnWSwZ%V=dH4Lt`lo|%NU2kGHaOpI5oGNJ!^G(Fhu zUF3Z{%X>>0tVfwLNFr@($82q4Yfbmwb#mQv?z!iD?&tsgKko1T|K-{8MLF{M>$UL* zV@$(RVtJlixi1&9_A_z;GwoXtFkJtaYUU$*_@$#i=+?HNXT&#gt(tjbFl3LTEi(7J zfAk@L$3i#><$?)@^3?)W8zh7el<-lM8y@Ywo#{m+L{3EI+wGel_q%0$M7TVNz!Rau zQG=wX;=p<&K?$Vcne?*ls&5rLPFz7C8BHi-(_?Ne@^C{E>`-2Q-8(0Md~E{etoxvE zCb>GqxY=H0k^)2LgWw&WNNJ4Cl(aW-)L`hMfhIgUNh-4r`Q!j|CocF#hv+8U6T+bl zsqaQ&%}}|s(x~5nN$0s~_dh{qwIBmb<=yxnl>)`!cMYoGZ^D(`3?sl};ukxusa@ zU#PhkmYu3WtBwUleyd_|=~$Zz(xU>Ju$Wgv^PISrhscBAUmbmQ;nTwup&kWcm%&n9 zBBXN&uO|3x&VZq#16VTy4a2ipYD#foFl2=RJ6#Kia>6vndklI4LuLdBnK6y%FRNl$ zhP{ZX3HZ89$g<&lFmI}^2Qi00w=R=nFWqoz;!r3DhEDG2NOy!oEcd%ARWN6_0)ifs z?vivYI@eEb5QfeSRCej9Q66s7=Of$@PsZ(WaQM_E9&{`qvdco4S*ZPf9neja+VWY>c_PD<=B)(HEy|JXjuht1|b zW!4TC)iUK~`kymjuCalF*Y7Wa%(c5oJw^+nu^~yDue+|=dp%z;k<9mZHjoweoQw;W zwy`$}{FPeA)Q>c@sKj86VxwF(h#rXNB?$-f+fy#R!zx~4lOugmQe55gms(URbQx?4c4AuR)Dp%#Qo_??%)_7(bY#AN8(NJ;wK)BqK#sQ3B3N^N`qyk~$ zmhvFSLaY&ZGDyl7yNzmBMB=t_bQm73FMB6@@*yQEOPBLVr|F0Y0qV!~o z1Qvt6c3Et4#!11fg4PW!Q2TGlOR9Nr;&dR(4u5nWBTm6J_^8<{&uXpKoN5LEYs5y; zCtnnGja}OtFTZhJ@%?$~Ch|&;x!R}ZY1-1T11*hRvZHuTRrC*Y8|s5;YrnrCqNgo# zb;cTLStjoX)ae}$Y+Ok67=|X+*oHfQA)z%C;(2FT;T$SN0a#`1pT@^ii#^%K56)Z# z-e=RXhU7xive$g-bVnw6!+u}k2CQ-Wjv&PJaEa=g7`@f841#Rq{dzJyNH{qn%4*>6 zEQ2ly)!EV-i~{WpYZ7~C`iZB`T)p$m%;z4~P|~9E?=fon7!-PK-@A1=SR=1QspgW0 zQ@+b@tU6&!x@;5nV1%@vOYD%J}Y%8u2q#|pj4@^)!EhpTAcm9KvF z=G)Wr7z4QKQwdR0?;W2qv`R+}u?8WWthj&`7Ezk8W?iv&IC-AGzUr6fF&PflI{I$P NOE0!g%MShJ{{bWKLwf)K delta 134 zcmdnIhH>Wt#tkMCj5d>fC00!4l{A>#Dp@gES4v`Xtdz&(w?JA}T4Hi45Z?vjP?-sn z|H>Flj+K?1+$SqOd9SR*=<$Oc0LXbW?f?J) diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index b8b7b3ff98bf5b59a5b840ac0a9307c5b0e64f5d..4c2088fc5faaac28c65a0b60eab82f49bcb9060b 100644 GIT binary patch literal 17 VcmZR6b-0I(m;3tx1~6d!4gfT}1quKF literal 17 UcmZR6b-0I(m;3tx1_&qt05moPh5!Hn diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index d9d830bbf8ec5c7f139d30a06b65f537fb54654c..c10e78ae7aff583b7f0e4d1396aa9a15953c54fe 100644 GIT binary patch literal 8 PcmZQzVC=uL@6aLu3W)=U literal 8 PcmZQzVC>(Pt5gC22e1N4 diff --git a/build/reports/tests/test/classes/org.jointheleague.features.GooBotTests.CalculatorTest.html b/build/reports/tests/test/classes/org.jointheleague.features.GooBotTests.CalculatorTest.html index 2ecb6655..a19ceb34 100644 --- a/build/reports/tests/test/classes/org.jointheleague.features.GooBotTests.CalculatorTest.html +++ b/build/reports/tests/test/classes/org.jointheleague.features.GooBotTests.CalculatorTest.html @@ -23,13 +23,13 @@

CalculatorTest

-
6
+
11

tests

-
0
+
6

failures

@@ -41,7 +41,7 @@

CalculatorTest

-
0.411s
+
0.357s

duration

@@ -50,8 +50,8 @@

CalculatorTest

-
-
100%
+
+
45%

successful

@@ -61,10 +61,640 @@

CalculatorTest

+

Failed tests

+
+ +

itShouldDivide()

+ +
org.mockito.exceptions.misusing.UnfinishedVerificationException: 
+Missing method call for verify(mock) here:
+-> at org.jointheleague.features.GooBotTests.CalculatorTest.itShouldExponentiate(CalculatorTest.java:175)
+
+Example of correct verification:
+    verify(mock).doSomething()
+
+Also, this error might show up because you verify either of: final/private/equals()/hashCode() methods.
+Those methods *cannot* be stubbed/verified.
+Mocking methods declared on non-public parent classes is not supported.
+
+	at org.jointheleague.features.GooBotTests.CalculatorTest.setUp(CalculatorTest.java:48)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:498)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:126)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:76)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
+	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:490)
+	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$19(ClassBasedTestDescriptor.java:475)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$2(TestMethodTestDescriptor.java:167)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$5(TestMethodTestDescriptor.java:195)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:195)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:164)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at java.util.ArrayList.forEach(ArrayList.java:1259)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at java.util.ArrayList.forEach(ArrayList.java:1259)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:498)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at com.sun.proxy.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+
+
+
+
+ +

itShouldHandleMessagesWithCommand()

+ +
java.lang.StringIndexOutOfBoundsException: String index out of range: -13
+	at java.lang.String.substring(String.java:1967)
+	at org.jointheleague.features.GooBotFeatures.Calculator.handle(Calculator.java:33)
+	at org.jointheleague.features.GooBotTests.CalculatorTest.itShouldHandleMessagesWithCommand(CalculatorTest.java:85)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:498)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at java.util.ArrayList.forEach(ArrayList.java:1259)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at java.util.ArrayList.forEach(ArrayList.java:1259)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:498)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at com.sun.proxy.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+
+
+
+
+ +

itShouldHaveACommand()

+ +
org.mockito.exceptions.misusing.UnfinishedVerificationException: 
+Missing method call for verify(mock) here:
+-> at org.jointheleague.features.GooBotTests.CalculatorTest.itShouldUseModulo(CalculatorTest.java:187)
+
+Example of correct verification:
+    verify(mock).doSomething()
+
+Also, this error might show up because you verify either of: final/private/equals()/hashCode() methods.
+Those methods *cannot* be stubbed/verified.
+Mocking methods declared on non-public parent classes is not supported.
+
+	at org.jointheleague.features.GooBotTests.CalculatorTest.setUp(CalculatorTest.java:48)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:498)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:126)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:76)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
+	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:490)
+	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$19(ClassBasedTestDescriptor.java:475)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$2(TestMethodTestDescriptor.java:167)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$5(TestMethodTestDescriptor.java:195)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:195)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:164)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at java.util.ArrayList.forEach(ArrayList.java:1259)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at java.util.ArrayList.forEach(ArrayList.java:1259)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:498)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at com.sun.proxy.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+
+
+
+
+ +

itShouldHaveAHelpEmbed()

+ +
org.mockito.exceptions.misusing.UnfinishedVerificationException: 
+Missing method call for verify(mock) here:
+-> at org.jointheleague.features.GooBotTests.CalculatorTest.itShouldAdd(CalculatorTest.java:142)
+
+Example of correct verification:
+    verify(mock).doSomething()
+
+Also, this error might show up because you verify either of: final/private/equals()/hashCode() methods.
+Those methods *cannot* be stubbed/verified.
+Mocking methods declared on non-public parent classes is not supported.
+
+	at org.jointheleague.features.GooBotTests.CalculatorTest.setUp(CalculatorTest.java:48)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:498)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:126)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:76)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
+	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:490)
+	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$19(ClassBasedTestDescriptor.java:475)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$2(TestMethodTestDescriptor.java:167)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$5(TestMethodTestDescriptor.java:195)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:195)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:164)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at java.util.ArrayList.forEach(ArrayList.java:1259)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at java.util.ArrayList.forEach(ArrayList.java:1259)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:498)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at com.sun.proxy.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+
+
+
+
+ +

itShouldHaveTheCommandAsTheTitleOfTheHelpEmbed()

+ +
org.mockito.exceptions.misusing.UnfinishedVerificationException: 
+Missing method call for verify(mock) here:
+-> at org.jointheleague.features.GooBotTests.CalculatorTest.itShouldSubtract(CalculatorTest.java:153)
+
+Example of correct verification:
+    verify(mock).doSomething()
+
+Also, this error might show up because you verify either of: final/private/equals()/hashCode() methods.
+Those methods *cannot* be stubbed/verified.
+Mocking methods declared on non-public parent classes is not supported.
+
+	at org.jointheleague.features.GooBotTests.CalculatorTest.setUp(CalculatorTest.java:48)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:498)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:126)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:76)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
+	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:490)
+	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$19(ClassBasedTestDescriptor.java:475)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$2(TestMethodTestDescriptor.java:167)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$5(TestMethodTestDescriptor.java:195)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:195)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:164)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at java.util.ArrayList.forEach(ArrayList.java:1259)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at java.util.ArrayList.forEach(ArrayList.java:1259)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:498)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at com.sun.proxy.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+
+
+
+
+ +

itShouldNotHandleMessagesWithoutCommand()

+ +
org.mockito.exceptions.misusing.UnfinishedVerificationException: 
+Missing method call for verify(mock) here:
+-> at org.jointheleague.features.GooBotTests.CalculatorTest.itShouldMultiply(CalculatorTest.java:131)
+
+Example of correct verification:
+    verify(mock).doSomething()
+
+Also, this error might show up because you verify either of: final/private/equals()/hashCode() methods.
+Those methods *cannot* be stubbed/verified.
+Mocking methods declared on non-public parent classes is not supported.
+
+	at org.jointheleague.features.GooBotTests.CalculatorTest.setUp(CalculatorTest.java:48)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:498)
+	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
+	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:126)
+	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:76)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
+	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
+	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
+	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:490)
+	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$19(ClassBasedTestDescriptor.java:475)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$2(TestMethodTestDescriptor.java:167)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$5(TestMethodTestDescriptor.java:195)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:195)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:164)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
+	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at java.util.ArrayList.forEach(ArrayList.java:1259)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at java.util.ArrayList.forEach(ArrayList.java:1259)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
+	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
+	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
+	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
+	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
+	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
+	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
+	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
+	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
+	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+	at java.lang.reflect.Method.invoke(Method.java:498)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
+	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
+	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
+	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
+	at com.sun.proxy.$Proxy2.stop(Unknown Source)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
+	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
+	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
+	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
+	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+
+
+
+
+

Tests

@@ -75,33 +705,58 @@

Tests

- - + + - - - + + + - - + + - + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + - - + +
itShouldHandleMessagesWithCommand()0.002sitShouldAdd()0.001s passed
itShouldHaveACommand()0.399spasseditShouldDivide()0sfailed
itShouldHaveAHelpEmbed()0.001sitShouldExponentiate()0s passed
itShouldHaveTheCommandAsTheTitleOfTheHelpEmbed()itShouldHandleMessagesWithCommand()0.001sfailed
itShouldHaveACommand()0.003sfailed
itShouldHaveAHelpEmbed()0.001sfailed
itShouldHaveTheCommandAsTheTitleOfTheHelpEmbed()0.001sfailed
itShouldMultiply() 0.001s passed
itShouldNotHandleMessagesWithoutCommand()0.008sitShouldNotHandleMessagesWithoutCommand()0.001sfailed
itShouldSubtract()0.001s passed
itShouldPickACase()0sitShouldUseModulo()0.347s passed
@@ -114,7 +769,7 @@

Tests

Generated by -Gradle 7.3.3 at May 26, 2024 12:50:37 PM

+Gradle 7.3.3 at Jun 1, 2024 11:26:38 AM

diff --git a/build/reports/tests/test/index.html b/build/reports/tests/test/index.html index 5b681917..b8d27f11 100644 --- a/build/reports/tests/test/index.html +++ b/build/reports/tests/test/index.html @@ -20,13 +20,13 @@

Test Summary

-
6
+
11

tests

-
0
+
6

failures

@@ -38,7 +38,7 @@

Test Summary

-
0.411s
+
0.357s

duration

@@ -47,8 +47,8 @@

Test Summary

-
-
100%
+
+
45%

successful

@@ -58,13 +58,45 @@

Test Summary

+

Packages

@@ -79,19 +111,19 @@

Packages

- + - - - + +
+ org.jointheleague.features.GooBotTests 11 6 000.411s100%0.357s45%
-
+

Classes

@@ -106,14 +138,14 @@

Classes

- + - - - + +
+ org.jointheleague.features.GooBotTests.CalculatorTest 11 6 000.411s100%0.357s45%
@@ -126,7 +158,7 @@

Classes

Generated by -Gradle 7.3.3 at May 26, 2024 12:50:37 PM

+Gradle 7.3.3 at Jun 1, 2024 11:26:38 AM

diff --git a/build/reports/tests/test/packages/org.jointheleague.features.GooBotTests.html b/build/reports/tests/test/packages/org.jointheleague.features.GooBotTests.html index e16b0398..12956b9a 100644 --- a/build/reports/tests/test/packages/org.jointheleague.features.GooBotTests.html +++ b/build/reports/tests/test/packages/org.jointheleague.features.GooBotTests.html @@ -22,13 +22,13 @@

Package org.jointheleague.features.GooBotTests

-
6
+
11

tests

-
0
+
6

failures

@@ -40,7 +40,7 @@

Package org.jointheleague.features.GooBotTests

-
0.411s
+
0.357s

duration

@@ -49,8 +49,8 @@

Package org.jointheleague.features.GooBotTests

-
-
100%
+
+
45%

successful

@@ -60,10 +60,42 @@

Package org.jointheleague.features.GooBotTests

Generated by -Gradle 7.3.3 at May 26, 2024 12:50:37 PM

+Gradle 7.3.3 at Jun 1, 2024 11:26:38 AM

diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin index b996c811891445bbe744ff0fb1a06837ec67336e..2cb7ecb8f9e0e7e165198a12524e6628b7e6db95 100644 GIT binary patch literal 61973 zcmeHQOK%*<5hm>-%pPMti+!1G|H`6l|ncon^ z2ok{XJtyCC$tf^$PR>5%H{_B4z9c|W{hI07dG2y0nRW>fz@0}|cXf4jb=5ajZ!f>~ zXO^6MFIX6-BN|b1o>6Z|Ntz{;dmk}&pQXNc6UVh z=m86;yQW#iy_M%92F)nWapwb{#4$@hfc71pW@l$KxGQ@Z(!g6e64RXXnL7dXBa+a- zVX+gl_|7Cdi$dR-z_mDa;2!6cJ1_!h(&5=;!je?9^WQITDm6IiN_KA1q_4a?_rl{e zJ)O99i*4)PnrxS6v6s+c1nbOu3JT_u9!Xtr;QN$wmOO^V=!NkmyP)f?dcaXn%>2H7 zy{3J+{C760Ej|Rjeh$5g&uiXNy>eThku7g+s+PqMFCw5?&4^X2dVH?_rQX@o43Ziz zi^J5Lz!n0^aqRh^<%Oos(lGKqQOpC)djQ=yYSt#jB5FAT72ZmOL1dFkbzXL}4Jg zUObc&E-p>Kr?vRzptBDtjky@z^KeXAmL6W23$T@|uDF$3a(siWy#+M>Bpg!z+K;rT zH__VISpcp36hwv|5`UycqJChz-L#BI97^FJXAu=saY2(+BW0IxrIy!zLGe_78C~zs?xOjerd}t# z$?a_Q=4%TzU#!i8SdRCCx-CyC1-1x28_n27Y!fWEe3z2SvQh6;g)fvM(^|W%5Qm6|#SPVcqo{LT_JF}!yh`21_tY%yb!qHAUC_&% zUyG9v4}VRkwa!66CZHKs2YX%p+3gY=t3QGfYTQ#S(fv`JneGc;-EbS8>ZL@o$kR~MYM{s(Hyyv5Y zy%dW30gHse1yV(&GN*3MEy;>qZMrmW=zTb0&qF^J%+7%3h0{3KcDITRl6TSW)TVt{ zlJmVugq0v}EJ6_b(b}0$rk=v7RB-q?;TL8P)&xI+%{t*=(MQ)H(xnI0=r$|H)aw)D zUX)6G)=H&jaJzMb+n8@~f}}?hmVp;X{;gS65rjn!;9l(j<|A37NpbYoNBGyCAG z(^5O8irqCgrJCmNX-h#2N*&G)l7w7833=*)6)tp)TU=2SyRki=oScv`1y)lMJhD{0 zSc!*HrL*LOCYPa4wFz|)MQ;ChWZyO`$Hdv0)x2nGHG(-Q7u!uQl5a@nng@p(VbNws zFF7dbYt#tB=tGS#zo|RB%%Mi;#j`i0ufIzgVa6S<|JKd3vvHWtyw_{z_l(_YvOV&1 zW#a?V!q}eA#H=)Gd#$P4a9dHVIEQnAjYt;z5QhWzdP2QJ*`~6kz*T$Z+N8 zxK<3^)V7fw2fz^rL1r(7 z6Fc`(kZK5Tc`t<5G-ut%r||2UjyDMtLV6LOiP(<_%B^Y#5*#Y>o0O}?0_#J@h&V6b zbvxQrF@QbmH1v8qO=Q4vb$xxkUr%>mT~9rpvPsWgSYDfMew}1tD!n!3=~VQZZb}i| z(RvfZwJb0}3FXREa=T@_^7TaID=i55grxq+iq$?em&`pYRGZ(EoZqyR!$KS0u+(;A z!#au}<>d(@0ZsDW(;%f zb%`Dzgv&i4x1g4;uDw=3HA4x{Bw2F zOR`uxkJSYo)ZD9%ewJp9u>pa%BZ$AH@L#!oo`M6YO3n5<&M^o>t=jOq6(?F`!#mY> zVV=Y`Q|wfl*AT^s0`I_AC^Q`j*1R_RYyDj*hTGMJ)K2N-nx}MpFqr@}N$|X+fAm`eQ+w5*|xA1wX&OY@urMLwd@ zk%FHPleAE(T6=AQ!HbZ{Hb~^Rw-6GE(>*r=wt$(;iu?8u3@K37Cd4E53hHytI|U-q;?t3 zB9;2YUKLll#BC3X^hQoMZQ-iqNesb|p2ZU3i9j%9`9le+0z(Lf%u&RRQli#o1uH8Z zLA7F~w&hN3+DAf-^QN(L+61UX3#WF(#nD1Ar1;{mj2jf_AY=?5Gl%ueVrBQP<#?2h~G%jtH2QQcd%y5l|zj zuR+j8KpVlf5oSakA{f#Vp9Zv}Ia4*R6=_$aZRGKvyuqsaU8G<1NCS4=R#35E8&^YQVxr}v-Hka=8dN;RVeBsz}b>>%0GjzZy*s? zo<6ewlR0qGyE$<3U$+l9ne)CDJtloEyeu$y^Ph2?0|*b5JUysyP`_mjvfHwiz{o`PgtqfXN%m zPu4s*1WZ|omp3#!$}Fd-5irB-oT<}i--S>k^x_$61XUQV|JQE_p|m!X28^Uu_?Sr7-5p2?#NtB-uv@B|<0>LJ3(iUCbvbQcGe!Nh>>XBNDWd zs1ox@w&c$2k*V^B1fl$Cj+Z>i&LFqDpIQ*g;!+Nwyu0-7pA3XjWR`qBf=X(#;PwHB zzn_O`M30B?mz8mH<`;56<@yg2P?@v67Erkj8B`Ha`F#Ua;+!L(QdAPg0^K@AUA2(M zRHmZ>BBXLN6?mq+C~)P5jKSIFQ7s&%Xt`(;b5c&%30Fw2YPyWdG?~KUm8#qFqc2hP zd>T&FPz@Xlbk|g;ZxPX4X0bqbob$pI4p-1Pt8~cRs=$C9n`c6)G%V0<^f4Cb2B@44 z3WT!q`m_eb0^L}kTb8_U5Dx@YBA`-NwC|Z-58+c*v>U+^jtfXub*o$ z1XQ+xNDUOX?HTFR!~)$|pgU2z3jvh~s6;>|0xC`NNCZ?Opt7-$w+iUjBxh|ZjIHu- zBA`;#1eeSc1-e)MSimFWAfk49$vn4YpJ#Fq8y^zXC7)RG5kwP(k!9eD}a*ThzPD*mAqA}wphPtYg2rgV>c*%d)-r7 z^gzBK#o?Yt7w`;f#?xU${nSHyq`@9h@QeH`=mV&j#au-wK2gjA`94jt zHzn(Ls>jRG!v>Xr`S>L31`El@Csu)|#;Yf(g8kB@*4K(mnDWcr$}DxG#{{WX zGN$NK@eOB%ijjrGEAf|AMi>+EVIsanY_5nKn_e0Q_f}amYR8==5nr){#a~teyAnvM zcxrX00|2uzsA!gaYiUcgvk+jwly>QpT~EP$iUD>FuQSWVa?h4(7KqH4yXdg?l5*|$L_@1MSM@kqQRQ8Saa5`+4JSbw+kOymiN70 zCIsSpMhPWBC83ZsA6arjlgrSj+IT#OBDa4YCOIvem_iZj(kp97*{2(}yRd)yubO3_ z8^oi8y%bJ>BB}HDQX>==eJ{<{f1!eBcO0fOuk7Yxnr&ycCQV~1rB#!cX;q}osfh1E zd=DhP5ZTLLLJ6?^LqQrqRDzN*cRLX`rGQ0Q1NFx=8RgSS4e>pQ??HSI#?xfF2o?BH zI~mrT#hSBTlEsyTV1qsDD0`j|2#|YZ62ciQrAbU8FD1MWFa~SRV$E3=%eM)DO5L@F%S-TY`SWky|9WHTXTLLVJ`69z0N$xwST;{@-aPTyx3{m7 zY>A_Fh?;>YWrfMl+LE9B?-o{*#d$w>#uO8vVFEM>Z z0a6_7bt#uwyLCwXk?vX-?VT=d+K09Y$#eiDs{!aa*x!#90wk*orUbab=?VhbzEA{>goQV1SugkI|uH3FtYq&>bfK*%&greCSP{w~=F2#~xa`v{Ok zfFuGW_xE-hKL;s;JRi~_$)fZL$zp#b+~U&5P2K71(g7<1+U6sZZe)&3l8~EoAD_ly z`Ya;pkR@ZWbz??KT+qQPuUX&J{er#Z8ih3hG*wtEG7yK1xkdA(QBq6{tx~#C))r3 delta 165 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 Date: Sat, 1 Jun 2024 16:26:48 -0700 Subject: [PATCH 4/9] Look for a good API to use for the third feature and begin on third feature --- .../executionHistory/executionHistory.bin | Bin 285745 -> 285745 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/7.3.3/fileHashes/fileHashes.bin | Bin 22047 -> 22047 bytes .gradle/7.3.3/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../7.3.3/fileHashes/resourceHashesCache.bin | Bin 22067 -> 23665 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/file-system.probe | Bin 8 -> 8 bytes ...e.features.GooBotTests.CalculatorTest.html | 597 ++---------------- build/reports/tests/test/index.html | 48 +- ...rg.jointheleague.features.GooBotTests.html | 40 +- build/test-results/test/binary/results.bin | Bin 61973 -> 10103 bytes .../compileJava/previous-compilation-data.bin | Bin 40395 -> 40395 bytes .../previous-compilation-data.bin | Bin 43846 -> 43846 bytes .../features/GooBotFeatures/Calculator.java | 20 +- .../RandomPokemonGenerator.java | 65 ++ .../features/GooBotTests/CalculatorTest.java | 31 +- 16 files changed, 150 insertions(+), 651 deletions(-) create mode 100644 src/main/java/org/jointheleague/features/GooBotFeatures/RandomPokemonGenerator.java diff --git a/.gradle/7.3.3/executionHistory/executionHistory.bin b/.gradle/7.3.3/executionHistory/executionHistory.bin index f670752770f983c5f1a626d2c139c63fa2561db7..10d642158eef21318bb99bec8aa278fa0d63f611 100644 GIT binary patch delta 1460 zcma)5Yfuwc80GFRLaT*U9vU2}1VtrINGLWSLqfnuc@tYI%4$HpO zw2L*$PCK`c_PQk`Nm9faqWJiPxIH3qY9>c2=7`(~RzI*uFX($%Qaty8pI1nu!Q8Rz z_?a2r_!nW~#4yR67TA zxFF03N4Q{}5x&O*fkwEK2Lg;x%>%0_sNgmQ8&O%4QC8e(GODoB8#o$0SG+;m(uK|* zGsik&T)f;>ve3=3y7?yN*yT{b2ae1C>4W_vj+)>%ncGTm@Vmi&c~$M}G0jJELsnZ_pibWu#ItYaaW^NbUFhnvl;zvbpJ6_y6NNa|9vP1gN^ zUW1t4^{k^|e+gXS3+Q~xbAJI@U_W}vY211rTHPzIyP++aA*t~THe+|oZ@kE(@9J4n zgzP7&h9jdVS18WOBO|}Q?0T)s4D$7$l)yIuCa}Kr&B4#(CTg_wC1qzqYi>V0P3Sbl zw#}gJ5Irs_-8C&fIblz%NER2LCXsN2do#XtOWP+ip}w6LWS`igMDPIUT!`O0i=611 zjXo}TX|-dKi+LWL97fv+UKmhq#I@zl5tYA;1^R#doHJKZP$2L0C#q7>Jd}{GL@eC# zEt9s1Yduwmo}RX@hJ#LV^Ik{TOhavmrB{I*#j_XqOyzbXW<|?~O zi?!r(U$Wu(XvAsxeBK;eMJH$X_`tW(F%Oexea_RaT6VQeK!FdSL9-ZS4VC5^gT#ud z`r8g1hzNUu7GMJ%^_KvJ8Y2HPrHhIS`1o>+Vz>@`VJ0@|zQkh_mt2Xj`o zJ|h^smy@LnC9Jk=Z3$O<|u9A^L=4SES0dPu4B)YT>;IaLn?ZaQI?| zQhTh(ICL<&?R@@+GCaZJ=m&lko+Rb5PowTuD7zWO9__d0g3iJ^4XS$E4W0l04PkQ~ z>cifuYcwye|MjW#@WzqA!nIjcA4S{ALtCV3<%zbbA{(jJzk)B>kCFfF87Jr-f&KM2 D9j~4X delta 1493 zcmdnELvZ5`!3{G`D5WMFW#ts)R=1F`Ji2W>_`KdK8#8t9jyMP6w7ps6i`&EyGw8e*9Hr?Mc>lF9N$%=csrhl&&R+2==$(b2gxYvs1kJOaCooIvFP9D9U!=6i{gTy2aIhjd%M>UR|r$ zEUc#p6k?utxVbp!So)!RB}s2<*h;56USOQCUBHD=k5Pp8^?^3Mj}uz2KgwCvG&l5f z`@>z!w+Fd09_dj^H_J6IDacOAs>-M+$gD_DG%86;H!&$Ns)WXAEHF;Rn78{~Wjw(x zVA;YPUQ%HCEPB7l*){v!Wv73*$$VtHeJJA+D+~urI^nf_K@oEc^Y$DCCO!*+JqzzN zP4~2yQjB01oqhICB1o_D^aGO2qT9vKFiv6?=+u37xbI1vnfjb*v88gxLBNzzIK7~d ziDmlD7^Xx>^013#(u1%HVwnOVtfR3^0T7mC9Fr!5IyL`zG(1PbY&o|LI{Xw9YLi!VF8jJU80DC8m6 zF*!v3--~nn8wA@o#XSZJNt?^_3ET3tdUx+`mSL=z2^12aKfS0ZQFM>cv)%2YvnL(d z4ve=T#_7I^Oa&ss+YCQ)i0`SJBxew=bM)5H{a?4OXup`qwEbctvuB{1>}*1@$K1-W zX0oA|=yqQ&=6-$w^Z?mDUy1n+)AS2Rnf)={p?{1ygB7b5OFjYgY_lC0nM)lo44HJo zZTf2|mSkLsqr#d66e-i=qgYg(H+%y{4?Y-Bc9q_Fv?N5%>JDq=zE3RE6?ZdBOs~&iVx7JsoMnlQrWr>` zKkuBJS$DqXuer3m3!-`cOOWPw-AVcqjZ>B!dch~U?D=}e>4oc=OC_2#UaZWW>~!?h zoO!LCZy!B{=;%?H{tqZ?*T0-sZffrw37J5}+iy+>U4_V=mjxR4=0(PrQ{3w%ue?84 zpX6F93KU}VJ@Cr(>zRmot0G(19r;o?ed7k^B?u2YL3C5%;pqo9GCS$*9AB{N8^j0~j#w0{}A?1l|Au literal 17 VcmZQRt>9AB{N8^j0~j!J0st~$1StRj diff --git a/.gradle/7.3.3/fileHashes/fileHashes.bin b/.gradle/7.3.3/fileHashes/fileHashes.bin index ac49624b31b84110a3bf5fa58222717ddafa3b47..446b3c84b965e5a104751f9fd86289abc84b396d 100644 GIT binary patch delta 691 zcmbQghH?HH#to7_ELVR^T$n8DqX%L5!x)V)#%37fDU2cR3svk1V^qT!YhjH0FovKX zRIxLRQ3_)$hcRvf8P^1&EGBdNLlxWlOG)hNZ3;_yzj}v~(8Lu1s~@~#U|{UOCJ?=R za=w3E&~~ZsTbF4`KkZDpXz6!?<32<(%7Ot5I41%rJ!2rD3B-yZEWoX0`Fqx}czs)o zC4~X5Ne5AN@Q6*e4=7Xca(^S?dgj(4lg2ITJn5oez>4@7Rsc-^0AgT`r0euG2_8G=d4Tg$@ z!x)_~#%>tnZLpMtYKPPXoyQrawWX_W+h|US?-#L3fp5Hos z)io7}Bu53r0qW(GBSX|!uJLhHOl}U*v%AIza~fD4Er8D4e)HadC;t27)*JJ#IrafP z0Ss@TR)|^LYLnlGlqs|ZPLjHRw)4_E-;c8YtG9-uDl*(Txi!=!OfLT*o9!X{Z{Et) p&hHgVexoYlJPkAv&2IODyE!^H?fI0`XLZ}BU85RRhjs@@2LMtL_4EJ$ delta 691 zcmbQghH?HH#to7_EZZD!9+)iaqX%L5!x)V)#%37fDVTA0#bj|`kYXUi6UL~9G1h_^ zKm+f?L3y8gdi_z(s;0T2 zpBWe!`>(v)&^|fezbVrX0FMftGRD+=+ z;V?!gjIkTWcpEGwA-v7-BZv5&x=C^d;W|fe9fjDjYyV{V5GjS*8FJSgSY3JFE=+x< z#?*cjBDvcD;@(f9lOsdaSg!K!HkjNTqGyNj30NL2fSNR3tjwM4boA7md99sqA3a4i zOMqwc`;amPO*4*?e%?7bv+jJ&Uvp`B7pkH!^C!24x`g#F=ark+PpaUd zkfR7{3@svOQ0jq#U;zOOiWD!36cY|Hm)!2^$j;5}OeQDxW?Oxf%%6M5Mf8Yo=4FwIw1?p)%Xud6v;LycLrC6X;cUfr_$i0y+4F$QnI) zKu=>YRCdeMA@}cDv*rfELz3%e6 zaY0?LE+W11feOwAYPzI<#M@}DGZGsMym1y#yEoZiH)@9u485E|0*(khN_wLmQQy{u zKqJ7Gz{kM{d^Op`b4a-WRO9wS-J;UL<_8lFFr;+>yyjlpmzAv~UB=y|F!Y>8r|OGP zyiFh0u7o)~8s%@+r=`zfo6SW+TmeIqWjj`D=iGhf>If3jjmqPCu{p671Odz`?kE?o zUe2yj>MBKe2AI$!dWxDnhJBK)4#JSygvyf{S9VQKb><`C$51}4e28FEd}L}Xivn}%Z*QwkTl?qcY&6Ln3Nx>*dd3&ogiB>1|ejT=jDA+ zFAV9s&;-5X4=bimw;h8yB?R1;Bp4hVe>$h*RSp8hToomWPb!1QJY~V-` zLAxF}dj0G=fE)nL7+4Wmq`+lC6)Z!8FGw>y+AJ{nLT5%w;1ZbAj)F3x1$3BlJa<*= zwM3+u8R#djS2T{Uu6h`p0y8QBsA#{07(q2!aorBXF!U${0&U{P$oxx$(o>V(NOcw3 zin#+XoLX31gUHP&N55rc7Q1q^MXDT=Mmg@LA4V0JW)f9h@{vxr1PbNd6Cd4iXgkqn z0ghv#xKRSNzBe@Q_CGW#BnPbg>;7);?c`NhW6xDJkA1jcm7DEym!FyI-ozT5d0p~3 zCSzSE#P~J|`qco~PGi z%T|mp=JDGVl{K*qit>ZSLLgLug`wUdeK)_%P+Yl%)dBpCe#Do6Wxi-(Q0X#+Z@)Hx$T2FLGefQ)3q$urDMyQ z`}^yj^Z=tghVnl5ym$|+@wRYwZqsL%v9=h3L|=#yllwbpxpRL z`e&c&k2~(KVfWQ3T~Z|zzbU9Ob9}6EX2H$e`>q_=w$w-Zo||F({~&1{{(Q!D zk7^5wrDO2hXz9ytMuwd!T_j`vLdbk%*qD}0$-jbC)Weq4w4DE4aLLz4pQlUOjWtwX zun#&qf`A1K`Ihq?nQyR$(f!ffJ)KuJ2*rbTy3}InBkcP@n2;PzCMk>aj{94!X`O)% zZ$3tWI2t8%Mq~SXAGPApq3n1b)>s^GuG}8W`xxkNDaY76Ey5cAwP(z4546g_lqa8C zXad&jEzzeIsISC^_|ESi$S~vkgd57goKm-zmVUn)XzR$bK$2zN+0p!^m(!l;`(ur@ onY=Lj7?6~@DWKaAXJ{~pRicONt(>b~%jzU&6-?Rm8%T|R0KgSk&Hw-a delta 162 zcmeykgK_g3#tkMCf|*Uml@prlqpKOfAmHHSQi+Diwvq;u=SqHD{nAaS3zQOuY$+qw+aT6 zeHA@6uT`{Qocvem!(>*KipgtL3?_e7F`R6tdVR94ngq{(C}3dVe7RBahxkSV1HR3U H9-nvtEnz@B diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 4c2088fc5faaac28c65a0b60eab82f49bcb9060b..351e95730107d578632274e4ea54d869369e1bcf 100644 GIT binary patch literal 17 VcmZR6b-0I(m;3tx1~6du1^_e@1YiIF literal 17 VcmZR6b-0I(m;3tx1~6d!4gfT}1quKF diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index c10e78ae7aff583b7f0e4d1396aa9a15953c54fe..b23bb689011bbe063ce86b8aacee43b71c561a5a 100644 GIT binary patch literal 8 PcmZQzVC=to(RC&O3Bv;w literal 8 PcmZQzVC=uL@6aLu3W)=U diff --git a/build/reports/tests/test/classes/org.jointheleague.features.GooBotTests.CalculatorTest.html b/build/reports/tests/test/classes/org.jointheleague.features.GooBotTests.CalculatorTest.html index a19ceb34..303bf077 100644 --- a/build/reports/tests/test/classes/org.jointheleague.features.GooBotTests.CalculatorTest.html +++ b/build/reports/tests/test/classes/org.jointheleague.features.GooBotTests.CalculatorTest.html @@ -23,13 +23,13 @@

CalculatorTest

-
11
+
12

tests

-
6
+
1

failures

@@ -41,7 +41,7 @@

CalculatorTest

-
0.357s
+
0.343s

duration

@@ -51,7 +51,7 @@

CalculatorTest

-
45%
+
91%

successful

@@ -70,119 +70,11 @@

CalculatorTest

Failed tests

- -

itShouldDivide()

+ +

itShouldReturnErrorIfMessageInvalid()

-
org.mockito.exceptions.misusing.UnfinishedVerificationException: 
-Missing method call for verify(mock) here:
--> at org.jointheleague.features.GooBotTests.CalculatorTest.itShouldExponentiate(CalculatorTest.java:175)
-
-Example of correct verification:
-    verify(mock).doSomething()
-
-Also, this error might show up because you verify either of: final/private/equals()/hashCode() methods.
-Those methods *cannot* be stubbed/verified.
-Mocking methods declared on non-public parent classes is not supported.
-
-	at org.jointheleague.features.GooBotTests.CalculatorTest.setUp(CalculatorTest.java:48)
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.lang.reflect.Method.invoke(Method.java:498)
-	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
-	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:126)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:76)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
-	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:490)
-	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$19(ClassBasedTestDescriptor.java:475)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$2(TestMethodTestDescriptor.java:167)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$5(TestMethodTestDescriptor.java:195)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:195)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:164)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at java.util.ArrayList.forEach(ArrayList.java:1259)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at java.util.ArrayList.forEach(ArrayList.java:1259)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
-	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
-	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
-	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
-	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
-	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.lang.reflect.Method.invoke(Method.java:498)
-	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
-	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
-	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
-	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
-	at com.sun.proxy.$Proxy2.stop(Unknown Source)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
-	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
-	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
-	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
-	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
-	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
-
-
-
-
- -

itShouldHandleMessagesWithCommand()

- -
java.lang.StringIndexOutOfBoundsException: String index out of range: -13
-	at java.lang.String.substring(String.java:1967)
-	at org.jointheleague.features.GooBotFeatures.Calculator.handle(Calculator.java:33)
-	at org.jointheleague.features.GooBotTests.CalculatorTest.itShouldHandleMessagesWithCommand(CalculatorTest.java:85)
+
org.mockito.exceptions.base.MockitoException: Unable to create mock instance of type 'Calculator'
+	at org.jointheleague.features.GooBotTests.CalculatorTest.itShouldReturnErrorIfMessageInvalid(CalculatorTest.java:198)
 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
@@ -266,430 +158,10 @@ 

itShouldHandleMessagesWithCommand()

at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71) at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) -
- -
-
- -

itShouldHaveACommand()

- -
org.mockito.exceptions.misusing.UnfinishedVerificationException: 
-Missing method call for verify(mock) here:
--> at org.jointheleague.features.GooBotTests.CalculatorTest.itShouldUseModulo(CalculatorTest.java:187)
-
-Example of correct verification:
-    verify(mock).doSomething()
-
-Also, this error might show up because you verify either of: final/private/equals()/hashCode() methods.
-Those methods *cannot* be stubbed/verified.
-Mocking methods declared on non-public parent classes is not supported.
-
-	at org.jointheleague.features.GooBotTests.CalculatorTest.setUp(CalculatorTest.java:48)
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.lang.reflect.Method.invoke(Method.java:498)
-	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
-	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:126)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:76)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
-	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:490)
-	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$19(ClassBasedTestDescriptor.java:475)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$2(TestMethodTestDescriptor.java:167)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$5(TestMethodTestDescriptor.java:195)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:195)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:164)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at java.util.ArrayList.forEach(ArrayList.java:1259)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at java.util.ArrayList.forEach(ArrayList.java:1259)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
-	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
-	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
-	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
-	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
-	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.lang.reflect.Method.invoke(Method.java:498)
-	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
-	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
-	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
-	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
-	at com.sun.proxy.$Proxy2.stop(Unknown Source)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
-	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
-	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
-	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
-	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
-	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
-
-
-
-
- -

itShouldHaveAHelpEmbed()

- -
org.mockito.exceptions.misusing.UnfinishedVerificationException: 
-Missing method call for verify(mock) here:
--> at org.jointheleague.features.GooBotTests.CalculatorTest.itShouldAdd(CalculatorTest.java:142)
-
-Example of correct verification:
-    verify(mock).doSomething()
-
-Also, this error might show up because you verify either of: final/private/equals()/hashCode() methods.
-Those methods *cannot* be stubbed/verified.
-Mocking methods declared on non-public parent classes is not supported.
-
-	at org.jointheleague.features.GooBotTests.CalculatorTest.setUp(CalculatorTest.java:48)
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.lang.reflect.Method.invoke(Method.java:498)
-	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
-	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:126)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:76)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
-	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:490)
-	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$19(ClassBasedTestDescriptor.java:475)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$2(TestMethodTestDescriptor.java:167)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$5(TestMethodTestDescriptor.java:195)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:195)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:164)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at java.util.ArrayList.forEach(ArrayList.java:1259)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at java.util.ArrayList.forEach(ArrayList.java:1259)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
-	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
-	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
-	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
-	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
-	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.lang.reflect.Method.invoke(Method.java:498)
-	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
-	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
-	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
-	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
-	at com.sun.proxy.$Proxy2.stop(Unknown Source)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
-	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
-	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
-	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
-	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
-	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
-
-
-
-
- -

itShouldHaveTheCommandAsTheTitleOfTheHelpEmbed()

- -
org.mockito.exceptions.misusing.UnfinishedVerificationException: 
-Missing method call for verify(mock) here:
--> at org.jointheleague.features.GooBotTests.CalculatorTest.itShouldSubtract(CalculatorTest.java:153)
-
-Example of correct verification:
-    verify(mock).doSomething()
-
-Also, this error might show up because you verify either of: final/private/equals()/hashCode() methods.
-Those methods *cannot* be stubbed/verified.
-Mocking methods declared on non-public parent classes is not supported.
-
-	at org.jointheleague.features.GooBotTests.CalculatorTest.setUp(CalculatorTest.java:48)
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.lang.reflect.Method.invoke(Method.java:498)
-	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
-	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:126)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:76)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
-	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:490)
-	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$19(ClassBasedTestDescriptor.java:475)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$2(TestMethodTestDescriptor.java:167)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$5(TestMethodTestDescriptor.java:195)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:195)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:164)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at java.util.ArrayList.forEach(ArrayList.java:1259)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at java.util.ArrayList.forEach(ArrayList.java:1259)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
-	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
-	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
-	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
-	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
-	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.lang.reflect.Method.invoke(Method.java:498)
-	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
-	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
-	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
-	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
-	at com.sun.proxy.$Proxy2.stop(Unknown Source)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
-	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
-	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
-	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
-	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
-	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
-
-
-
-
- -

itShouldNotHandleMessagesWithoutCommand()

- -
org.mockito.exceptions.misusing.UnfinishedVerificationException: 
-Missing method call for verify(mock) here:
--> at org.jointheleague.features.GooBotTests.CalculatorTest.itShouldMultiply(CalculatorTest.java:131)
-
-Example of correct verification:
-    verify(mock).doSomething()
-
-Also, this error might show up because you verify either of: final/private/equals()/hashCode() methods.
-Those methods *cannot* be stubbed/verified.
-Mocking methods declared on non-public parent classes is not supported.
-
-	at org.jointheleague.features.GooBotTests.CalculatorTest.setUp(CalculatorTest.java:48)
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.lang.reflect.Method.invoke(Method.java:498)
-	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
-	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:126)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeEachMethod(TimeoutExtension.java:76)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
-	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeMethodInExtensionContext(ClassBasedTestDescriptor.java:490)
-	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$19(ClassBasedTestDescriptor.java:475)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$2(TestMethodTestDescriptor.java:167)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$5(TestMethodTestDescriptor.java:195)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:195)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:164)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:127)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at java.util.ArrayList.forEach(ArrayList.java:1259)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at java.util.ArrayList.forEach(ArrayList.java:1259)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
-	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
-	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
-	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
-	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
-	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.lang.reflect.Method.invoke(Method.java:498)
-	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
-	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
-	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
-	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
-	at com.sun.proxy.$Proxy2.stop(Unknown Source)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
-	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
-	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
-	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
-	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
-	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
+Caused by: org.mockito.creation.instance.InstantiationException: 
+Unable to create instance of 'Calculator$MockitoMock$1793613766'.
+Please ensure that the target class has a 0-arg constructor.
+	... 84 more
 
@@ -706,13 +178,13 @@

Tests

itShouldAdd() -0.001s +0s passed -itShouldDivide() -0s -failed +itShouldDivide() +0.001s +passed itShouldExponentiate() @@ -720,24 +192,24 @@

Tests

passed -itShouldHandleMessagesWithCommand() -0.001s -failed +itShouldHandleMessagesWithCommand() +0.001s +passed -itShouldHaveACommand() -0.003s -failed +itShouldHaveACommand() +0.002s +passed -itShouldHaveAHelpEmbed() -0.001s -failed +itShouldHaveAHelpEmbed() +0s +passed -itShouldHaveTheCommandAsTheTitleOfTheHelpEmbed() -0.001s -failed +itShouldHaveTheCommandAsTheTitleOfTheHelpEmbed() +0s +passed itShouldMultiply() @@ -745,8 +217,13 @@

Tests

passed -itShouldNotHandleMessagesWithoutCommand() -0.001s +itShouldNotHandleMessagesWithoutCommand() +0.003s +passed + + +itShouldReturnErrorIfMessageInvalid() +0.007s failed @@ -756,7 +233,7 @@

Tests

itShouldUseModulo() -0.347s +0.327s passed @@ -769,7 +246,7 @@

Tests

Generated by -Gradle 7.3.3 at Jun 1, 2024 11:26:38 AM

+Gradle 7.3.3 at Jun 1, 2024 4:06:35 PM

diff --git a/build/reports/tests/test/index.html b/build/reports/tests/test/index.html index b8d27f11..43485395 100644 --- a/build/reports/tests/test/index.html +++ b/build/reports/tests/test/index.html @@ -20,13 +20,13 @@

Test Summary

-
11
+
12

tests

-
6
+
1

failures

@@ -38,7 +38,7 @@

Test Summary

-
0.357s
+
0.343s

duration

@@ -48,7 +48,7 @@

Test Summary

-
45%
+
91%

successful

@@ -72,27 +72,7 @@

Failed tests

@@ -114,11 +94,11 @@

Packages

org.jointheleague.features.GooBotTests -11 -6 +12 +1 0 -0.357s -45% +0.343s +91% @@ -141,11 +121,11 @@

Classes

org.jointheleague.features.GooBotTests.CalculatorTest -11 -6 +12 +1 0 -0.357s -45% +0.343s +91% @@ -158,7 +138,7 @@

Classes

Generated by -Gradle 7.3.3 at Jun 1, 2024 11:26:38 AM

+Gradle 7.3.3 at Jun 1, 2024 4:06:35 PM

diff --git a/build/reports/tests/test/packages/org.jointheleague.features.GooBotTests.html b/build/reports/tests/test/packages/org.jointheleague.features.GooBotTests.html index 12956b9a..7305053f 100644 --- a/build/reports/tests/test/packages/org.jointheleague.features.GooBotTests.html +++ b/build/reports/tests/test/packages/org.jointheleague.features.GooBotTests.html @@ -22,13 +22,13 @@

Package org.jointheleague.features.GooBotTests

-
11
+
12

tests

-
6
+
1

failures

@@ -40,7 +40,7 @@

Package org.jointheleague.features.GooBotTests

-
0.357s
+
0.343s

duration

@@ -50,7 +50,7 @@

Package org.jointheleague.features.GooBotTests

-
45%
+
91%

successful

@@ -71,27 +71,7 @@

Failed tests

@@ -112,11 +92,11 @@

Classes

CalculatorTest -11 -6 +12 +1 0 -0.357s -45% +0.343s +91% @@ -128,7 +108,7 @@

Classes

Generated by -Gradle 7.3.3 at Jun 1, 2024 11:26:38 AM

+Gradle 7.3.3 at Jun 1, 2024 4:06:35 PM

diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin index 2cb7ecb8f9e0e7e165198a12524e6628b7e6db95..72a144c8ab9fe9f5a57384fe81d8aa3e13696ef1 100644 GIT binary patch delta 758 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 diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index e059de7318743facee71692bc34b3a02e41c37fc..79a86af06cf7da7c2282b24591e4bacbb96bddfa 100644 GIT binary patch delta 31 ncmX@To9Xm!rVV9`0^C}bzh@nb*SED;QW)TxbZ~PUqw5?1)0hnW delta 31 ncmX@To9Xm!rVV9`0uBeJPKe}+j!;f*=i0n(ZrtWJM%Ot2)_V;T diff --git a/build/tmp/compileTestJava/previous-compilation-data.bin b/build/tmp/compileTestJava/previous-compilation-data.bin index 9f764b48f895863fb361b42e7e34056ad71367a4..8072b78b232ca0b3f7a7f66539ea4495d96c9434 100644 GIT binary patch delta 110 zcmX?hjp^7mrVZMR0%x@^Yc;OYjwt(o=|W8Nj8mJf89gEef@ib0b|gEWk8G;;?)dZQ z#OBFS)d3bRjEv3<3{s4Yk_-%tjEoEn47QAnHVh0xjEsT|46A@bnhXrOjEp)A4CaiC NW(*9MfI@N%3;?|;9iadK delta 110 zcmX?hjp^7mrVZMR0^#PJeS-GazBPUC?KZh^qHMD@qerBG!-1(2BDta?lvCTeHm{o- zw|R0@b%2EwBcmh(g9{_0GXn!7BO?O?gDoSY4FiJ^BcmV#!z!SVCIf>xBcmAugDxYZ N4g9dL diff --git a/src/main/java/org/jointheleague/features/GooBotFeatures/Calculator.java b/src/main/java/org/jointheleague/features/GooBotFeatures/Calculator.java index 3bb075d2..5f1b962a 100644 --- a/src/main/java/org/jointheleague/features/GooBotFeatures/Calculator.java +++ b/src/main/java/org/jointheleague/features/GooBotFeatures/Calculator.java @@ -27,16 +27,16 @@ public void handle(MessageCreateEvent event) { String op; int num2; //respond to message here - if (messageContent.startsWith(COMMAND)) { + if (messageContent.startsWith(COMMAND) ) { int index1 = messageContent.indexOf(","); int index2 = messageContent.indexOf(",", 15); - String sub1 = messageContent.substring(12, index1); - String subOp2 = messageContent.substring(index1 + 1, index2); - String sub2 = messageContent.substring(index2 + 1); - num1 = Integer.parseInt(sub1); - num2 = Integer.parseInt(sub2); - answer = calculate(event, num1, num2, subOp2); - event.getChannel().sendMessage("I got the answer! It is... " + answer); + String sub1 = messageContent.substring(12, index1); + String subOp2 = messageContent.substring(index1 + 1, index2); + String sub2 = messageContent.substring(index2 + 1); + num1 = Integer.parseInt(sub1); + num2 = Integer.parseInt(sub2); + answer = calculate(event, num1, num2, subOp2); + event.getChannel().sendMessage("I got the answer! It is... " + answer); } } @@ -68,10 +68,6 @@ public static double calculate(MessageCreateEvent event, double num1, double num answer = num1 % num2; break; - default: - event.getChannel().sendMessage("Sorry, I couldn't understand your request." + - "Please try again."); - break; } return answer; } diff --git a/src/main/java/org/jointheleague/features/GooBotFeatures/RandomPokemonGenerator.java b/src/main/java/org/jointheleague/features/GooBotFeatures/RandomPokemonGenerator.java new file mode 100644 index 00000000..1f4ea08f --- /dev/null +++ b/src/main/java/org/jointheleague/features/GooBotFeatures/RandomPokemonGenerator.java @@ -0,0 +1,65 @@ +package org.jointheleague.features.GooBotFeatures; + +import org.javacord.api.event.message.MessageCreateEvent; +import org.jointheleague.features.abstract_classes.Feature; +import org.jointheleague.features.examples.third_features.plain_old_java_objects.cat_facts_api.CatWrapper; +import org.jointheleague.features.help_embed.plain_old_java_objects.help_embed.HelpEmbed; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; + +//A swagger page for this very simple API can be found here: https://app.swaggerhub.com/apis-docs/whiterabbit8/meowfacts/1.0.0 +public class RandomPokemonGenerator extends Feature { + + + + // FIND A API TO USE + public final String COMMAND = "!RandomPokemonGenerator"; + + private WebClient webClient; + private static final String baseUrl = "foo"; + + public RandomPokemonGenerator(String channelName) { + super(channelName); + helpEmbed = new HelpEmbed(COMMAND, "This will grab a random pokemon of the 1025 that exist, and " + + "give the name!"); + + //build the WebClient + this.webClient = WebClient + .builder() + .baseUrl(baseUrl) + .build(); + } + + @Override + public void handle(MessageCreateEvent event) { + String messageContent = event.getMessageContent(); + if (messageContent.startsWith(COMMAND)) { + String catFact = getCatFact(); + event.getChannel().sendMessage(catFact); + } + } + + public String getCatFact() { + + //Make the request, accepting the response as a plain old java object you created + Mono catWrapperMono = webClient.get() + .retrieve() + .bodyToMono(CatWrapper.class); + + //collect the response into a plain old java object + CatWrapper catWrapper = catWrapperMono.block(); + + //get the cat fact from the response + String message = catWrapper.getData().get(0); + + //send the message + return message; + } + + public void setWebClient(WebClient webClient) { + this.webClient = webClient; + } + +} + + diff --git a/src/test/java/org/jointheleague/features/GooBotTests/CalculatorTest.java b/src/test/java/org/jointheleague/features/GooBotTests/CalculatorTest.java index 66087d8e..1776414a 100644 --- a/src/test/java/org/jointheleague/features/GooBotTests/CalculatorTest.java +++ b/src/test/java/org/jointheleague/features/GooBotTests/CalculatorTest.java @@ -10,6 +10,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import javax.swing.*; import java.io.ByteArrayOutputStream; import java.io.PrintStream; @@ -20,7 +21,7 @@ import static org.mockito.Mockito.*; public class CalculatorTest { - private final String testChannelName = "Calculator"; + private final String testChannelName = "calculator"; private final Calculator calculator = new Calculator(testChannelName); private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); @@ -127,8 +128,8 @@ void itShouldHaveTheCommandAsTheTitleOfTheHelpEmbed() { @Test void itShouldMultiply() { //Test Multiply - when(messageCreateEvent.getMessageContent()).thenReturn("!calculator 5,x,7"); - verify(mock(Calculator.class), times(1)).calculate(messageCreateEvent, num1, num2, multiply); + when(messageCreateEvent.getMessageContent()).thenReturn("!Calculator 5,x,7"); + calculator.calculate(messageCreateEvent, num1, num2, multiply); double expected = 35; double actual = calculator.answer; @@ -138,8 +139,8 @@ void itShouldMultiply() { @Test void itShouldAdd() { //Test Add - when(messageCreateEvent.getMessageContent()).thenReturn("!calculator 5,+,7"); - verify(mock(Calculator.class), times(1)).calculate(messageCreateEvent, num1, num2, add); + when(messageCreateEvent.getMessageContent()).thenReturn("!Calculator 5,+,7"); + calculator.calculate(messageCreateEvent, num1, num2, add); double expected = 12; double actual = calculator.answer; @@ -149,8 +150,8 @@ void itShouldAdd() { @Test void itShouldSubtract() { //Test Subtract - when(messageCreateEvent.getMessageContent()).thenReturn("!calculator 5,-,7"); - verify(mock(Calculator.class), times(1)).calculate(messageCreateEvent, num1, num2, subtract); + when(messageCreateEvent.getMessageContent()).thenReturn("!Calculator 5,-,7"); + calculator.calculate(messageCreateEvent, num1, num2, subtract); double expected = -2; double actual = calculator.answer; @@ -160,19 +161,19 @@ void itShouldSubtract() { @Test void itShouldDivide() { //Test Divide - when(messageCreateEvent.getMessageContent()).thenReturn("!calculator 5,/,7"); - verify(mock(Calculator.class), times(1)).calculate(messageCreateEvent, num1, num2, divide); + when(messageCreateEvent.getMessageContent()).thenReturn("!Calculator 5,/,7"); + calculator.calculate(messageCreateEvent, num1, num2, divide); - double expected = 0.714; + double expected = 0.7142857143; double actual = calculator.answer; - assertEquals(expected, actual, 1); + assertEquals(expected, actual, 0.1); } @Test void itShouldExponentiate() { //Test Exponentiation - when(messageCreateEvent.getMessageContent()).thenReturn("!calculator 5,^,7"); - verify(mock(Calculator.class), times(1)).calculate(messageCreateEvent, num1, num2, exponent); + when(messageCreateEvent.getMessageContent()).thenReturn("!Calculator 5,^,7"); + calculator.calculate(messageCreateEvent, num1, num2, exponent); double expected = 78125.0; double actual = calculator.answer; @@ -184,12 +185,12 @@ void itShouldExponentiate() { void itShouldUseModulo() { //Test Modulo Ability when(messageCreateEvent.getMessageContent()).thenReturn("!calculator 5,%,7"); - verify(mock(Calculator.class), times(1)).calculate(messageCreateEvent, num1, num2, modulo); - + calculator.calculate(messageCreateEvent, num1, num2, modulo); double expected = 5; double actual = calculator.answer; assertEquals(expected, actual, 0); } + } From adb5827378dfc54aadc52626c2c9d1bbdae48493 Mon Sep 17 00:00:00 2001 From: zhaoyd5268 Date: Sat, 8 Jun 2024 16:33:43 -0700 Subject: [PATCH 5/9] Finish third feature and begin testing it --- .gradle/7.3.3/checksums/checksums.lock | Bin 17 -> 39 bytes .../dependencies-accessors.lock | Bin 17 -> 39 bytes .../executionHistory/executionHistory.bin | Bin 285745 -> 285745 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 39 bytes .gradle/7.3.3/fileHashes/fileHashes.bin | Bin 22047 -> 22247 bytes .gradle/7.3.3/fileHashes/fileHashes.lock | Bin 17 -> 39 bytes .../7.3.3/fileHashes/resourceHashesCache.bin | Bin 23665 -> 24821 bytes .../buildOutputCleanup.lock | Bin 17 -> 39 bytes .gradle/file-system.probe | Bin 8 -> 8 bytes .../compileJava/previous-compilation-data.bin | Bin 40395 -> 40745 bytes .../jointheleague/discord_bot/DiscordBot.java | 2 + .../RandomPokemonGenerator.java | 65 --------------- .../GooBotFeatures/RandomWordGenerator.java | 74 ++++++++++++++++++ .../GooBotFeatures/RandomWordWrapper.java | 22 ++++++ 14 files changed, 98 insertions(+), 65 deletions(-) delete mode 100644 src/main/java/org/jointheleague/features/GooBotFeatures/RandomPokemonGenerator.java create mode 100644 src/main/java/org/jointheleague/features/GooBotFeatures/RandomWordGenerator.java create mode 100644 src/main/java/org/jointheleague/features/GooBotFeatures/RandomWordWrapper.java diff --git a/.gradle/7.3.3/checksums/checksums.lock b/.gradle/7.3.3/checksums/checksums.lock index 68f7ab5fbb4c7c3eaaae9521882ecbc678f4afb0..b0b0d9092d214eaba898a385139d482c4fa4d298 100644 GIT binary patch literal 39 pcmZSPTlvMuEh58@0ScHI7!DmQYwEerVr2Z4fz{a5#LSq10RYDg37`M~ literal 17 ScmZSPTlvMuEh58@0SW*r9Rp7Q diff --git a/.gradle/7.3.3/dependencies-accessors/dependencies-accessors.lock b/.gradle/7.3.3/dependencies-accessors/dependencies-accessors.lock index 59ac938b8a25a80df3b07bfa2554b36a954c68c3..df905c8d00bea9ce98b9820e853e1f6b312fc4d2 100644 GIT binary patch literal 39 pcmZR6!?mYXw0>zl0~9bbFdRDAqn^L~>HV+w7+8%>P0WlL7y$183*!I) literal 17 TcmZR6!?mYXw0>zl0~7!NG5rJc diff --git a/.gradle/7.3.3/executionHistory/executionHistory.bin b/.gradle/7.3.3/executionHistory/executionHistory.bin index 10d642158eef21318bb99bec8aa278fa0d63f611..a8ef437111ecb389b640127b1a58f90e1827a5d5 100644 GIT binary patch delta 857 zcmdnELvZ5`!3k>Y3@5r67-}wW)OD3$W^|2hE|u6`D#7?(N3-q$14G?|*=3a(<)%qx z`4w4dCIxw!#YM@<1!k$~nPrs>5D>Jv(4#zsN#w(H!5AjX$pw34CO52=7GW0nHE(Z% z43qRniFYoNcDpyrF|M2bu$D=4`vYA@LvF^S(=Q%l1S_9@!H`)(Cnzy5B|kSjzbM5$ zH7~U&u_V7pFDtPuky*fUZ?H()jAuo%-3Du&mL-@m9-iJ9%qTPcfjJ|;Fcxi-`*x*( zB{dL|;YEoB1*tF-dD?D0n&J{v`$Yfy&US_E7pH&lW0V7H5kS{6`Oo&$?FE*Mub2g9 zNKW-KxXGEK{%ig6nkW&!$%=csrhl^pt&zu{?R zW(I-8N39`-ypnkwJHGy!A@FU^bbC8STh;?NPF?&zz0r;_6w179$EXQqa@sTcK$%hY zjNVY@Dtks12y?RCem^K{;(n;~FI%J;XCO4eLKCWm@2ZEz$%FIiZaY3J ze_pY4Cd8h->_G2d;nAwS$YL6!9@nyoMbE{oaeBWaqY(#0#Z`gHj{7C2KXPQ$gE~{x ziLnCew~Gg3^&rZQaRUwdY@YPcu0e0pJrm0>p~Z|RfkIDHwaa$3UplzQd!nY4liH@~ zvd)Z3ju1W1*?81u!c0RBREKL7v# delta 140 zcmdnELvZ5`!3k>YjIOZ^3_Yti>bgoWGo0vZE|u6`D#7?(N3&-ZP<+cGN?z!Dt1xT& phnvhtw!eDFxWsC^%qgaO%-eGmnD{K(&!1)lVy5lqPctV?000CeHkkkb diff --git a/.gradle/7.3.3/executionHistory/executionHistory.lock b/.gradle/7.3.3/executionHistory/executionHistory.lock index a509d4d604a349cc4720daf85da99680ce7b5aae..c2ed3038f6266e460cd0f4ab227f5a7ceecc0df5 100644 GIT binary patch literal 39 rcmZQRt>9AB{N8^j0~j#LFf%Y5I#_FRxxO=IeJum4v8jofF#`ht=e7#r literal 17 VcmZQRt>9AB{N8^j0~j#w0{}A?1l|Au diff --git a/.gradle/7.3.3/fileHashes/fileHashes.bin b/.gradle/7.3.3/fileHashes/fileHashes.bin index 446b3c84b965e5a104751f9fd86289abc84b396d..1b741850febb9f9b6695ce4515cdca1e2e3523dd 100644 GIT binary patch delta 611 zcmbQghVl7Y#tkMCjNY3~B?1@)=6mkSKku-&n*j{Mwr;MKEM(-bG`e!jbVD&zuzB-S zDGO!|H-jVoiQi}ZhKkDnhk}TC%NAZZy+aNv9ynQ4?h+HbUhF)R2k zbE%fkVKH4Tn_-Nn zFow7^Ql8d%3>^MDtu^{Cc0-F>0a@O$HvxgqCr3{)1Eqguzg9B2@l z1N)z@*GUwTQ&!Htux>iLnlP#k-Yu9qDo<{`$fM#KEHjJcjHTxWb%-k!%OH+qU|fT# fh3~3|#mR&7>TWweD}P?GbSA_SShz9o1?d0)%IL$( delta 336 zcmaF9mT~?X#tkMCjP9FFB?1^X&y~z%+$<-p&pf$S?i3T-&W(yc#5Wow2yS-t&|_9e zDbgK~}3DFfcIoZ*#nPfB_6RA}05Hcd=akEpcJ8tdAaq;SXap!Wf%j zjHfV$xGz+(CyY@IW2}WS?!y>@eo)2EFh(hivD{D34rDvTIjqNkw4O1L&;(*d5Ef9K zb$iOSx%#Va-4k6N^y-BK$OG2|qAY-tKp7BC0LL>LQu5xQ7&DAvt7#=O*=CxPh>)h#l(8Ai4=3d}`MDI$HmfAZR<7dg zp+TjUWHhmU&00mvraEd{QlgHrLgmLPG=40-H^GQv0OyKS}(KFZuFt8|TnR8Xy1U(r6MJ;X+S^o2ic$oW=i}AbT-5i%{`;aFNJ{ zevgSV*&8B8n13Z`CRP}PEw3YUcA%>TAl!_)uAtnl*-q+s9!*qenyy0OBiYcvb96mO zH4BBdP3;OA;?E&Syc?*@sF2=x2yw8X0b!y-Fk`lbR{E!5DYs$j0h+0&$*gdiuI564 z2?!T716vXozN5Zfxg&^v2$iEiJSi8h=ZsnpD)r1rmc3Wd>E%E&la6|NkciRE}9P$U4?EV%GUHa}1 zV?v;Yb*d03ehOwRL!i?atc_j_Mj*_;0|=hpo8q?mzb2x9+&J7ll_qnH3v~B=hU(kvN2jwu0_?kvC^oe|_>Sx?kZ0SYs`R zg)SfF#_{x>Xw?Pq(0US%ggp(E2 zNs|hCu8zXlgKjLbpPwbp55mHLYhCTSHf)My%V3kwlKb%0d1&!}!?@?ygBjTlA!8Cq*w<5(krlW*R}u>WU^oo?m^!Q2h3QPXmxEp?-|lG`T_JM%Kd@$VN%$-I|o>a zHx1fex%lkC8fNgmS1E_$UHs(rvA0d8nONgs-sK~reNC#OsnBwU;n*EO^)iy&-cDJn z;~H_dD5%~>(zF@7>hoo#n2aNhn!a}>I@T#Hu!g)dDL;?$_}B=`wD(_`q!w!sq7&~b z`oo7+uk(}Kd({1l1|S{Kli)ps7kO`=W>=0=I&OZjS)A2;24?Hl*r!M9uBABJKItfK zZ^Rn=O|$aiRZ7=&8%;xdshRo|u)6g79DDBN z0pU<5UAd@ej3$cTqcan`XHPlZsNwnf#$pZo*yL+Nx(1hS#c`PdJZ>x22s%|TV)f=h z#&vZQe*~A9w`9Kmt3yS>cNaS-*OWN2@XEumOE@+pDbV39x38SHH0v*y;vWAWvBqfa z69P+a99%W_taZ!5BMZ0gS1qe-%MEWvUf(QvIs7mpj=t&`R+)GmrpRPa)M+~Tccs=e zFRY=DTUnpH*0y|@*-sesU`nwDE36BjR07p?*%h+WlBcj4-tg?v7Q-3em`PRdtX!*$ z>wyg^m1*ZVSTrRF71dKex2I9ChW_cUH`%TSQu^#BYSJu!YX^lKBZ>O?6^<@5c^N%@ zX=}6Z!gcc1J6OJp&$#ytSar9x?b5Fb4aOQye!jmPf3zvO!KSsOm%akR8o}cnSw?08 k?}Rt8CClx3^`b%6oEx^%%lLF|e~ftsz09Rp{N?BT4@&wvVE_OC delta 158 zcmV;P0Ac_2!2$8O0kAX}5txEAd60vDTYCTi00000P{FfZ7+3+5%^5M178xLlXfGIlQkq5lYJy$lMN+ElWiq2leQ&ClNBbYlhr2hv)w090h2{3Y61>Xu_5>u Mu`tL9vq4BO6fQwJ`2YX_ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 351e95730107d578632274e4ea54d869369e1bcf..465f374b1bfd963ed72e6df82a53232b5cdb0a1e 100644 GIT binary patch literal 39 rcmZR6b-0I(m;3tx1~6dZVrF1CbntQdJ&tL|do>tXjZIC=j2RdJ>y!%e literal 17 VcmZR6b-0I(m;3tx1~6du1^_e@1YiIF diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index b23bb689011bbe063ce86b8aacee43b71c561a5a..18980d9a8c55d221a3b4d124aa27bc0aaa0f7f93 100644 GIT binary patch literal 8 PcmZQzVC?_-Vb2u+3)ut; literal 8 PcmZQzVC=to(RC&O3Bv;w diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 79a86af06cf7da7c2282b24591e4bacbb96bddfa..d1ad72943c19884bf701429867544ce6b1780945 100644 GIT binary patch literal 40745 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±2MX>;Xu}PodZK;|0zJQI2H(u^Uvyg zsmHa8Rgt4ocdUPMB$p$~3w?!0KYbvP)E3QSA*O-~0xH)+yt zZgXJBE+43oSwPT$XEZzCS{W5vZHVoATkLLpH==+eD&%ZyK<|(lNMfYq!Y10{_eaY5 zM!BZ{;N1a{a{%JH$057r*4F9~fZ%WGZ|!z|pZ4hf9GjM&N)JcLzHRpBza7Rt&iQN0?YDD3?$LKI=K$mnFUsE22anQ@ zuL@f)$vv#?;8npPo^fDYf5@w^}krs4j#RvNh(dL^uUM&fer7t+*N{+CKqx+Hr zt?+yF`}9}99B9`oL38H&B*%RB-1e;c^5K0Bw;t5L<`C5!7_m|(4ofF^o!qqOTv%pJ z=AA>43wFQZXw+~t-g0znIXdq+qE~1gC?VMeHIte3!JswStjA~RDOYREBIXT=nly-_ z>?idc(R+@*KeGWC3QvNm0EYrcziY}rJhAd^pus{_MeEE)4$;Jc2HywHpXnksfDC6L zt|_Uu>o32ko9hv=;`1Q-kwbjqfL~XW_bKwW-{#j>x$zETtkcKH8$WYIUpPiZ)UUt` z8xytmE(u)hS=(6>lMwu6;q9R-2F)D6JHEl+6#$pwTjazc+vOF*#Pw^Zoj4tz)WQ+B zax}^r$sA)`<3v%=^!ZlPBnK*wR|MS|+s1+X3MlH{T>fPBiO8wb&PQ=p;0LtZIl3Jj zaVJO6#SwOM^uKe69uACnsX?iK({IzRug8&+=v$@tcRI}RnS7>~qua+3{{a8P5e{&6 zd;x6f-$$E5cDY6z*`E8oZP!XUeTM2M>1JTtgfETB=b1y5mkRpO`{~n14|2pq9L*N! z1cUXf>i5t#1*CnwqBrBV;PQ-L9HS-{O!i**wsKaGPoLdbxoB2>`og;39KxAPoZ&)g z9E9E^GY|%be%QGD<(ef|KtE;Z1RbKr5t7B|*Z7y@gaa^5vu5JQX9K?=hx*&;MiVF;Tm)CCQYi@K>@CQnz$3`1} zNaBiKFRDO^!1S2K+(@n>EILCLJl zYe~O3`r6sUmzVBt{x=TEa3^x?Atry@I3GMnl5x%xlpFX;H;Qd^d_&-CX@&A({9-Y&oNfGd8;H7w!^ zi@Cx_+#Qd(k`l)M5*cH>@8sGy(Kl?zrlFdb4Xk{=lyEglxf)Q2k)AGWm0f{&hm)1( zZJ(oS+LK0=aRI%9&9h51yiaz|cUkk~%EOhmtJQ1FBI`bTKh)YzGrdUM^)zU;=48(7bK3+b0D7USJD=3_Hy5uF-D1r`-z;u*&|EYT8 z@LgLDOnHP4>wd)*zvdd1GroeKyZN$r+|lAyxuTd)kDuOIkyOov3vRHb{ps_Yzx%|; z4;I~dT+l5odc)PsrPhEVz=+Bpp!U68Y`U*MbNI9Dz=YIo&9mNeHEX#>@3_J`uB0Ax zfxJ`!hH~k$pqpM75fL%+=|hLf7ftKAqW4_An;dfZiFx7N-*H6Oxygp_A2ql(CN^+& z8@YleF7W~E4fzN}Q)3fn#mOD^?6NyGF#EW0WMWd2k3-ZpO4jAip{JX<#5Ztvf8f}~ zD>nc2*CflQvAXGH@6BFbY2j+Nas_Q*6v%6KHTw-4zi;6<*k5x|A$9t&yC`7!n0BsS z2Uq_CwG(KARMzUSNwx3&Y+P!YGn3`D{Io-U<$2V_vs5Bt)D9#;LiF9 z)`kv(7#!7CT@~c@7JNiXVaYhN4$1w>SI3j9u1^@^62G`GSNR*`6V{$xVun$_AAPoBt&XLN<(&7-&~Wj;KLpCe45!9=YM^nUTQV?oXi*kdMT z>!OAhuH6=29z=TB+GAMn?8Zja%A-~L`#ME&svnQ==fRb>03OB1#7QMHu{Sew3Itj~ z0yZlA&4nK^h6|eyZ{GQ}Onl+n#{lR~jqRLxtnHGO_u@&%=GB&`p5^HV@phbppPY0~ zFb^6ZR`#+GAWCYBkDoB?<0e^NsKO*}RrSKXze*6i>UqEZuKg=#eJ#H1llaSe)p;Hf z%7b(uj7JG1FLwP8Zvko@%=yowTF=)ln#x*6uY1zo!NJeGNiD2vDYx48Wn!I@l9}=e z!N*q)n>caF#Nj;6J8UwZ>qoy_Hus?Zbl)Y1+@@WewDcm6h~Pnh zQYSs-dJ%gRVJAlH^i4skQoM*rU^Pz|&4U4O7vwkTexF&MA1z3%I*scn)_>f3Bj^$j z!YUBflruTOz4Ub3mCYW}IjbH`h~W{jqyk(9F_2wWm`7JY?;DJ%O(~e?P zaDkRQ8`C4XdwFvrnVa+675q6@cti@1NaaBak_OVVCJP6^6ybUUY+E+$(&S+wCi?Qh z5kLE4zUyD*3G*50u;(8H2u8@J)6ZnSt+j6Q9_HFPqR?|y29L<(0hp4-qxi!xr`(pj zXb$cI7OTj+OZ{tsgURsMN3F_qH)Uk=MAvwRIXp=K^Eyd7Y?=!y;{?Yh6H=znJNbvK z*qD}q0|d{1YHJ=(=LS!s8%d`El0SK^tgp9C7Hd^+FnQ!Z6KihrM7Mb2+dQp&p0I!? zYC!Ah@97QnGO|tOGQ4;GwSkb*O%3-Q>ieXd3wgSCc;dS}!9AYteV$Pqat-A42bHxb z2foK+iKn&dBM}KEJX5yv#@Q)oHBaXaPq&5#cQbFI_rV$Bx7r8$W4=E%65o8{Q6gOa<1OeUNsn43 zlqz27oTed8-NfBujTug7-tnMF07@e!-J;#M%$=KPMYg5ZG0(DG~>-I_nL=?(y$s zMaTSkc*U^l{ER)9F6=Vr1?Pu~{66wvlG`tAm^NDWb9lR(-^KS=)@dKJDh&8aiWErp?kgON|DF})_sBRSf9w3E%{<~8 z2#?mnqXdxGJK+u`dBs9)fNj=xM27Rt^C_L9Z(ha^#kBH>HXdX)r5spDCu91#pKFJb z_UjDIXa4-Ss-35oOYH#a018lNXqrwF-=1`cFWVc>Y3Z1mc&n2~bnyV9ZzZ9O37MJI zdf$9IUQE>Z*tVwnemBpkg9bUml^r+Ims{6s{Wz_X$4nZ#@HbBiPn|KiC3gm+cv>p$mMvL~Pos#w`i5tSOznSW zt*vA9{bu1Iub!RxE3-3kFwgPI-sbWVE|}OA)5v4H!CP|mfTA%TGDe=$7#y~ZVNbVs zCKxBu^wmi%} zi@|_p5cZ#oj${bLWus;_6*!(#r1ym!eQxb$dJfZaX9Q!QcYprf0KDXv+vLB?ork+* z9o}>3y3Oqnj5v=$im29$o+A&hpZT~x=l+&ri=qARj)!8RFicRzQunL)>!$2Ccq;y9 zyzfDu1uf$ZE?`7B2HK~V+uj+W`X`110v5NU-9*v1EVZs<4s-d+MCv^i*VH z2G=m54-yL3`SD>r3qvc4emxlW&-CYWPGnGWF!6Ovvx`G&VKr(JG1#%gfVSAv#CXbu zmARNG4>P)f>EFbJPC3XejJ)vrXP&h++w=T7x7^0c^CBEb{7-f!wl|Yk`USh-~dEKD_I~7&hz5IJLzuj z%l^v6F%SP{RaHI2L`9ge7}E)ZOC0LvgiYjOF4EyFh0%z1=~A7h4>StX>I zS<3)sfongeIpt|fB)NpH_U^o{vg$A@P7IVi`yNOgVSQ6r@NGf4vJ?Zz4Jdo7QJ+xL zoiX;K{SCV@^LOW#Vd5v4;4w1@T1AFy$Fw`%Jd<(hQP2JZ%FSI*F`^uUBIqtzbKO+w z&*y0!?XUUjAsc>L^KAtteufF2V_GjTT~B5@Cxes8f$CVNV54*<^JlnI#LSgertDvp zm~Is&eu)W+xqo7^Q>N#pp^eLY4=*fo{B^=`?ki0E8q>c*jRgW$gxuk*xholZy*grI z!XXx=8YA9dkX!w+p@D+msb427IrXt{{sHUgH8q&{EhenRw!Oo2(`j{J=TPNBiv;eD z)Pp!|tU!Fm_`+|y7|Uj6&JWMLkh<&KYSw$qD4(p@T89;QOcFp6pVd8ddOEF^r zP!_u-%epjOc6+3MIT2#M0*-N&m(ru_oI16r8h@Ts{VmN>lKC`CtYmOnwwp^%63Wuy>;KY3H=x`fB~ZV z6OIdam*8@&+!T)MRuGX>8uI8w;*t6av)4Di4`QMr%;*PWh5 zvE)>8Z|bokO3EciXFdSDu*7nmWw}cw{jW|Qm}z$8Ha_7DpK#$5u6$^@-u{EC#-tT) za>2u>`bn<>*4O`xapQ}^sP25gEXiAf-?X(SQYWr4*fWqV(ocNH|AycZMDfNIcABR} ziocbK`0z&_e32*L(3j=Kheno#66|z%{hs+T7Q#-NOf|Hu$zS2k7yIzVS83#3hs~h_ zZal$?E%T(JkKK#B%YFG`Kfb`9zb%Lwz^8bq|1~Nys2KtrK~(QB-a#l=7TKDX1oFja z`9?u}{d0U_Fkg^KO9U2ovB-v|cAChUlb&I=)#~bT56#S^5WeUNCcCL;`HFT^N z97~Jw4lN&c+3igfUogmw=2QIt*HnNMZ_Bv8#)6&QUuH`NwilmViCp3nF?=wRSU!1^ zg2e4f{q2tZXIavY`LkrFy`ltT`q9gLB92eQ^8q+X0FGM%9LWoOqWHlfFQ-M&+fP zFE!y9x}V!>Fy%$kJ-*~4^*%^QWhXaPncL!-4bi{StRp6djyFt7zq(-m1HQ-?gN<&S z#4JPh-R}RiA}g_DezC?wzPN}lyh8PXGg1R;&Mxz}a;=C^hHg#Wo!ZC2*V`c9PIj*k zdp^>;@NIa7PBCBnh%b1=Aocp;B4(^^+()AmQxf;Bd@$DOF<)H5mz46wciBz64?IW) zLh7@<+EXWVUvcFYC0Aya@pYf@#ZUQya=x&FFASi=KR!UFeK2K-om%ktU57}!;(DQU z^Q#eyp7Dw2e24%q;7BlO28SY*Zql8s>G#Sv?mxS6<35g^LBr@iy`QHNjXlO#qB*FEJtk6)EeAC!5_|8x#+E2mLE1cf{MATi0h@3-EpyVhOz$Ne?Wp55E**)y}}*|eO~z1#fi zPPY0`LZMRiQVF*#ZJX{JTSnE}-}-U7;cwhQ8#;4~l;HmZsvD8`Ti2J{t(TcrpW0Ji z5!Ccb35IompZASz(QpUiH&5}tw_hJq1r{seu~CT<+4Q_A!Y;%fIW+59taLe>v2SZZ zpLW-#Ql+X4cDSTmi7$#f@goE{3Zbn2cB2;UxIJ&2=ZWVX>=$`wDwLW^<-FHQqbjB0 zDUpj36A(DK`>1R6^`Dkso4jw=OL#A~pjxSZqco^dg5v^gdS<;%}3^!R&6U-G*`fs^X^91KC!Bk%v~}5qGDs zVoXbIIgu7|x%7iqN~6-)1*HAtgm+g520yH5_Q*K2*U&=&5@##w&g~kGcFweP^ZcnzscBbg-Ye&I zD2+Omh5`KEPJ$9RHYL~V)xm8#M~JADyuBAcC{-VUOzqyj6&p#6mX3Do3>tROj2Qc~ z{qvPex|Hf}<-D^Zyff9Ihjy9YM0J82W;-n=1+Gh$sI1>SrO_}#GLm$ zYXY6d{t58)5-Rh^2wv=vJUwvN!z^)j#)65b2}2t~{|uqFg~|wUS_Z-h@Jt56-^6~` zHcfO}D(oYX)y;oSZ?Geb?1?$&h}jOr!g9VNfvxzk+IM3G|2zRF;GTnUVvw&r`jMMo zZ!S0KOdM(8*S5=vP+fq|@Gla`W;6Efw+W^b24tqir)7+fNZ%6Tr(11xL;{}dZ9Lru68a!LD7UR!mu^rw4#clKgg zs>qelxPePNVqO3rE5}Vpf!(Dy+_PqVRvYZQ`|-t*Cszr5cS7HTFskE!(spKS>RY&? z{oVA8^REsbeV^@pjZk?KAUf4DWOMufc4&^W;MRJ*+m^l~&iD5sG}nm*p5hXar?gxg zzO}O1(#+|YCvm+tBkKmCx{0UC8^#14(%}OIdf1|)Rs>vL(%+dnzVDF1&zo-%pgaP6 z)*81poONg1OHQ|RaR;YH`VeYI%&?E^JBeI_`t9W#R&JV~q9?db==&02n1|{A$PYgo zaS(68qO!?|}{r2@)L4+olm>ELA3n*`{I~X_oI!`z|I(gfd@IVJsBeTUGG z;zEtd4+ST~7gk={U3O=^@rdtsh7yY^6eUWMys&ytuzbe>m*JI(fj7hR!U(k;78i#R zhgO~U5)KM^9A5CKufdvd!XScJbeC9oj{vuEk$ANn)~>-GqkVE@!t3wb%iPax*|^Fh zQ#Sc#rhwFcmHw66&ExNLhctT5b((Y`idY;?7{m~&SOPQ(aj<|e_0hTlQ+&WqWlZW{ z95au(Np7F}+b<7J%&m$i)CmL_kZW%@Z}p?LZ&)fm;nA2n zI=92Q&xuuMf3~=tp|eAMAr~x}2k*agLVf=jyJth-I;)!zNrdVF0owUwSbZRv+qGfs zz73EwG-Hp=UFE*6{xbU?$9yzgkwO@S^L! zpvTejHZA)HR+CO@6RR&5UQm{ue%rty9l8$67VN(?IqKM}uq_K$H9jKLS%kr3Voo+; z@Pt^DL#T3L9pksXSdG)n(+)=HmZqu$t5Y`4d^mFTy~={DJYwcOPOXGow|h+ATmEZb z4d`mKzwyOzkEev{83Bjla{|BQIt2X%*4lpLvcw^+y8CZb2t(%O6RH9N^e!(5bPjYA zpaM8>1XRQLZUm`oJnc;n?b0{exqL%ZgwwI`LPGPBSeVMi9wag^#`^6VeAnUGolyH6 z-@ZqSKzC2fe95a*nvnGd<}ZGB7!*7?`+?s!=I3d}grZ<`zaq|_8})`z)evyket?%o^0(Z=D`S;~4qv}pHgv_r zW3`0pEdi(BdCU&ly+6`u>v$1__#V}MdGEvO2zdMmc=1mqcdz%4&L5TVg|YblB)XnZ zHxLVR#TW6$eq0whbS_n%Sn9qgpwEaK8I6Rdi7@hkRbxWNi@vdR8_A~WADb|De_-a@ z01oMsbZqswL*suxOgmWLB=wFp6Z6V>Ysgqr%d}~!4qwOwJMxaL5qGo@s&}|Ytw0eE ztlhsITH*eO!I{IlKYp?4+u4ox&BKqi5uiDJtstetF4y~oCbjhWtvvs6`r?dsLj9gt z)Ik8Z-w9)fJ)`2sStSx^>?X&hhq|Y@rKDc#TWN1dO!`28-4~SI`TfvQGxN5t?D$xm zWZq%h@sTjTgk_H@U);E3DJ+@y;>po3H$GsSy9iY`-e%gPYT=)=qwd;Fo_f)G+OP9I zemU$UsWBzzKGNPWHyErP!1JS)=346u1nM=#W~9oT1jURt;}&})v^aBmP`aaSIOl-Z zRSQyMNzQSQSQGGMJ9^6R#n(;muQYjdDl~V*Yb#QHiZrq&7aloHf+?i--349>W>|(L z8{yP`Bru+Nm^7-UY2mBvP%hbblAX(pkP9V}jlSEQtB1a|A&t(EK%?Gp(|BZDlKsoE z6&*ijAMZYDa_4xMEvY(7g7nr8FO7{FpYXole_VBR!=KwH`bV&Kq{^OzDL6-hY42`q z&@inq+P5R}wq{#@>4jhWEZOcrE^s74i+G*{7j;;>vEKLRIfhJhe1k>L0gjNV-!V~@24l>Ylx*IkjFhH@LlmVG0hljt(3 zA0q~3cB|?Sr&*=7zZscc2);ScVYw@*awFkNdxZp7KKphb*bUZ`ko`n-#HjM=dEa%` z9`VoIKl<5KQteK{8qmJ4Sys2=!_`IIfADrJNw6$lKzoqtYox}LTu{Od6b4}d*|%kH z%Ujz_wyH|ks@`!mA_4WN{yqiA1S#xls9vMJt z0%0~uP<=d?+yMHz#YJF#ZGM?&-m~=VqK*Z7gGqG=X>f=9r9#{z;U&{L`n@ksTc3S$ zgXbu}$;Ppvq+uAT|5B#qf}}fswez*w+@;GKx$fiXy6?hCO$52^I50@HF<>r5yuTo*OhSid09FhPGm@TqLMy zY2%Um4~|Ja$0rKRXI_XQ)v=^e9BFVQ9%dZ~E6_CUBL1d)czjBAT4vnG4SD-K_s&Zo zRrg8QmWkviADh_qruwA;FMR zdm5!mY2%?ACdK|3>NZ({oU0#_s#Fq89g_)|h*&@w^JWs_Za2g(Jbw!Q7T*giUPYc{F(gq)W{ z!sAzLYCnPefi|ADsXI*9uV9m1tFBdQE@^a10av=WEAQOg*njKyyKY*&jrnd^U>@vL zQgt0PT2N|*?%P`v_aAs<{r#VP?IQiRJ|p4&3Y*3jR7YSPvkN<`BwJE6UIUI#skxmDNz-=sUjf!O2LsC@xulrY)1Y zRW# z=8IR~?zgNnQJp$&p}XBrL?x+yO~P&BniRH6ctDeNt`%?W?<-6fEj_bkbQP&S4CoU} zzJIsTrzL#v!L)H!o1)iOlWIH6n^c{AmKpJ88ERV*Gx$#J+ zc2c(cFM9X)U*6U%BlAV0`o;;m5<9}|?}c13v8f{$)syoZNc}WUjii~|!X+O`3|55H zG=1|nV)j#kf#na4q^5~9Y9_%f%U|XIq66}mt(OCSIF>-9pjuFe( z*~Be7HJ&%>(Y_AS*h&P4Sx{{EWJj;3I#$eix_mruS|_RbKpK{7pFcJ%jGAteYU{Qz zeM9WfC*y63#N-V(r#zLz@n!o9QM}E9b7Mb}>Mn9_H@WyEwcrD8b@LZ*}w@SD8|3GfMNG=Z~c&H{Mtc`(qpDhuCjRw%QN;X{tG;vYH56G>Gfz_s(l|C0 z=oI&Xx5$k<;5oSWK8K>p!g1ZxC+a?28}cHjQ%0txMiy=#%H~E~dFSwB*XmhkD3vV* z28L%LBlus(55r-0)3_$v%m!J+XL=pme|+IqJ3C5cPk}#|1WbA(h~0L9#_GV9_6=jV z%s#jH9Hnx=P1oL^#_D_*n)&51cOT1*F@}a52S*AXP(mgF{{^`%Lh$ZI)aeu6LB9<> zPpO*yuYX|0 z$4~3VObA8U(&WomDYZLgnAf8lG@tPGlX`*d^qBd-<_=jRJ>x-{T%+bR@;#wDyWqkC z8krV8>5}-%dA{e2&Z8~&jjwrI`gu`C*QxpEh#T-1gM$ZpuFeKO4LTUd?&UStwp5w~ zr`z77)ZUcAEo#0G1-9BnidPD)TJHXe`NK*S%MZqv9c8wqd+6B+$<6P&rZdrNNQ+VL zrhdKALLj9Hq6~v6 zy%0+84rN#cVw)auq6yhBeb2Dr_JipGkH;)ob3i{Jlv0OL>cdwsk!iN*kUjWy>bM1C z99EMLy}H6FO$0UbE(Ip@cR4dmNdMveQ)+5D54;fh+#U1a_&4_`btJX;tSA+)`JFcX z!d*=VUS2u#>3VDNje$|HYOt};Joi%-DLI0b5xSejh5a5oL{p0!_^@4PrtJ>w4xc^K zzsZ*jyB=a5L%~a2NMCO=29NX+VA@y}E1s>MoU_`YKN6FaZ`X2}UbYuGo z$C*=_jTB$RQw9l?=02r~Ay%ggK5)pH_necQE2Dn1xJ7xY!@bWZQpQP?-YL!l3hc+% zV~2}C6NV|>iUu$8nZ9Z5kn0Qg)F_fEqZDfKLrRrO!7FrlE(CldOf?wRVXsZ3@a4jp ziFvVa$t=;ZImxbnq*Iy<3fz}sv$m4f=}A%5U-7EMXw0wvoBL%_nn#r0eZDi?j=pJ+28*T)fwdR#kZAre1U&&K_eos?ArBu%- zIB>KZRUm#)ZqolQxpIf+Hy$&_$32JrO@XXXOMr6suU$|&eQjp^;;`}nm8o+9rFuaD z>s3f0%S{_M;tO%gg&pgBcf3!TF(kcWO6@`PlF}4W2Cpb12MKmuX+m1a>|I^{__@(h zTDp2ba`+F$l)8kP`v6|HL(_`&PZ*y6+3V38gJqu6KO|L_QVYu{RXGKADHRkr7J&V^ z13x)dR8ru~`%?f|=jYR|H{O`uI_+l6Yonlw*PgE_O%-KOO&PtRz=>LqPRWE^F(K*7 zgt243a_26MX*l4zzJ^lQQmSKk4T{q9d2hb78GNffMsJ=)`t-Myst)(89+uDkogis~ zuBDsZ+%d~NIL&|T)%|5bBltFy|+G7pPf)Jyqp=46II?psXHmK(eT2P zyz0BPmv(RZnp3r4HZSY!!xbN>#UCl7a()*~6}H`meYEXWpQ9~`fc|55NN=LuiyG?rXS?caIcJHwRLn9&Q(X_G`@8`(~R#l`f-x1*94=#2cJ z-V{@|@>>gfjwNkmMH`%=jhi_=6b4SD9hWD>=R6#xIvjjz>5!sPzqts>qb@toN@^uL zss;`yJJ$7Wnl-IHO&i|%R_gN>|UvX{K#sfaI z<~F_99H=-vdV4i`$*v6#-IrwzbBef>;^s@M{b=x*rG45{HLqqId)4Yg{RE>_s~=9d z`_t+Qajk&7BdsaEm;GSiPj_eaZJxMhQ~<3Bqz#)%e5QBUJ-wG!T;t|2lu)hPSM@B2 zhI=p!z?KP%Bm9p&eioI7UWPB+_aK=*13_CLwl)WI~?V<9K6cjdkSG`^LX^419Vwo>nK&hWBZ` zL|QM2HoPP3J#1mDpHP1ij)TTX-H*kgS4-E6A3*o7>ne3afIpYUs)0!tV*jnI6=xtv&y={Fw z&&4*qL3~NT6Xwvr1j+Vg2m0j>9fHYuc4 zFKKvm+{_0zrg#dU&3|@qF#p}JzqP3S2L-N;EuuBAXoDsxK8B|aPC>`LCQNu`kiIu` zbNZlS8lDM5t$X|LF4!V6`|+2KE2Y^{8(d3hbtyfwj0S^uEGvg0IeDqoCi$RImff78 z^klZct(?|W&>#so2}8YSx5>QfS8D&vS)qyB(+z9VWaQBP7nH?)`b^nuT)FPPl37?u z8;4=H{TDdw*3rVr(+53X5t0^Sn*EwqSJ4L5wDB8yNeMSf7A=dx2Dp8vrWB@qsl1`N z@%(B^<>RF_w5k?Uq_;pJKqI96Srit!8k)^9*d?q!+%RG(#hJ0}VjZonrx)ClUc*wG zRL{!o>4TnjE;_NtRKLZksDV~B(x5_bqTwYym}+g@jUCZLDMO8ZyR~HJ^QrRl_k9fo z%dMMfRSOM9Q`(b}P{y=L!;x7Bhv>eXR zkxRZd|NY{cpcS)y-p>XLF4~}*Haf|uOc|9KqcUeyQVXWX+wzVbTerDMz_XMk0~X+5 z0b<2~$0=+<3m4Y(FHdwIT{g&a_8&p@!^`61PBHq{jL~VvB$nGFlOn|#9$#i;n2ucF zk@f44mG!%981)&(-~&A0!{e?ut?%5Gt5KO_YDnD7B?~QtMlrM7v8_g!#XWvEy! zO|fN+l9eEV$Q}J?e0q)V(C?0x^*MI3>beh?L@I|7P1hFQ-DHcHUydF5_AH~ZV>I>* zJfFecG$8}Z5_SyfKVV&M%afgpK9o&7$EX|_&>lHL*LtTFhHHMN$LO^JC##F6cD9IS z)Fz*2G)|1c1!j&p-23n{UUnq*^~X~yMqilgm9TE%&+{)bOPm=n(7(ihyX5`gV8aE5 zWGy&b0RMsH1;?2(aTW7bB3Z06w(|ay%Z$pE0sc|T<^BBR=r3*Ty~Z8f=Iepy93Hqa z@Z1-gux7Q{xPdFGmlzMbG`uc_mvMzrhvGHWG@osO`;V)9#a>;FxIc9j(qsO8?(uT7 z{Fu(^!y4PC7kf@T;?Ahw$vtp$@V}49`qOu-JIAD^78x&}K5o^XXV(~b=ndHhkFD)9 zP2gj6{PZFtoq~xPPe$#IMT;;wFR6Y=Zw# z?OcnUz2e3`onbrrVROXgu`}F?HM0x68PzQY&Ql*4R?zQjxpPPszEa+5yJ7akqn@W$ zj@exJ+igbU%Yf5@7och2$1L#itG~lB@xF6LIInAkAEWYz#V6Am-`YsV?@iL%Cv%Az z7c^b7rC$J}4rGkI=@KmBPuVHxO5xI`>p;3@s=F&TtVLu)$)4-eUpSIu3Vft zFo;nFGvI!<922&D;{{ba1xD+Ab=fC8M_Ip& z2u5?4S&%Elwr{g09lE^y_eP~&eX-!<;Fdf07*!;+L=pvC2md$&+H?4^-}1oMsfEq6 zUcC946Pp#y7)8*qzWGy_Gp5s;mP8FJpV|0sWJ?UAiDmRpiSU(#EQozG`2cB693ap~D4#^3>? zNoHop5UaE|GSW!j-D#))lI+ow2>J zYWqW{*v%GOCJwl^!SYG6`%AY}W=RDv4O0UAmH-|&>}JbSqkf#eX211YqkALX=A|>5 z48}N5U&;ADTDi5u?ds7C&Yd*$Ttt;lNxNI*fC;K5ch% zN!;;Rk6HIuXETOR82uc^=p;9n0apt959Be(Y~xb~j0D$fz3xLlcZvh^pD(1&9^SNE zvgiBc7ta{Ya|Zks;%&QW_ip94?fstb-aTrP{@q6p^BGM6WBh^vpRg4o+$ll+_oLct zmR~*d@LJ`tQ_Id4GKMc1<3f;6fl}V=@sIDmP4qhYMa973$7bxGUnV9u2kw8(y%4n} zVB>_=Vz-soix|}_2L9@xHH+}ea4JuIWAF6w_0|IkCBxWaMqR>yarRYwz|1;*-!A*w zfp6C28vOQ^{g+2d8Fd*@E3Q^#;`IHLshtNlUwfW&?Ukqe?#gmTUBPH78DlqK!Tm9V z5KH{hul)Ff!rK#N1NJw}`sp>JsbXeUGX`%M^(j&By9$z9dT~VB>_^{qEN{G<9kbo3 zhEdltMsJz*%39ha;QW?%@T+0p2hvo> zuW6164UDFdF^H4kp?uA>wp@HIvkaX+)Zya~TXLEh5M4II;=`{W_mj82@m)Je?~x+5 zX+nZw`|G9_X5KpnJaiM_oX+5qnZxkbIm_(2M1tie#|>K5}{Ij|V4d*tkFnJG06XsF}jeRzMp~15b zv!^cx)P-g@cQ8izcn9qbl{^rC`9tTlkoY87P^v>Gqxrz-b!yF| zRhV4ZA04;flvSCrK&iZOQ(g@`baITw_8K>zavZE~cQR*<@8dVcmVJ-7Hp`ky9X(m& z+LxOLh6u>xMvp5O`SQx={V?zF>(Bu$7OcjS)mX85r`Va+EEvD`THnIUCO5&6bu5uN z@X;0b#*m#aPP3pfh1wi`G8s6CuRfwTr6TkF*LxP);C2B1=FR#o^*I~d16!_1zH0N@ zc7_FmX26dvj#eItx1DUdc;d0P5!VS@R(+P8W5*iVvmg`gc{dA-i_0h*rcGEysK(c4 zPnxDT_#CTpU_s-l?f$oQ%A@b(RbOOhI8i``hT$iu29C~=MB{DT7)Nej+3jOZx#fBEDJtGdbp<<%-E`c)emxRo0b7Ik~S z$(~xrac9*Ytid&Q$qVodt(El6m~h3;b>f-RH-38El~ly?Jy|1g+{Ys$Q&Sa1=Wfky zsxD60wf>2B3%U^P zdF!0p?})?mQ-O=>y|eY#MXm~A)puBZH?9Si-sF~zwAk)EH~pw_;I}M-RiDS_`HdxuzWDLp@ZodWejlorAJ)3M-M16urV29|g+6HM|v|G6<88rY#%PrunxVQDPB+NkgkwnhxuvUdNF9xvw`&f>x> zIj9_0n98xHpz<2{=4K1-N{|!8!r*zb=mP$-62TC8!k5sCcU>GHcq<6wWD3xAz=*7= z3!+qLdWaxMkS##ofcxAnUkGs?h*1!RP+J(zQNwW+6o?9$FjhM;bx^ComicRdV|Xb1 z-@SvMBddD;3Z?q=ODGI~*!GVuH9$f94$?|wDT_yMyZHAw)na?;IeE7@L=j7UpkQ5nz$w!i^a4_Hi-=SaD&wJ`o-5}N@b(I7 zLAb^b`TTdqAtT@+?ZJ)zXw)0X+&iHyxXN7keWMZ}EcI3#eo3Jk*hGE3cqgT4vg_h1 zGMuO;12`RI8{Zi^5G`;K7RfE>(}Wj!iU|<73M?V-CHPMXADY#`?-rrc@FnusF40)I zC#zki=K#ma1UW9Qs~8Mi0QR=y416Dnka-bBbUE!u_$Yi8K}4b~RN*Jgl(mTygpFj9 z(1Y_-mLYs1Oi^@_wvrTXmF%gaK+z^kBm5=KR1r}~6cb?*Q;|2XU3iu`&(tXziD=1f zDv%1N-tclHF`{%T6Bd1gBw2KlY?hqncSu5*2*zG{T8X!YFaI@_z;B>Z`IVxZ%1pVd z)J0mzPhrxTM~s>HvD{s1A-<#R=09Wd8B^Lu;4Elh(xn096KOb^qXdQZt1Q zZK+5U1kl0s2WgY?fw)bXDvqWL$pV3!%u|+3w+d3}Y}%E`5+nP+jlm@t9~jvH0VWYZ z9IAr6@u9pEulX+=v)) z67!zpPsdYN#Fhj~gyQ)AN>AprqJ>0BIP@3gZIi;Vv`SmV$R9Tfwq-KJi)~>+n<>I1 z$#k3alp;xp9s;&^`qJT>6CglAI7f&8MFAAz!D{0dE7D{zT=_V~Z3g+{^U<1vVsXlM zG)e^cx$a~EivBmL`=1Fpex~{l+ENUa2=B{632Um2(5|L?xH?!r4{>#_1gd}(T9W9b zv=pIg+$h)wwHOu=C}!1r_djwlR%1O?w53lfz=Jin7n5LydOX>=N6ojJ%3!%i7`i%T<;qSn8a(t*E= zmDz$&0=83hQO3c&LfV!_c3D>Ts#iG%AGf-?`DEo)YRr zXL-P%6!(PA@}qqqx>$GpRf4MO(p<6To@SccRTCs1;Hv zpGf^hcu-^Icu4Vp_6}zVgW4g5wzb;QO+}xVl_h-R?P-l+61Zg{a zX(2Fxy|LPxQ3hbSw+MF`%E9rW@PZlQIT0)>z+u?rB^c&2C=_l2utFk~u$3wS2eW|* z0&Jx^oZ>l*4M4_UluOz&(M$)EuEY#sg)m2vD5{s@RpP|67KQ?g2&=^g*Yc4>Z8&e8 z0y#jK+azn2p-zmsqD0*QMZshZ$BXAGuo8h&HUTmd|9ur$;Lu-N(+WbIbnx{FP+3B^ z2w%yrQsGi7c@E599c{yOa32v)bSQ{JamscfN`e|>iK0THkw{Wz%Dj2mbelMZn#O;zM z!i^Mv6^QN-C>*|eS5Opub1W6e1M+{~&(|Tuft}@zp)D{wkV+6rT~^$n4+Svj5MVuk z^x?d~(1k#%KF#ucpcfr-OHrv9vtJ!#1N>UhnNucCq>AMD3Q#3H#b8Q;F99eFc8U=t7|{&r5)Ep%lI?6UB{&6@;FV|M}2Ozy;qIqXz*0%@IDtl@(JrrHQ;( z;P@J)LiqEb6++d$!&>y;E6#$#db8)iH@BX+s6bC~6&+NFJYG@EpaKYSoGBCqyGe3V znjygS5Ys{@I+6?f|0TqWuJMb+_%hJI{U`ytQHt}xh`+}0G#^#sS#y`7Y8>w3qeg&= zSXqH6Tw2HkD?Spwbk9XCjLnllnN^UU8$;GGs2Nhij`8BP;_G!a;FT^^j<`U4kLr-0 z5#hrYAH-eCHgJ8HOQARaeGuwlQ^AF`PK4T^GGQ+HH}ORmZZL2h%`!;yjt{(c9qtN{ zT{8(_aztS?GKVirSQ{bc^UQeQ#a2pm0KxfmZ)m|efv01?W!igb2gbrsb@t}g zp7pj+=I0Gn1g!uL&zizqD@YAK;yibh$dm%;3vN3A@+|1*av(<57zgd^gcfsd0S^cz z-RIm;cq**8w-hC0fTB)ZD~?ihiY+A8k~D=m70)f;W-2@+XQ=0j>yi>hsp1^vNJUES z@-leu6;V_!FI5slom84C3nVA`O_Em06Y42dKs~42_|{Ta@=q&y{vlRlI_l4eOS(D6za`kB;~cB3n#kCk=O9OYAGp|VK%N*P3#Dm$g! zQVW@xtX_Fm)~Y-wyGLJ?og|!y2Xvz#i%zGX(btG#`Ua68^MpU5rOO`6vSkhQb6GR} zp1x1KktGoyW!1tA;-vg3kx!V)tB7-q8}o*^%+wNBnL6T<=o;fL@@B3x!J;$r7UHhR zkBJn0ATG$`MVIAWgc<2B_mKO@?=gvTThflaKxWBb$cq?P@`AXIxg@TZzmdO{`;o28 zd*&Ybk!h88Gp6im)`q<)KEo!E=h#58BkRN_lMl%|;t262HcEVjjTPsUP6{vfk|Kx= zXHhh;cSI81k~>6jQ7S!`I`hcrgLb;|+xH-^VFFN>%ue*Z(+2 zeQ=IO0{LMG3&|N4z~^P?4_F9&I`?uxM#D{%k!3#W`w#QASsB4hu2zz%^kpOB)}bAUIzrH%f?Z;`jn^fdL%Qh$qrQ z0*g-0Gah2hCDlsn6rqYXaR7ar!h(}vx<_>Kh;f&uD7yI%;5+p!WIV+4Q-Qg~mtB;Ia|832j3M0F(*gE2 zssWQ&Yw8;R7LZaqqJe{Dg+NYU;hJ2eC==5D^S)CGF>hZsA4Jz(J)D=6d6PoCJXY z-%)5Ka-!pu$P7Z9L>W3GMR)(beE;vS>cAWRQv_&@s{kI}78eDF;%lht--lui;1o~A zy=QP3--`|-?n|r5eC2HtPUHrN|4csZaY-L2Dc{#1vS*hk{nOgW0dFb00!1hJg6G;)FcBY94DkY-Zgw)s}_w*o8>Le@CmUWxAG z^yg(L9pK-m@+^+O4gJN?myetP%I+y!d6!v7sV)1FG^O0+bwVq`Ta2DS-hYqoWt4eWV`|eK=^ZM!T$(-!1+F1 zdAo2uSYCmTK;RX_aM?vPiU26C6y*t{nNuLb^_K)vAg?aN3%^u?&f_BpGRl6;3aROqfHoBeVSgaOVt0^)i{AQq=<6r&;> zkNX7rpc0%Xh(K}LG6_`P8wa%gKE?rMPs0#cnM#}%1QM??i~ynqcx|8Y-3Zlbu?$KD zELTg^GT@8uxi4fhR$_cta1%E%J@<&-8-(`mkcmtBtABYA!gt4~7~9iMXiYwZ#KGi! zaRWb!i*Hhy0%+4aTc>dIs>H^2AP@_AG;{Af|UrYVkMN(g}b} z)yw`f)$gMJbCxFDzIUK{U;si7+Wyv>_c#uOdNw$&0jxq`uk%6_{v0zQvc)(MF#5o8 z07pTb>=qZadlquQCc@vbA-1h*BCc4Zm5rwem3KYx# zpopgfM8WW9O!?H1NH6mq~mJwon$y?~Ab_%LepK=M=~j;yG0^bQ@sLp0kys z;C~+&yEYzB{pIjgrSuA)Llt?#HYuvahpsmVU4oLdi_3|JECHuXlUa&tD0jw&%$NC#oOx~hL@HWf zsnxC_H@qYpC=>!^im@CP-**1esfFU2K1h)lE;Ci8B^2R+>(j-_;+65dg;ruWak}KO zBturf!7|wjd4kfJXeOSKZ^#__B9qEwGffPNfIOdtCf>NtOd0aW5ZHte3_)fYfuS!D zZ(J*ou6sCKAV9Gg2Juh~;6XE+MWN*XzMkX$`@Two`oz6T4y+@(Oafb<39aefye;@{ z*(^pWxPO@VX^)W9|6WykPXV8J{6`S_J59)jurxvWjJycHiLRGr$lj371eWWd$IzJ1 z6+giP1-!~LNZ;GU=NQ+bK=~NgBez0@@Qqb~Wzc+XFbO$|F~&`XiXgQxhU`(jI%A4g zjPpNKqEeiqO@_)bOs3ImfZB8N9>{J`4TQK>WRn7&l_TH(BNh0^{;&A&6WIV&^{(&N zxN&A;1WW9{UIAKgKR|_74@F3#xMgBY-x@$&hfk|+0m{HipmZhXGEg(F2CfSoI1j*1 zfC4jdG0`rxRD`mq1>(6Nqhe48PMJm^a~2?Qz99lg8N%;189oG0ww-06%n6pIkY}w|FLjv@c?_u zP&Zz}w+Ud_&ER7EnN_pIA-p5CqWe=20uk{O__Jv~(53zcyTST%kUPe}CBhRRuU;Ar>I8HVmz2UqmoWsj!4-i2 zzr5!E6Y`p?cuGt~=mty|*AaL#6aYI?6=8%8xPa^+t;IcjkR{IPjh90@g?uoyhGP^%GX)C85cYo< zKprjy(ni2H_Z%N?LFgn0A;jKgRrgqvNY)^V)s1F#V_4l-RyU5-jc0WeSY4@1K77Q$ zv5IjF{Mip7&Y1hGDv{MB;Yh`z9^9`FSXDBsPGM(1WOY+n-85D=9p@h~aDZaa;GQ&J zWU#7CcHSd)VHT_V7+0`SL2c`a+mg+yp0EZvtZptlGmq7O%FcR*^DC4DshHf8X3}$3 zmCr6JV0B;MHjY$`>cI~wWK}O&y&`tzE7kzKe8#ehadRj1#LX;WRi*5#GFDU0&aPl} zD{-|e6{}XS>52dCHLI#(^$OV0J>hSwS=AeMehoXbmeqaB>ek^#{PeS8hF(wnlzLXx zz|P8H5B7u)G_tBDR@2PRZoxfP3^M7#FMh|WTG_>I?96sn_dPCTw_?Vgp1AEDtg4gM z|G*l4WOcjnD9%?bAbR3{>1I_Ybxcfk)Mh%+stFT6jrn+U9hHU7VoM!^EOyi8p0sPN zbX2EwOssWGPU|epVJZ4kT4bZ6I-@hoT1TfR9c!zjI;%6&PDj^X2O6SQ%;>@EpVLt} U=;%4>%qwR1e;Tj7cs-#13yoNPr~m)} literal 40395 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 diff --git a/src/main/java/org/jointheleague/discord_bot/DiscordBot.java b/src/main/java/org/jointheleague/discord_bot/DiscordBot.java index 435bd413..1a6378a7 100644 --- a/src/main/java/org/jointheleague/discord_bot/DiscordBot.java +++ b/src/main/java/org/jointheleague/discord_bot/DiscordBot.java @@ -4,6 +4,7 @@ import org.javacord.api.DiscordApiBuilder; import org.javacord.api.entity.intent.Intent; import org.jointheleague.features.GooBotFeatures.Calculator; +import org.jointheleague.features.GooBotFeatures.RandomWordGenerator; import org.jointheleague.features.abstract_classes.Feature; import org.jointheleague.features.GooBotFeatures.Greeting; import org.jointheleague.features.examples.second_features.HighLowGame; @@ -53,6 +54,7 @@ public void connect(boolean printInvite) { addFeature(new HighLowGame(channelName)); addFeature(new NewsApi(channelName)); addFeature(new CatFactsApi(channelName)); + addFeature(new RandomWordGenerator(channelName)); } private void addFeature(Feature feature){ diff --git a/src/main/java/org/jointheleague/features/GooBotFeatures/RandomPokemonGenerator.java b/src/main/java/org/jointheleague/features/GooBotFeatures/RandomPokemonGenerator.java deleted file mode 100644 index 1f4ea08f..00000000 --- a/src/main/java/org/jointheleague/features/GooBotFeatures/RandomPokemonGenerator.java +++ /dev/null @@ -1,65 +0,0 @@ -package org.jointheleague.features.GooBotFeatures; - -import org.javacord.api.event.message.MessageCreateEvent; -import org.jointheleague.features.abstract_classes.Feature; -import org.jointheleague.features.examples.third_features.plain_old_java_objects.cat_facts_api.CatWrapper; -import org.jointheleague.features.help_embed.plain_old_java_objects.help_embed.HelpEmbed; -import org.springframework.web.reactive.function.client.WebClient; -import reactor.core.publisher.Mono; - -//A swagger page for this very simple API can be found here: https://app.swaggerhub.com/apis-docs/whiterabbit8/meowfacts/1.0.0 -public class RandomPokemonGenerator extends Feature { - - - - // FIND A API TO USE - public final String COMMAND = "!RandomPokemonGenerator"; - - private WebClient webClient; - private static final String baseUrl = "foo"; - - public RandomPokemonGenerator(String channelName) { - super(channelName); - helpEmbed = new HelpEmbed(COMMAND, "This will grab a random pokemon of the 1025 that exist, and " + - "give the name!"); - - //build the WebClient - this.webClient = WebClient - .builder() - .baseUrl(baseUrl) - .build(); - } - - @Override - public void handle(MessageCreateEvent event) { - String messageContent = event.getMessageContent(); - if (messageContent.startsWith(COMMAND)) { - String catFact = getCatFact(); - event.getChannel().sendMessage(catFact); - } - } - - public String getCatFact() { - - //Make the request, accepting the response as a plain old java object you created - Mono catWrapperMono = webClient.get() - .retrieve() - .bodyToMono(CatWrapper.class); - - //collect the response into a plain old java object - CatWrapper catWrapper = catWrapperMono.block(); - - //get the cat fact from the response - String message = catWrapper.getData().get(0); - - //send the message - return message; - } - - public void setWebClient(WebClient webClient) { - this.webClient = webClient; - } - -} - - diff --git a/src/main/java/org/jointheleague/features/GooBotFeatures/RandomWordGenerator.java b/src/main/java/org/jointheleague/features/GooBotFeatures/RandomWordGenerator.java new file mode 100644 index 00000000..5d904678 --- /dev/null +++ b/src/main/java/org/jointheleague/features/GooBotFeatures/RandomWordGenerator.java @@ -0,0 +1,74 @@ +package org.jointheleague.features.GooBotFeatures; + +import org.javacord.api.event.message.MessageCreateEvent; +import org.jointheleague.features.abstract_classes.Feature; +import org.jointheleague.features.examples.third_features.plain_old_java_objects.cat_facts_api.CatWrapper; +import org.jointheleague.features.help_embed.plain_old_java_objects.help_embed.HelpEmbed; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; + +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.Scanner; + +//A swagger page for this very simple API can be found here: https://app.swaggerhub.com/apis-docs/whiterabbit8/meowfacts/1.0.0 +public class RandomWordGenerator extends Feature { + + + public final String COMMAND = "!CoolWord"; + + private WebClient webClient; + private static final String baseUrl = "https://random-word-api.herokuapp.com/word"; + private URL url; + + public RandomWordGenerator(String channelName) { + super(channelName); + helpEmbed = new HelpEmbed(COMMAND, "This will use an API to grab a random word from any abbreviated language" + + "you put in!"); + + //build the WebClient + + try { + url = new URL(baseUrl); + } catch (MalformedURLException e) { + System.out.println("Error of Malformed URL Exception:" + e.getStackTrace()); + } + + } + + @Override + public void handle(MessageCreateEvent event) { + String messageContent = event.getMessageContent(); + if (messageContent.startsWith(COMMAND)) { + String coolWord = getCoolWord(); + event.getChannel().sendMessage("Here is your special word: " + coolWord); + } + } + + public String getCoolWord() { + String word = "default"; + try { + URLConnection con = url.openConnection(); + InputStream is = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + Scanner s = new Scanner(is); + word = s.next(); + is.close(); + s.close(); + } catch (IOException e) { + System.out.print("Here is the error: + " + e.getStackTrace()); + } + return word; + } + + public void setWebClient(WebClient webClient) { + this.webClient = webClient; + } + +} + + diff --git a/src/main/java/org/jointheleague/features/GooBotFeatures/RandomWordWrapper.java b/src/main/java/org/jointheleague/features/GooBotFeatures/RandomWordWrapper.java new file mode 100644 index 00000000..617b8905 --- /dev/null +++ b/src/main/java/org/jointheleague/features/GooBotFeatures/RandomWordWrapper.java @@ -0,0 +1,22 @@ +package org.jointheleague.features.GooBotFeatures; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +public class RandomWordWrapper { + + @SerializedName("data") + @Expose + private List data = null; + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + +} From 5ebafcf330d281c9bbe9b7510f48e13c50ed778e Mon Sep 17 00:00:00 2001 From: zhaoyd5268 Date: Sat, 13 Jul 2024 11:27:29 -0700 Subject: [PATCH 6/9] Fix testing issue with "wanted but not invoked issue with webClientMock" for feature 3. Then your done! --- .gradle/7.3.3/checksums/checksums.lock | Bin 39 -> 17 bytes .../dependencies-accessors.lock | Bin 39 -> 17 bytes .../executionHistory/executionHistory.bin | Bin 285745 -> 373976 bytes .../executionHistory/executionHistory.lock | Bin 39 -> 17 bytes .gradle/7.3.3/fileHashes/fileHashes.bin | Bin 22247 -> 22597 bytes .gradle/7.3.3/fileHashes/fileHashes.lock | Bin 39 -> 17 bytes .../7.3.3/fileHashes/resourceHashesCache.bin | Bin 24821 -> 26351 bytes .../buildOutputCleanup.lock | Bin 39 -> 17 bytes .gradle/file-system.probe | Bin 8 -> 8 bytes ...e.features.GooBotTests.CalculatorTest.html | 253 ------------------ build/reports/tests/test/index.html | 26 +- ...rg.jointheleague.features.GooBotTests.html | 20 +- build/test-results/test/binary/results.bin | Bin 10103 -> 9988 bytes .../compileJava/previous-compilation-data.bin | Bin 40745 -> 40745 bytes .../previous-compilation-data.bin | Bin 43846 -> 44065 bytes .../features/GooBotFeatures/Calculator.java | 29 +- .../GooBotFeatures/RandomWordGenerator.java | 6 +- .../GooBotFeatures/RandomWordWrapper.java | 1 + .../features/GooBotTests/CalculatorTest.java | 9 + .../RandomWordGeneratorApiTest.java | 153 +++++++++++ 20 files changed, 207 insertions(+), 290 deletions(-) delete mode 100644 build/reports/tests/test/classes/org.jointheleague.features.GooBotTests.CalculatorTest.html create mode 100644 src/test/java/org/jointheleague/features/GooBotTests/RandomWordGeneratorApiTest.java diff --git a/.gradle/7.3.3/checksums/checksums.lock b/.gradle/7.3.3/checksums/checksums.lock index b0b0d9092d214eaba898a385139d482c4fa4d298..68f7ab5fbb4c7c3eaaae9521882ecbc678f4afb0 100644 GIT binary patch literal 17 ScmZSPTlvMuEh58@0SW*r9Rp7Q literal 39 pcmZSPTlvMuEh58@0ScHI7!DmQYwEerVr2Z4fz{a5#LSq10RYDg37`M~ diff --git a/.gradle/7.3.3/dependencies-accessors/dependencies-accessors.lock b/.gradle/7.3.3/dependencies-accessors/dependencies-accessors.lock index df905c8d00bea9ce98b9820e853e1f6b312fc4d2..59ac938b8a25a80df3b07bfa2554b36a954c68c3 100644 GIT binary patch literal 17 TcmZR6!?mYXw0>zl0~7!NG5rJc literal 39 pcmZR6!?mYXw0>zl0~9bbFdRDAqn^L~>HV+w7+8%>P0WlL7y$183*!I) diff --git a/.gradle/7.3.3/executionHistory/executionHistory.bin b/.gradle/7.3.3/executionHistory/executionHistory.bin index a8ef437111ecb389b640127b1a58f90e1827a5d5..290bbc72c50275d8f93caadc0d60fa8126598d35 100644 GIT binary patch delta 3497 zcmc&$3se(V8qUpxM?oB8M6+zv?!3Wh9l$~S%E48~lr)PKPoH^&4JO6+0KmYx{ z?@rA*)jLlY3Dw=@ak9(V9*5g`6~i4FDDIVEa8nV7%juJ0NC}OtK%dbII<10Y0~sa+ zka4&wfa1U!&vTk0Z7pL6PahCDX*of1iWVtZT1b`_xNk-Z3*%7PTmi+J%e0OOr9@hB zBICnic~MNBY#to$?P;EKJOd#d2VF`;xBU$X9&G|g-pcRVa-LVjAw(Mh06cgGq^q^( zF5L0;wU`=R@4%bBM++W~9BLW^kn)Fqp<7yC(OU;Zql8LkgN^BjD0+0cj@0 zvkCCEB1rNZGnoUyNj)osG=qE|R*+anl-o?AVHF)Af3R&?A!vo1)8{5nd~} z0G1X=91bps^RuWQcb)j6#U%e-zH}ceF5n3$PZLKFdk9j)BU{=*N|AA1Ee@AgTNKTV z+{O`v@j|VbR4Sbl9><8K#!%^8YvwdN&!X&H1i|YiAQI)4=PrCALcIlkR3h4@LcTH4 zRzves89*6PAz{ZJeH>;Z5A-LUFiz?$WylD2G9Afkssj)SMqxO)4I%_E7m?ht63 zC8dnOO0e1>;7arKHK$WV6&gX^iu=6ZT_7o@d_ms`dt~C5$Rgn9WGD-1cnEIV{-z&! z9WF>IA4-J~wjN%E0+f;Nb}&UCW*QHa9QN7n67gKlhv=aENv~<2ybVPrg9xyMY&g-Rbz~ zr9W7SHrB0+Tadh3=r@RX{H5xWw3MplnwGzpKu*{|#SzH`X7{eX zQD;+{GP2q_3J+mXrS2$0`Rcdj6Sh~4;(qzTJN5Q(4guD$hqT}%7G4fM=1UNp9(LPR zpD5w%V+`2Z*eVn)!*cuSXzsmNnhQ8Sx0jC}b#t1MSk=M2lTfVIpzD!($DMEFlwt{Q z`5p_kumtfU_&xe|RZ;27)mcYrUvIR$5#ATm`51e9Wg$AP3EPdMAs`o89u(uAbIR%M-{lWHF{-5|@xVZ*$NTNT`u%X%ZnV5EDwU!{Xk z?hL;|%B{PVwX(2xsA#JWqxV6naEsU>5f)qqgTmZSXERt~6zd39cqBC<-a^?DJ3N$P zKd5#&9^VRJ;%0*3qEGu8d~zOy=um>mbSB%m0V z4=Q`EW&Q_c&$YadmHpqX;rEq2_y6espzOJgnN{}Of0GZ&?!NI8dL&@VP9KuuxkUdd z@Qi}Kon?S3Db-?cbmTrPDs??dNHtjKx;r^>{95nJSOAi4?AXahCYoXGD4k=(3khx~6$!|y1 zHN!n(a`TCiU0A|iP0RxFS32&=7Jjz4F@5b<`f0~ivA31#=yYw`Q@Y340b3ZOzWQY6 zLn`P{$>h(IvC4yX5yxudRxlnicv;}S9qw~{9sJ}Yi~sj`AVD{mP`L9tL8O3SS`u1 z%6KFkZbxlH=D#%4AhvGTwVL(EzUE$u?Y$C=_jHuXDl^JWlgjcdveHZn@-mByl9LO} zQqwcbDj`-d1Z^(#C{NkWvWoFM*ES1ALB{D%wla1IS?&!MX`At^NVeNxt<$muGseTy zFXpl+O<%B$ak&sr+pR}aT!Lz!=zrhYuCV9AB{N8^j0~j!!001*01nB?( literal 39 rcmZQRt>9AB{N8^j0~j#LFf%Y5I#_FRxxO=IeJum4v8jofF#`ht=e7#r diff --git a/.gradle/7.3.3/fileHashes/fileHashes.bin b/.gradle/7.3.3/fileHashes/fileHashes.bin index 1b741850febb9f9b6695ce4515cdca1e2e3523dd..c1a7f2f6cccb6cab88109b224772b5c1a16cc5eb 100644 GIT binary patch delta 1356 zcmaF9mhtEY#tkMCj6su4B|HSW{u>;~40HBn0E6(_&7~3ri~>tnZd~_7JkJ~|`f&1H z$rA!c41X=El38kgX;I594lub5M%eR<9O4PaHyc<x8xbz8faX`shMg{%}?!oV6LwdJ1QW`@(d1!dcaD)>=60KAa`!2h-sUXO+TP%i*k> zU{>IAj#==z}i=tN@}){Q2hTK?RIKcTFb;@A53;Z*Z9q^<;ZMBv@5g(i(`WH6T}^Iq^a4R(3^u zlNdpz7NgdJtTwQY2xAV24t18vks+$UXakB&ZVu742eQ-yAaY<5&9ol3|NEn=*PK>w zT4H!$?b}*Z)3{qFzYi%>IKE=nmeo%`n;lPMTaCs)g=e*>NLG9jXNgDB{iSrgjnLc0jLrP__%-s znzJ_7y=+cHnZw+tT+o+Z> z@14vTBrNY?YaF1lMr}jT)CrR+zsP~rgcd`M6|A59&`-F2*QxMBK9l*Ln`H2I$eF2w z)r2KMQwu>Qy{DKuCTKqv&bxfo+(>-epNWDx z`;m1315q;%Q;V;n*WBvwuWddFP5QD*|KB8tvudI7&n1beIH_xMLVaWz*0RV@Nk~shX delta 913 zcmX@Qf${lT#tkMCjNX$?B|J7ymB?V6EGl(i^INGCjGNEO%w(KgCl^2YtDM1PTlvk5 zk{cC&h%Yn{-0bLaotd@&m(d!B$+AAWP?kTO)d**8hO?f+S>nDh9iDJjHJr5;&bkk0 z3HrfwIKx?`aMp4->n4PCpJOt&KTLC zIp4o7XuH(+t;@8epLV8PwDdc{aUUdkO(4pG0Sq`N0x3OXAfXAwiXbe&t!4Rp*0Fef zTZ<)y0j^00A;zt707?P@kJx1UfHDOy_cs!*XKo!bY22dDlP>xNY%Cwc3Wy@HIh(Hr zEMinRt9@Ckag}yN+5bxyVwz{1f~aDd08u6JWApT&0>&WK4yg+|k26YZOIO{v{m427 zqKXxwh+(xGkb&kz-iZ;N6V|_T_I^CSb^5AnDi9qU6%Z}z<&z^rR9XA4@o`j4ZVu74 z2eM#xf>ofIcINh*_Xa%i-zT@;n0L*w59m5z5CQcJ}5H5^ru;m*mep)U1u`3Ko-57~e7R<3q_uUPUMRT1ZDOrN+P+|ALsY0syeKC9b4 z?HbjnIvZP zVcm3gHDM$zK*hXUFm+U(+0}@@ diff --git a/.gradle/7.3.3/fileHashes/fileHashes.lock b/.gradle/7.3.3/fileHashes/fileHashes.lock index cce10821bc7a934e57dd33ee3d214fddf2950d44..974b0b244baac92d511c9c64a80feb975cc56834 100644 GIT binary patch literal 17 UcmZR+`?rUUuTwgP0Sq{0059MJqW}N^ literal 39 rcmZR+`?rUUuTwgP0SwqVnHd-k9ZYmN*y$#I`!oZqv8jofF#`ht((Vcn diff --git a/.gradle/7.3.3/fileHashes/resourceHashesCache.bin b/.gradle/7.3.3/fileHashes/resourceHashesCache.bin index 45f40165d9a275540583151ff3e3566ad1b5f76a..04ac79c9fefac2189bfe154c960f11c625e39142 100644 GIT binary patch delta 2005 zcmZXT3pCVO9LJ-bGN#k~OJXMfY0MZ#n%N2&haS}Efp*4g6g_6l$k0?C8_!_tWImVS*zU2 zknlSG+Ktgt5#DXiY!gVopbc0XZiS8)NO6YV2Xv81Q4jdp@Bx%o%X%amE@(oaUm>t2 zkRfUBCz|_Po3jYy+X7dDEq+}3r`zJtkEqxSq6sW0qg#QO-QvLr^e+LW1Qs0>HasSd zL1_pS&Q&cUi=3U9z&-y4;Ub>An?TosiVNxMtD!45&W{>-jiugzg&y z7$fq=3a5UZcyagu0{I52;Ooo*tZXnT1K|RUnzz6kk1uhUi*Uc4a@a^&uzFfL^5XpK zov3XF*1=?aZD0Bvp9hm@Jt6Rb#dO8zBaT~e#5;&6%2&nKYZtW5Z?lpioZkm-!f{a3 zAcP@B#6%&`zZoz{WT>^>Ij6RXT7y8p8o(yy(4XhxS0`ibrV%I{QN?ze?VpUCc)S+j zf*{aNDu;TyV@8cvS8hk3$Qnd1FNX#pNswu>WE72!0yHugpL&E*I`vtKGJPN+2hhh` z7@27!j0FhfN2^MGG;V)hoE3TqO}z)2l>zJm=PFL*X4EZ`>l+(tLzLUO9?U%EQZ&{E z(5PZOF8oQz@TLUR^Z`lKhxpy$Q(SCL9KrDsBNoCSv>+D+~B##NQ};0$gb<`i{99z9e>HKOoS5ziL0+ z6R%b*cvaVqaxD-|<3R4R@_BLB&#VnjSzudX5oCnuMwl=%1oWjiO1GTIx-CA)H?a#^`sn^>0@gPZ(6J z+NUjd*m}b-)>1i3Q1(SL9kRI9BAz-r!3f}8SRdbfV4f0^zBNt<56VqlwOV_b@Z*aw z63sP@YH?5@IsF-Y^IBh$4cBvKv)^U7_ZMQF@+i^&oXFf(ph%${nq6?*3v=%-1yPlCySHmC!hDWuCr{Mt&h` z#Pu^CLdEmdjtv|l9?VoZw_`99M+gVsQd3Dji?V2nr zFKeQ{UP9t;M>_VpKaEXEjFBiu{fLfUCX%Z zB7_q^Ooo*NA5pJGIY91JG3?fr7a8IqKEJJa}O;Si_!a`wv>wE?`nEn=U0ElYB6j_7C}cxJ>42;8KeRSu9flu|7dFcrMR zj(I{$|uv4mpr5i#W1U^b+M)~xFJ|VTw%G6O6%(o;RILJhMl@hw4>b` zt|i78h{j@SlE;13irVl|+$S07?o&S5dOvw>QR?i$x^%J~ps>o~V#%@m#?z~?v(R}> zub!;7D$Xb5c#cir)ri^CPBZT+D)c(KT|9#Ef;i;&ngtrl4|3bj_>Wua4msV7&tI!) zzCUeZA9}(_Xs(m<}YDUdr7SL*NL5 bdg?X5mm0jDvOl?F#SrsdDoFQ!H)H${6hw`; delta 176 zcmV;h08jt#%>nhn0kAX}0lJe-7)XeRvt1n^0h5&;7?Z^wV3SoJc$4KH7?TwskdxIQsFRf;sFPJ9Nt3oBUz0^6NwcOS z4+4|TC1I0BCcu*(CrFciCrFdtCl`|qC}ER^C@+)cC`hwKDL4U>l`5%|Rx1~iohzu5 eT`Vz^rYv8RH7&9N5rMHG_!qG-m!NVFK@X+$Uh diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 465f374b1bfd963ed72e6df82a53232b5cdb0a1e..79ed8824efcd560072294c4dc89ffa340b4363f0 100644 GIT binary patch literal 17 VcmZR6b-0I(m;3tx1~6bX1pqVw1WW(` literal 39 rcmZR6b-0I(m;3tx1~6dZVrF1CbntQdJ&tL|do>tXjZIC=j2RdJ>y!%e diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index 18980d9a8c55d221a3b4d124aa27bc0aaa0f7f93..88c8a8ff05972afc584d9843bd9664c615e75e51 100644 GIT binary patch literal 8 PcmZQzV4SelV~ZsK2nzyq literal 8 PcmZQzVC?_-Vb2u+3)ut; diff --git a/build/reports/tests/test/classes/org.jointheleague.features.GooBotTests.CalculatorTest.html b/build/reports/tests/test/classes/org.jointheleague.features.GooBotTests.CalculatorTest.html deleted file mode 100644 index 303bf077..00000000 --- a/build/reports/tests/test/classes/org.jointheleague.features.GooBotTests.CalculatorTest.html +++ /dev/null @@ -1,253 +0,0 @@ - - - - - -Test results - CalculatorTest - - - - - -
-

CalculatorTest

- -
- - - - - -
-
- - - - - - - -
-
-
12
-

tests

-
-
-
-
1
-

failures

-
-
-
-
0
-

ignored

-
-
-
-
0.343s
-

duration

-
-
-
-
-
-
91%
-

successful

-
-
-
-
- -
-

Failed tests

-
- -

itShouldReturnErrorIfMessageInvalid()

- -
org.mockito.exceptions.base.MockitoException: Unable to create mock instance of type 'Calculator'
-	at org.jointheleague.features.GooBotTests.CalculatorTest.itShouldReturnErrorIfMessageInvalid(CalculatorTest.java:198)
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.lang.reflect.Method.invoke(Method.java:498)
-	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
-	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
-	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
-	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
-	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131)
-	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at java.util.ArrayList.forEach(ArrayList.java:1259)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at java.util.ArrayList.forEach(ArrayList.java:1259)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
-	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
-	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
-	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
-	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
-	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
-	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
-	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96)
-	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
-	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
-	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.lang.reflect.Method.invoke(Method.java:498)
-	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
-	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
-	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
-	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
-	at com.sun.proxy.$Proxy2.stop(Unknown Source)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
-	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
-	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
-	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
-	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
-	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
-	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
-Caused by: org.mockito.creation.instance.InstantiationException: 
-Unable to create instance of 'Calculator$MockitoMock$1793613766'.
-Please ensure that the target class has a 0-arg constructor.
-	... 84 more
-
-
-
-
-
-

Tests

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TestDurationResult
itShouldAdd()0spassed
itShouldDivide()0.001spassed
itShouldExponentiate()0spassed
itShouldHandleMessagesWithCommand()0.001spassed
itShouldHaveACommand()0.002spassed
itShouldHaveAHelpEmbed()0spassed
itShouldHaveTheCommandAsTheTitleOfTheHelpEmbed()0spassed
itShouldMultiply()0.001spassed
itShouldNotHandleMessagesWithoutCommand()0.003spassed
itShouldReturnErrorIfMessageInvalid()0.007sfailed
itShouldSubtract()0.001spassed
itShouldUseModulo()0.327spassed
-
-
- -
- - diff --git a/build/reports/tests/test/index.html b/build/reports/tests/test/index.html index 43485395..131eb52b 100644 --- a/build/reports/tests/test/index.html +++ b/build/reports/tests/test/index.html @@ -20,7 +20,7 @@

Test Summary

-
12
+
5

tests

@@ -38,7 +38,7 @@

Test Summary

-
0.343s
+
1.913s

duration

@@ -48,7 +48,7 @@

Test Summary

-
91%
+
80%

successful

@@ -71,8 +71,8 @@

Test Summary

Failed tests

@@ -94,11 +94,11 @@

Packages

org.jointheleague.features.GooBotTests -12 +5 1 0 -0.343s -91% +1.913s +80% @@ -119,13 +119,13 @@

Classes

-org.jointheleague.features.GooBotTests.CalculatorTest +org.jointheleague.features.GooBotTests.RandomWordGeneratorApiTest -12 +5 1 0 -0.343s -91% +1.913s +80% @@ -138,7 +138,7 @@

Classes

Generated by -Gradle 7.3.3 at Jun 1, 2024 4:06:35 PM

+Gradle 7.3.3 at Jul 13, 2024 11:25:57 AM

diff --git a/build/reports/tests/test/packages/org.jointheleague.features.GooBotTests.html b/build/reports/tests/test/packages/org.jointheleague.features.GooBotTests.html index 7305053f..7f61e8a4 100644 --- a/build/reports/tests/test/packages/org.jointheleague.features.GooBotTests.html +++ b/build/reports/tests/test/packages/org.jointheleague.features.GooBotTests.html @@ -22,7 +22,7 @@

Package org.jointheleague.features.GooBotTests

-
12
+
5

tests

@@ -40,7 +40,7 @@

Package org.jointheleague.features.GooBotTests

-
0.343s
+
1.913s

duration

@@ -50,7 +50,7 @@

Package org.jointheleague.features.GooBotTests

-
91%
+
80%

successful

@@ -70,8 +70,8 @@

Package org.jointheleague.features.GooBotTests

Failed tests

@@ -90,13 +90,13 @@

Classes

-CalculatorTest +RandomWordGeneratorApiTest -12 +5 1 0 -0.343s -91% +1.913s +80% @@ -108,7 +108,7 @@

Classes

Generated by -Gradle 7.3.3 at Jun 1, 2024 4:06:35 PM

+Gradle 7.3.3 at Jul 13, 2024 11:25:57 AM

diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin index 72a144c8ab9fe9f5a57384fe81d8aa3e13696ef1..a1a8d34328cd96b7973caf2f3578b6d2c8ce641e 100644 GIT binary patch delta 1044 zcmc&zJxc>Y5WPJUA%_T7iiNC&n)tDh1S}Mks9*$5p+f9ry&Er^k6pc+OVs8XTS2)} z%s;Ra#M;V#;6D%qtu1Wan1CQCn8sq4+1Z_W^WMz96;2EB9%9~;XuzCU+~m?xwW9Kz zRgmCuR9@~tY=e)NKVKOJIltbSI*gNx=HNwhD13~!T`X_(+_|C-aszyyyHFHZT2{51 zM%itYK<2ekgDh5Y39H3CrXLazzzOZ@g z#EM)ZI7}<-)*%~_7Evg5!(b`VHQ3=FYp$EhdB=c_0%!g4Di`K`oq1hSKXCr?5 oeJE6bKm3#xr3bYnq?=527iDyCW0@DDHwwqodSxuqDdyGq0IQLJ=l}o! delta 1215 zcmb_b&uf?@ZMhjFiV38#ZS>$}*nNey!w$~O67aGYuSyzB zjCbR~#FL5tg5FL113dX3nBJT%I|~#v9Nc7o%s1bg@4fH6ecAZkNT;loFQcKAds?B) z2^dve9Dr2A*(E~O@W)r}o=CVD6!WI(Gxc^Myqi`noa>$^uHA9N!GhvW3zg z%o&eB1;Vci!A0$;4pPz<)chW0o|`W$$Fef947WaU(IOr09D9lr=sVC=9`_|_QVAri zk2k6Y|7rb;ex6;%hdymGz=~r>09Ak^CG7c9QQrZ~kFXka0p}*hA#4K zI;qWv6Va%7WEp?Yg*>A@S}yMHd|pp~zZzC(Ai>4WK^afGbXK|cl$f$f?W}&~(a7q= z+cLK2>@p#dQ&T2w#3n?qjpFw1R;jqP9hOQtV(&4~ox|YEKxpIJROyHQprQo|JB&(+ z+f-tTZ{5%sc676q2pm1a#9k$Y;GH|VO9Jc*uZ<&jT|HT|E2OVzy0cw$@!gm=`gLtH zH1Knj8JX~Uz?9czgM48Dgsk`=fwCV>M1!jb)OQ)g<1HV1O8-Bq!aE&}=L>&h?!g=t zrDA~qttR^WK~o9psHv1DP?Ay)*`sgQi~7Eu6xKtR-kUV%b4(IkhLh;@(b`*cX0_kt iKKRjaK)#T`_h<3M{sCG)F`@Uop6BYIIUo^wf&KvLm9CTk diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index d1ad72943c19884bf701429867544ce6b1780945..e1162727d38ae599cf2c9c55db69bbff6b73d06d 100644 GIT binary patch delta 82 zcmV-Y0ImP2z5=Pf0+41ev8katja)7jrGQ~eC`&!t6h{FS0EuO8WpZJ3Z*maTq`^LZ oDM~prh>#v)gUt!Cl_voZX(9$wjAh(kf6+UTJtLHHv&;cqoj*JvZ2$lO delta 82 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 j2hkc1QOkiy zqayD^bdLX)nj4%e4r8oS#z>oAafEdo!~4|Nz#khEl~FAXTH;mTRTdi``e|X#udDj? z9MKz&`d2KF1ME;gQ5-yNzSUIm!K&kx!3AR*IFOpcOTTY<@_5aO=qXdfFR)kg4{mMb z=rnOeZ#ins9Kkz|UJHkK&w-9n70&tJO2_ou=i^9OO!lL~T@JH-C%Js!=zQdeK5^7O za|B;FMh&Vn!M|0}yRhAEQAc;&?rz_`N=l!u{K^3@2QQBQ)SMK~_*Hc=uMaIunKrtW zBWmMlv_WeJ>3Wond!d&p`SVrX={ahbrnhqpGgxqkA@b|0nZdq&^089k%*K?34ILb! zlS6cI2rFmQliUu5qb-|OoV+^xvT&(Ko>|y84)L7>ZA#=B;H<6tkB00oFJD&MuFax` z-|XfPJ-`JHB!v#uPtF~&y6CWI>rnjhw)rd0#}g8HB90f z<eNS5->M|!Tr4OBZ}k-s!%OeqS!&Q-t10;Om(zhFP0Gxn9EVcHw^f;9YzAzbMkf5(=w`# z{;1Q-;EHZ?4KlfcTU^0yu2B}q68pb&3W)AIx$afW9owyp|`Wo^_+YeRsc(~VM$*r<7N|EH*wyic@3woEq1xbCGK;HLM~zbfD0kT(nM9r zT-gzG{K@EFx7%AeYWY)7mlbiv#a#6=xI|b221VY>ghRCnnT)Q2ys(7qL#=)85v=(S zxrSHi;7CkIi4L4<+<9)d_QA;y`NO`Kaz$la!>`zD(pTPn(L2t*Wc6)f?1$2df|ZGn zxCGh9XLmY$OSkWpD}%)arFq|ti_5th8Pvz1T+p=kr_^nd$EElMFor+P2#UYH{maY> zuErCtVI^1alq-${{UR@@fvsJET3tVV7jXs>JLSeER1@1%LNtZ&uSG zgRNISH>GWi%9GY{MX$Ng+M$ZwF2@ZnOfubR;w(F9WXCEmsOJ)IxPW`BBFvJNTjtD} zXju`blTzMf_Tp*-SEG@u*2Go2hvc#I*#&HVp@rjMf8BYRu~W;Q;=mPS-g0%Dxq9!Z z?|>4hB%mux%pX&I)T}>oVYEqo#0=uO=dKp+_V-+^4_v`VF0}ZOC29-u32f+3mz4W@ z?8HoD*VQ`}$+ht>Z$^LSioS3~xinQb2{LQt)wL<^&~y4kr{X!6_LVDW<<4y53ggjs z;JTygma>ez9>^bYEx&A>S*N(L>gDmI>RaPGxI`yd6s?O3zas#Jr>$J(=ma7>$+wOF zHc>Kmg~Rr-w;z2-`o@KF5t!X^hq%OVF5!$r zYneppf>V4=oRkt1J2NvUR~#Ic1+2z@75O99VBwb|TXuae7e#)3?*=EQW4k6CYrkma zvt;72dG$}OyWu+SxRD1AWlk8!6Q_6>TiHpxaLC$i`TvX`_I|S@D?(;+d3Ei=eM2q? zzxr9f-tGgdW_~WY%!$tnMMm$@U1L(!PSU&fV-Za0Zhux>1pSUalCjxPZ zYbs@Zq8qhWcJ{=GU4GY)>TBLa5H37}3xaXDhmwOh(}2%UEyG8vB~+j0Ysoge-*zWB z1cz`8WW39q6z}oqboji7*_rARMRolWhd#tu5#lfsxLiMspiZrVnJD zT{kZftzH;`i_hW)sc0k)ml&XhM+raOaSnJyhIjr>&X}HuW$%qr-R2lOsjqr-9v4R8 zTeGozF3^%?V|w)VKJM&j#+ED(8EU5EG1zc~>0X!F}bhsHkRE$O&U z1}?gZt7YOkw{XKYS`tX^Z_a3u7ubJaP=vJU-WDz^#@64)i7cEratHr&9Arzjj+|R; zs$7)*@zH1P`b?)!ypFrLS~hN&gA=(pk%trcI8n)Nprz9w#VNqayTmFNJ&yls%AtSL z8_cr|i;K$m{e%MH_XI&N@8FvZ^!Vc^G4C&n@8P2RxPA^To{R;zqGoSCo>Kqg!0VuQ zc#AJuh{I7FyuOy@JUYD8X3WkVJ&*SO(Ea@Y7Zu@vbPbS|`KB11`~O(l^_EQ<>A$`1 z&Cz09RDz2i;yR@`QHB#vkANWfWd*V)22X*4u7$?$I2-BuqyBz$J3f@WvSesdIj;8@ zH>kjgCpa9BSK=xl)b!8qw7_lDr(o$aIQ{s6z04?oDw*=rrF_+$Gn3J0xYl!ArwWJr z^;gj<@U{Hxj=}!e?g~TE-N&9~f)ziiapDEJ2bHoZl-x(N-~D1YOxPn*pYG)H5{J43 zb{91gp}7%4 z{{|d7DjR_(aBq=p72<0~O!k_w@4RE>_V10fQh8DnE_{pYmNUr!Ia=~_c!#_H`KGJu zw;r>~4{Qd-0E&J3^2hRj&%EIOaA#`nw)xB6;Y16#BHDYL5(wuQ_HezOyfCIR>~?E8 zk?MRm{94!OyO;QfV?W@;M;!96TO3$OD|K4P&vm~N4`}_G&-nR%^(S06gZdeW15iYj zL25Wnczx30O8LGk?AFd13E5w8;wuifZbC_9Wqev%t?pO9&gT=<-?y)=Eo{XNf72k} zxN3AKWrcO4=8w}#Y3#(Y3nRhM?a$ydgi|NzJR852i@n&_h6~zp$S68M%i+8cehx#) z-_=tfvPt&XKfw+yxkj^|)QJ;aIPnb}$9FJa_&EwQ74Vf2Fmbg({)MM@EZ&6}<$;cF zT-XDK#pnfzL1T(B*>)EACdA}tWe%h8*Sl@qbbpBlgI{)CBlVo?{%=3s_w3ot8u7ai z7yiK2`f?}CJoE-db%`WQ*5pEobyylYsCN#7npwnftCvS@}*1oQz^pFe&W;tHn_vOimL0t3;SC3>5k=s)BF@u4Gjge+Hho0Sz z+0iYYipMVhjf3~j3(zyHmsTo2GTAm9}_s)H$zFO zFZ)$Ka$}0gTQ{E2ou}c!6MFIlUc7DIJi>Gy;mdg z{R+{)|M(s9UC{cEemIYa;DI`;#Jz8Ngx*P~16(TWV@`kg#h+(+!bqNe26B!Ew-jux zoIr5vlkHxkTMutHJyo9+wXky44e0X^d>o>l*|ufco|%rjPf>24=c%=_#_M`Wkx}{JKc9 zF>hxxR;)^}-mx{Jv2Fz4Z^DdSlNEh|jniBfr5IkZ|*tr{0c<+VR8L#mxW^5b2%$EEQ^={%@e z{mAn7L*K6aM75!vXGVDSYKaYBW$=ibAV#Ljg^qtaBQzr|;H_QE(7;ji#?hHPVGapb zk2-wq_tcaf`L;2`M(L;L@4v-UzY3KU-zRH@|BZ%)6JO{&e*WTlPvvc%eilz~Sb3U1 ztY=|FW%1C1VgF8hHv2>>asZmtR!dRr$SyHLO*?(vBGJi@9FMp-J%AMl{tgoOL5 z-5!jqJhjhj?IX>>*;^>Xig?0eo_+~W96@^sEQPGVN)k+FQ_ml~G2X*@(O(J?yV&Y z*EI7<@>20_LTBrqtZ(JD{!~6OQ2w+#h&saht|0I0f+vb6JU~H#wAbp5@pa!*$G*3_ zBOfz=&+ST{=qXRlg_%Mg8yc(|)8Tm6CH3ONo&yIJTfRNx5zj%txIrWabXTc2pQ~x# zU-#KlGW@j0>nfh8ny2=Hr}>hnlfnq&gmWS|fHG+1Z8Dz0_<7DLYQ`!nQ`S%oPp6hA zdc{+_#r>OxIHh@Q{8bbm^AB3btZm?l8hL^y-uAaVog7*-cpf;~Rs8^(;vI;@ z#>z?6UcB(@ZfyCCwE5@KBCqcbS;K7M8CHq2hIK-BW>CX1&ePkzsXno4q^Pk_r;wK*ce9t%9?oF@jB;%evPTW==(Z+)tyX`ROZ~qo)T4sh9u4E?k zXY1aGnsYNAt+t&UPjA~FGX58j7~%mE z{Tnt6m@NDVg47f??4B2u`6%q+iG-t#m1Z?}x}Ap!U55RC?Y(zYmB;olJg4{bbnM0? z8f%W-SfUB#*m6*#ps{Q0y&GGi(v%`dQ9%$81VKQGh%^BKDbhqyL{SkCK}3`$pu)H3 zpf}h1-ru|4taq(%eSds^?Rlm@Gkf;z*?Z3(a|>cYk=T-eL%06&XV;?pYscj^Bj)`T z)Dm*wCc5Oa&x!!SI#e-c#^{()^V;tJx%}JJI}*sA)`Z4}&>SN`i+`<4^6VR$^pgd7 zMlk2%ea9c4zV|&&XdMK$1ju#qW$N1L(|ZYeO_;m5JxV(#@Ui-Wn)K9UOc}e=2@on;n0INx^e z{J}5139S#I^Cf1TCrtealVZL<{OFpsE8)cZKXKcUK(H?pJ=#PmqQ?4f8z6rQB5tKnKE$$dNEck89yk1T67nb_@X z*PpHsu-ic=4g`6I-^`6Uv}sOGdcw3p=Fx=qDlsdDFt%31ofw!qkI}>Fv_zv1*~f@o z^V?jmT_ZHH1egfM!4QJlXbqNgh!t+(zdg6H{ozhVzQcDDcE=OC1Y%|)VRoIE^IYa4 zE#vD~XbwnB@_K))cBTJ^F7~fADf$W-<2=f(q1}#dJ18b zf#c_t$dT0k;F-2aWFfL{~rbQ1O>3>gM*nb1|EkS0%UwOLF(l z4Xbvq-A+b4^X>@U;@RtT53`Gx!-g))A+*+NXgl^#)ke3a32jwlBLm+I$uP<#ba{la zw;&R4^a96+Cr6*yY+2yB>+~-ni$Y!~$RD@zYX5Bf@k}9OoAk(|U`9TnDM>X}lTY2AMjfvY>Dd@;skj+*H{vc~ zT14pX5r+2(<6^?tPXrv6p0NcpcGX`)vmU?EPA|Bcv~t>gdiVoEQ$oOw@(_LtEH~lD zFb(dV9QpN){3**$PMI>r=GZU&9s%AEK=bwc&f+6xBi^^)sNk2M@o(sVO7xfj^E@bI zzmoT632{?Z`{!4UJ&Zprd_riR62KOf0Y0wVxoz8Cj5LkQfEWNj| zHG6M7Cp1+AoHOyKjoXFj|;bFH{ z&xTq;^NIl8x{km{PZ(t9w`jS^lp=~CNTL|!xgDpB?sM0+}mwS!>dYvGAr}Ebql4I`( zZ7VS~P1puAx?wAJL5WQS_BVyu6|T03ZE;*ZvS)Sjgmyyn9!5@%bymq&N}msFdR0l> zx^}kwgMa1+!aPO{>tbxPcb~|t=WqVl>Sk<~dOhqTq3a;bJBc|*Nbs+K*+D(koihIS zX`@>96^}VEC2Bxx=klW@oFSlE5t0_FUZ33h9ojP0+RJasYYCb6B>2Ro_9%Cw-u+sq zYMwY)kUC3JXGPAkCQWTflLX=Ckpiq#6TOpciWQk z`>C^L-aUHw<-*EjVVU^mXCaX zlAKo|Y2%TDw{in^+r>^7PIi7)^qolHOln=o8SMgB64_$MHu&TYjrrzAnmK1o4&Rzp zAT7+DGtP}PIYkQ}J>-IgcACWJ7dy?y3tgBq`K5dY3=)0{xq{f#7zT!NI z?ABp_nrmU!VT`6)jXyYWTuhkDzJf!!Q%`1A@yL3gxpziIe6Ml~z5S+T@wugbq_IC~ z`dn}UegR7e!DZ5#0B8xx{IVPh@6!m#1+$R_WEt_4E4jHRfdE}1m(?h-xlx0%YBondv|4aJ*dKWMM`!A5rHqwBevv#sgx zEG{e_oZK^ooOgpX4^v`qNLh=9#GjfrzVEXMU;km$x~d?R)TNPA(@D6(dWPSKRfE6I z5>HRe*w|xawa;3&^uKCu!W7_pf*Dz&BQbNU+_zO+S!F)(`z;ydyc+dOf+SBZ-yW&l zyxZfusVV+AHu-TT#Eaely*EIF(15<&(w*q~a?)j>|Jlbg_H0=;aOdUak?Z0g zlG;b)%#XZ8Z2S^J8Gmd3%_ecm#Qj1`1JQ$0Qd^D%)0Ley2U1r)JmLGwTl|yDlG~3- z-4haSl(gXed(47Ct>t@(ua5wK^Wk%jCn>mID3|psN zIsG+p;^g3Wq^6bBY>vf9k}-r|dTxZe)cM=yMc*tLcd!ja0VHhTJ0Q)mZU0*bm(!r( z@vRBH*LL+i3D?*mUOMGj?1f&5C4+Amm`hWCpg+L!Am{qa+%dJd{W|`enN($3xzD`I z-3A8ac96PG($pIe1Gh@b@$?Y7o+)TLnV%obgIP7P>>*;T+uCPbDTT>=sJR1t1 z9rvum{*)FehfaO*+--H|l2W@#&+<1NqqN7VdA1asbnGZlG=U@-Ut!IX!ym47S-7`z zf>&nt`R-LtCd3c+6c|53f8LM&X7JQ|8IUcS&!}< z=&|M|+jxS~I8v}k^*q_!zosX|+Kr!h`uL<@XMOC^--*(lq-NH3oz+(xuk0-dr4|+) zHxh}oE6SWHjSB^uJ$=dbPDpHJZ`(J=#UX~b+u!>k2($m18kXD;Ip zm_uJX9eI8`;S8m9r%XMlxmS2+A!pYWGQ5c=U}~rs=+?SFJcY?hA6(lo_i5n;KH2>T zM~|PQPCb*Y3E6n2=9@ZC%G8Sj(g?Pu0x~(>>G6o??LQVC>O8RE%Au?0D2+D-0)HQj zhii1fG2KUhTy|jfUz^5-U1NPHjW3?>^AyOr!#6$) zd%k-1v0K5WUD1@uRk(0OnO>t7*oiE`0h69Vn%#SFi|>+ghxarjjlcg>x@9b-iKD>j zLOhJy?p2t1{UP$rfy#mXd^U}(S+h7R?~epZn@GWd;uOYZbwqwqgm;Zcu3y-EOHN*Q zozf)X-@A|L#=u$6>+5^{+&p=9qi)X{Lo%7trBG%!C{VB^$=xwwUhg5YJU_d_?_P0E z;gj|`J5nia8fBbL{Sqzf68w|5+IzN@-C9+6WVPSm(DCL;Hz|`0%BVo8@4S5TuZ|%$ z>pF%D2L1lg_VxFflrD>!mrVhmYe(s=Ylofmh+TK{-TuDXn-Z(3Ld#o}CWnG^mVSeq z)c-fxte9JDvHRveOHcM4nM-N&D3e^NUfU4yWZ~QWsW%VG{YIsUET^8zr)FIv=aDnN z-RDPF|S#v8d`Qz$)JN(}&c&0HK5AV7!c!-wp5x zisv^i|MB#JxSiWAA5pqe%A|}}ugVjXorh*tN=5zJ8@F21mWeKKL4?%yDE)c*K#gF( zCTLW@4|B>NQ<^7$1YLKlvgNe-H>-b0`Z3yTyb7JEIU^-C^7P_cIfX$(Po~W(GIBZe zl+u(@V3hoTgjsK1WxitOvUeZl-K+Yy`}UsyjM9`-nhHu&Nok&A)Ve0D!YgMz=N!N#?i z>+Nam(;TsI(3=H6FgpbMqWO)Ku89Ih9h>(1shsx@cG$AVq~haWn+CR7FChPT-NUnL z>*^`4brB&w7BBj?nVQ`~nZ2Vlt(2w>2xmKm>^831{rgV9mR-dX6_ zbglcS(wj%(y+UBmwttsL1w9#d>eA$Ev#GYk_mt)XrTK_4r2}gC*Gmp>mC!?{u@|>j zZZqxF{MqBg@X5gkJ1Ns6^t@Q|D6RJ>^4UMx2O0S|rKi=$&d%`C(N)Er?}rCj(59C3 z3@ch=O~b|5%K}w|z@8wR9jd188o2%LRU^mU%HXNKHZ)8gv}0+u{8GoG30&XqQGqrsdqNfC<$P2?{d&R(9fd;4qWE2e#v$swm` z?P+@M8G1ns;ZDQ*58#(o??Y_02aWxPtidwd0p8DigTEbdBlq_11)J|=G@PZ)isZni z$B(GpJaF;vcFBv5jS>vb-|0!4hk;Ee8IjaE-o^huXT!MCm7@fcylCAy+T;jmM4rd<21@?FX0$$qm|8pa6Owy2N8=U$~nRtQL1kfO7 z(#uV`>IqXTH7iz1(=(FG=O)bzq-R{Dje}_Ljfe%sV5_jTK4Z?vf1$k@zR{=i(9E_tAMh4*CRJueokw!gG$I z;W9iF5(yuX8?T9)A0^lxz8LY_H&Z%_p1(hOMM_rWpR)`6 z=lJHP(F@Y)8An7nVe+=Z(Grx2mLk$4?H5;}-_P$4G^LuKzi1trL7QgMvpvZy8XK2% z2~muv^xc!p?hrJ-YN}cgnd6X6!-cvGCHW1io7>_XSCV}B44tDhTS zTp1}>SE%*+>eMB(`#)1H-jh;sfZ3SiYuJ3EjDa?@#2-%%=^rc?Hm- z{{A^RPu2eqm$QF4&XwKS|MrbnLZFyj*W59gNnAl%4Q`(J?V1G#Z__jO71H3id)1!b zLCOFZ8J5}_7V($Lgc)Hc(3T-}|!QB3O|&?Y4`T4#73)j#m!$Qj+`^hc{!Qo-|>XjJ*B6X(QqZ`D1Q=^4*RZGW^L{J-H#-}vBPd2 z8t{zPmeXd@k~}Q?-eT7?#`9>OvrDJmUv*p>(5HfiyS{)FvwV&{&%7&IdTsbRX=%^f z&XsUkSO}D5>aA_zoiWp=hBbtcS1&|aKBvL!1LUu_>lgH7spG~~^AE1`9Gm^3iUudG zXQgD)A)}AIrvz*|>@syiqp8Z^1#MhS>uP9S0Xer!R0C44xHIWzsuF&)3Zne9F&AB5 z(&n|a;VT+E;;8CqxcIUPdx!?w)nD!P~7cVX`KTGeaXw4OG5187Qv#}l|N zS;lVwv|6(pd{pgTNs1rOotkzpsg5j=^q-O8`DY`oYofs!yx!>bS)L3eV(>VuS0^QuO&NQB zg|_soEVuTB=yF?*`a4*uhox`Wnq(y;yN$%sgLvvNVNSaRuRzX85Kk4iqmXpS-<`_>c6qFpQJ zluurnmtuCc^0MaW84E^Z$pC9?#lWjgYt~>1Nam@{zlUsY%lx@t&hrVc_8@CUXTumD zV@%6s*wr@tnU%uH)8o&d-nz)km-o(y8FQS`+A=e5fD;wyTba>e6W5>o^IsY-@|*l2 zy~>W6YtLvL7%(+E!GJp)pe38JTMCsU18=N+`hc^|gGm?O225_56nOoGX~gpveol<; zBxCH%n7T0Fob_M$zGQ6rxv?XLeeJ_vc>T?8&sDCB){TMdNZ6!El2amh*~9Lupw{b# zv#fF^pJFtp@z0%M;HJbDka5D_40d2V;B|{~fmOgugqp zZu*4H&o1~^S5EF5?a$eHG8!)iuoLrJ-Fvo9O37`Q;G=w&yX(wD<8zGZDIRbo_Xd1l zIpEH()y66GuYF7=4De=v(S!VF-!B?C!B?8*lw!JJTW(>j52NwLNmvlEVd0{tzpmSR z8c*B&2j3;=?0H7x$AFAfe-2h8#jVOSV#hxGu96veH=)v>F}uJlXp;pnV2iPPeV&?B z3~#j>MgMBNYRTZm`^)VQ2Qu1=3>ap;z>~1-`<3q7)_%*Yo-@n)MJx$Ml?Z@IV6+_QVVcfFV! z#^^3HbHkYhWny>QgN9LZoBXzJaQYl>&>lI6fL@+ZV8Ph1n_zGiQ#_J+bu zJ2vHR)?m%P$YTrpJsJF)89DN0&7+GC(qrJ+Q$1roQF~+fsVTXPX$I4#l*}RdB{Ng$D#*XP|w|~DUl8$4v@r-c-W17eq zUuVpZ@juf>$b0Pi_F46PHXmsJ`l$J!A)_sl7;Q3R+(zq-c&&Xp(4M#-m#vume8u{B z-?S7)`yOwCfh{u%e+b=kc=TVbJ@@<=RCt2{1usn3-LO36+)5`zt@uXGnGRQ^GMY37 zvv+{hV0*R|UXakgi?HzYBB@5=dCB_}|EI7249>X8fSMP|w%UQpwb+9z9yi#)mH1FyNzq zE~Cw3%+9Ix)cR)azM}6p?p#xxlAhdNt~i>{XbTwQ>Mln=s|(A#Y`r^5HNE_Pw@p$+ z+-9_e%$z%n>0Ovy-fIx?Kf;IX)b8Tr>)i{x{Vv<}{QR;tyNejzJ;v-3YzKfHkxz%t z-?}=>XHh|aw`=a1UiTSoF#~Qj^%oqgXVs2my=^|!k2TG<8FSd@0i%tU9T$^VKX;adG) z;}esY-7Eg-;8z+3m62ZUX_naF4-i<2^f07Mxo&;q1?qCnmpObk)qf z8piY`V^%J6hwDlnm|3^q?h-Jy_IUilRP$fk``nMMWwfstlRC!mHDg%MnA{eB-o0VK z?@)gcE`5i|eGVq0rwdm}-!Ne60sk@V>m@TpUUz2oC=B=moeVwymeKmE8vuLuty#54 zFSsWQejd2}ee-}TXlsy{hj#vzMn>1f=$aXGcX=AW9UIVmU?O~e8BuyR`;y7l4^{CK zTNvFt#Z0%HoMP7 z`@+DayQ9A9V04`fSV8H%n7sS8p|0ijEDwjAH&Slo#GXdDZW!YG$r0Yi@(h8cy-p z4MWA_C-=R*BF!jMonPD&0pN@ME?9tnmfbG=K%q6J2+2p{@3g+5PX2p89i>|2H!x zPE1@8$Z9UKuwCB5YdQ1eSC^igo^aKB!z*cMFJ4m+s|{v#m+&9sYkyGun?duxwfy7s ziijoCgWINGGz?*lLs`=>R&$xvgtM9mRwIpMyIzpkym`aMH!_faM6qy71+2BMuy7d; zTlvE&Kc~mx&I613T2KEoqW-&zl;mjE=qhU(!!8KtcZn}aX|8XN+}xvs=J*!;+HYz7 z)@!UbmNk9@SDf*%8&2vzbLnza;gTJdJaztDUop9>z_r}r-oBluyq1}$mdi8aSkrt0 zhJ5q=fr@Sik5pgq0B;Q%=Yb99=fdsG*?GQ0SBl(hP9NLSB>DMOMhdID z!5XKsGhE=PtjFU;`;%ULJho)$shR#aexLi(>@;?MIty2cZnF4f1HPOxU`$qm4U@BZEEOhN7~R$GX1s$n+UM48<4R4&;uTqo^C<**e?PhZ z+t$fte&hD%vh(s-T{bTtlY^~T0t3gm?yUL18ed}aCe!G?D+k)w{6gMZHlnqc8OpJ5 zJJat%PSO4XR{L6Y8~+7*?wRc&tlhRM3DE;a8oriq~thStZ(58jGSj0}h$HMbW2crmbb8JyiPuIEU zhM4g-JxF;l|30fJ#0n6yx3G=1)1>roZ!&hZh`8Rd%(zf`y0&K$XUb)Onm^ODsp?7-A^*Bwf9Qgid>pVqyXy0yMu zQp@UIv2(p89+*d1aQ)21`;tD(SG@}{M}399bucrmNd>7F2Uryq7!LjA2D@P7%TDVf zcCGcSX@*1KUHr#ewPAgk=;K#S zR~lGNBaj(+6LcHDZwo!zcRO@(_>1h)#%YgU{=`cvXl6~z8CYz>35@;GNe%N8`d3bU z+dQbLg*AD{8n(%PZ-ugJHm}@Ix;&!N9uBK|J^qr{mOCA)_%>G8&Kg~o;Ikb0FzMy^ z-Q;m{Up=aw_;k41^K{*v~A=b}!S*{;WlLALvTRJ9woc`m1`m_FUA zto+0g&iE*&v*4x|kiY5=w4|w#kK2~8`GrG&Ai`V)F=;YV6jLpke`Uj09XBN7p5`Qt zx8!tIoOyt}37eVkJ;tuHT0gG$`PJ5UGJGC;S#$HN1U4K{E_`JRu90nHE3y-QoV;S! z@jBDEfpzzeak}H2xh=Qgvec5$S8-$!|1WDtrNb@5QD4FhZ(2X0=FI7k(Y zc_|a;koQWf6U$+B89lhQcCoj8*7>Ub#}=J%=S(~}b8o5szN^LUADf4y`5!QN-sii6Kku3y zB_r2`?|Q*Mm9YNunz1cqUP~{W`{=wbzPyLj!OMN-* zc~0lYnLEIVqaAZPNyINbD-Yc)y);hId)J$3Q~WvI1#W5pXB^0BFH1gOS0nl5rw87e zp8tLO;LqCb07xRuz-`w}f z&g`){^EbMUe>mGpBo189#GtA_sW^rJV|M^k?te!bu zqW!XB_ZIF4#0Lh}udlzm+9$l} zyzJ|D{u^^RxM%_KBgzuh`%@goA2l0y@ZG=*L@uYz<7VV@rUe`b%e!15z^w8a^_xj! zml2v#^@Tr7GW_Z`rzzyX-a!BRLtd*7G}nh18nK6p_M)qPcR0;m4%GL>m~8(kTT`QU zt%^Etsr39Xe)aVt7*Z_F2ps1T@Ku9+%KnJse!B>{V$>SiRmcpm5@A zUInME{pU+1ij zwckvYJ+9+SUvt`euKyd(^etyx#cu!-unk_B+4e_8n*B!0*5#T~sm1YSWpS zIS0(+2SqGaTDAhFb1*JH6kaU9GA~A0EX_DW-is`4j6F6%W*G4$XgKMXJMQ97jaqsbT|+lsgl*^PGq7;&#F$P6~7n$6QvUVw~Sr zj7s2}OjB7iu2eknSQep56W>3RebaW*Qt-G z#C7F~&}*Dx$)RQp!wA&IM>lv~Z%yc5uWS7$_u8U>3ZCBoyY^6?m;RHSrzObI20y3Yjl0|q)`Y9^q{Aek z5`P71hA&YQ(4oe2@PCHes0@)M#GQLL<4ZmG(b#i*<3AO>*i z2mv{cai|z_f@OWOhP(QKk9SX9o2NzTIinYfmR zP@53y?-X7KXXg+SmjVJts;W5sLU4f?UNhJO;Jl3_ast@Z7iS3V4^Unv?OA6wiM*_i zP^Xen%2;)_I8m7)dm?tBpNWfQS;`u5y*NkhML(9s@gFK5s-LK9l#fYA`BnNYSx+{S zr{zHsFM*FFo=ssJ)E%Us{0?1AKcQ;{aq<>PBi&5ftM1D?B~Da{+)h{~uVvq`rwAtk zFQ!ZqbqUL&;Rj&XKeiWC-{B2^ksIEq}kQ(PG1Eea5Yaxscz zDqWFD0km$ zZy7rEuMs#4V*_KGD8j@92#G%)t3V+N11PNGALS(rkIB$kJaRW^ zmsK2)lQ%fG2bn>mHVEM*5RLOa5u;9=@=687%}N9@R`A|6Kz^(;nnLlA=QEK$fn#IT zZ-mGZLPA`x9z&9FJuzyOf?*gBorYAUjmVvMnIESN5afx{XsC;|r7P9JB=W|!=yBN} zLcB%_-N5DI^Zlq*9)Aq%0b4z=cUNl_(6CE0d#}xSW>&MZ&izOccko zs;&4Ta+HbVtK=w~_{R$^7OIlifrp1G-UH?Z{Y-k2L^)8MFq*i-TB=XcC>Opyld~5J z_?0R}nhYi2F2Qolhg4}CAn^y)X?Y{_LUC06OpIhZh|ryb>?*Ake@CCB9}%-%BI>IXbzL4KZvdYr`@p45XF-hDZ0f$y&QISDZWYqngH zDn!mW)s;dWkSg?|pNKDr!x-d-V^70YhhZIfBN79wmLnH{U3Hv>kf4UB6J?O73V0oU zo47!PJaInQ^8CnujFjHEsIM3WLX%xhT);7@6biubf*J+mlpIBy0)^t30yPT9&`*vo zL&|5C#tk!Gus*MdQPO|T#DB+_zjviCrsXQG9I!nak3qf=T?Ht<$DNTDvE_n5VJV3c z^(itGi*r6yqa^qieco1p7^UF!wI~&Uuo-svy97ku#F1?rN{2$?XUaBZjv!KA&mLh> z1}b&D?H9*dsQ zO+=Q|NpXxSkOr}5WFgEwexSl%5l)q;{6(JXNGe0_%|$a0$#--!|2^ZOOkz+z?!2QM zWkDN)7_pO3RS1Dpml?+HK{-wT*!%!7RVeDXODJ%iZ4IhUHQJbGGLkHfW; zp8hpJxLdlyQS^~WBHd&uY!!$1vJ!rPsF{vY997`mu11(9!#f`Ah%!44-GMfEt{iHE zvb+Eh>c9}@^au>!{~-(5HT7LfRR1E`7jtU`%LdQwF$`_tVJM8jYg6DF21Il*FpfAW zi$o>R7ljS%eQ`=mw6e$xYM}6<2MiFdhq#}&7*vYkGZA_W@G~ABf?%l9me(vmCXhM? zJ;Rx5VOe8XNgy}ezzYV|!}s4j_FG&4J1mP|O3&pj= zx(&xLmq1Y%wlF9TpsZeHBLt4b%R^7Fh~NTE9D zvL%Kvq^@0Q`U9Xf#PP3?j!JZjLZSbyvA^#Oe1WeHxUyI^a>ekB6rI6;_nt#u_#23c zKZd6`bOFvvfOSa(EZQK56JW9f*b{-%tyy#xAX6%-rQ+CTHlDjnUhLH3dDWJt5h8R zwEWX?=}0-sz_3G%vH+?b*|U;DWisufXjRq&9(c0X*w_4LWC~NqqHLVgM}j`W@G3q? z>d6i=mq=842|AbzV6BTpKxspuFCshH6F80LC<5WUip$&=qB{UTAM3(#|D9PBiD9-F z-IJng|82;-_Vmwh18KS*2Kr+3on`Rn@0mCyipF(Cv#1Q(A+m`ywoREXwx_MRBUGfk zQt+C3rhKBh%=wXk%LzE|NjZ83dHHd)y8tCa42+Q;6;dJ0f33(N&`lijlHMdyCJyQ6 zD;Gk%P8F)e|MTf+n2+PGlBgQuc(B%MF@%#=6NZmvr~uMMrSuu~Z6<B%zz8vB@s9^ho);vZoMd~zpL)9sZiM-iuNQiVz)WtgA!q&wja z@6)0v*-N@ug-=$Fl4urFKzz1BHged*aGqDHFo`P*3;GQ13`}!1)XKh8MT=ii33Q9N zNbyl@L*G|5iQL)8#6w{$<;|R+FVjBEGb)uq$6$c*3BeAaC`;|fwuyZOks?$JwZIM& z!f$5p!o6pl>kssr`p3M*NnFxdhTH&t$$Ou{Egoka6v=`@MTr8r!}sR_Z-mynregsL z|DQ4E6F2w;#x(!)K6*pTU9I`y&1rn*taS zgH!C_ZFrp1T7hEm_X$|q097GMFR72hox7@bpzbqWXX`dDQwi^jrx!tVD1`a>73XyH6pc@ExRO47!8!0JU;~l+V*#3~}OkuIr!|!~<%1 z3YP;e_$)wSiY!E_7bAG;VmX8I<9JyoKT&hoGBNTtIA8&z{aS~Q9e{4 zm8vRIo#jHQ66qzbR9dd8P*tg}Q;}R8cZ<5ty-_7|H@Ix>7WYz`!`-89b04I4xFYT` z^^`gyvyzo^$7RpB6S6myv-$;hO5Mb@b0`m3V4{?^l-h{!9#g2ohx}qy0d+UNZSO6*Ib-;yh z3}Ja5$IuL2#YpoB!5ty$^M?KaBw_q0Ww9Ea#2GMJ$Eq`ACCnWf%gaic zE{T~PXRXLlJBr+3V|SMYfE4P!JVx=DY+;y)Er z$oKE3*7@klf1<3O4gNy(@t-n`Y^aQ%LEn<2yEuf2Cc5ACk9y+#4tL6lKqV0Ox3sPd zfBj3sRsmnQV;^u{cX+jm`FsA3Lzw48p;Z75Av^p9V^oF9hl|4`DNH7Ts&V-!C3-7I zvH$r8|NZ0-Z2gxa=(SLvD;&<~DX0P020VikwDl#=;0iIS0NH0gB~_TuWRhVDJNg-s zKmpg{4(Xrqt{K-7#GrGy$8J2-ioerTs1sn<;q z>=}#V9s|pb93aFiRUm&{FJ5&RR!UJ2ZaY+Y2)1n}oF$z@XE21p^1?7#f_yN{kf9J< z#Dzv-xX7o&y+2M%QK3K#Tj1P)^TaVI1{SrMTPqMVhflvdWFiZMeSiu3OTnee5hx94V z33nxK+;Qx2#Zv`(0CB+lV)3pmovubD@cp@_(tiuTf-+sT zyvFr|(5ekXV5`e;t@bP`2Ph4aHi(`txmjXFpBd+Na@o(v>Rlg8DaBU?FdJl1; zJ7g|ZrplH&5U2y^`E+Xc!g*kSJHi44>Sh057S!J);a?{wSYzOzYu6XsnjfypMU1R* zRUmG(0Vs&)YT07Yk3m}3poQREDe#OOq(Tg+Ivw@-NffG2A(3-e3hZRzI0p8yI1KYd zC;}h|m%S7gbcP7I;&LFta>Fn{iJ~AC1`Qu^ktdFO!=hM-Po^Jcn=&0l4=jwaD=NumF|4d zV7K4`MIsariCw>w0-?XDL)t&@T`N>6xkmeP)$%y09p7Kt0!s;3dW5KD9!v7Y;CB8W z|8g$wpI&!a03lVU&|MHhVcEuUqFCiD!)jYkDokRhMt2~c_fUz7aEUJ(LIBvK63mNC!45RN~4Mu%1+ovQ*+Auo1na^F$~0ieXfVXAMgWkrR~SxihF1 zVkD&!dIy~WztA_j66Y!h4@cY*@Pc? zgnCWc(?{4e)|xxPUFOgmDDhbmb{4mms6@UPg8VlCLlAaf!q69_Lm=;xCem0(Rx3R( z$9e`}d7E)RfS`rqTrDCLiD7^Mwcz+L9%=&!h6?XMPN(|EDF6PSFTEoi^zyUz4y!&x zC^!M7K(D&ib{aktrNZl-kPk>=m)Mj0$2~iSi+>Vc+Clhla&ZE_DvVI#yM(WGBIpqkUzk#O&DZn=puaa&rmID)Tu-v|H+Gf zK@h$m1yBC@6o%ra^q60UyOttFfOh|s+DG8O@RXxy{1=II3V{tfP&HI23*kq}F!^f& zy)@pmlzFn2kZNaHDY0afc<#3*w=8ToZgJ02HN28%ZBYr>d1hb&!vL0ZXx( zaEZqxO2avUzfOUJwkTQn*`5Yj!!p>7$>G0STm0{AEvzJ8T3h^|*;@SHTUvD4S^QsG zS){`#bm8SYJT9dSYFDAO|3e+u-)2sFclBSOQZ61|7bVKaNS#QY5TOsyz-NxI6Nf)( zmhRy$==Z&&AXEU|K)pCsdWy@CrOAL+t)0fRVeIr7H2;LPCUR4Y`8d;3gKTBCx}vopi%(waVF_WIS4%IENK@{Rn9^UwHP}ZX;g<{FpXL;{GdXu z7y^-K11P|?K;HKd=DP^tG=`4w5JK_~V93dtb#P{#+|(lm!;cyaw=fuPX)s(WlTTMo znnA*Q(FpO3tqe5Q24*$}(~cSFjvGw3H5hJZFx(zzR?JcTI(Ocud@~&kG$#zq91UhW z8B9HCFx=T-xC_oSVWMi%kDv04b~Vtr8JL|iFg$HA?To~)(r3dsmx$+1C5V?nXkb#4}(FU;`*L9(D)gc`5Vl-U@$kpV0a+zkW!^4 zKBc3J2AUuPvtR?WO9sXP2EF@yitiC(pb0fF3o|ghY%nX_V0Z*BXQ1l#xh*QvKoezP zcE!Lj+FJ4U9buMt!Ppgnk@dc|6`=gnr@iW+K#+$Lj&3 m2CEf;{+efu5Y6LJ2#w+KMk6$Z$D52$F(i*b=rMr42>n0NvJDRa literal 43846 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∓*-k8^Kx9Quy=W6!XHPg=f-e3z- z*n&^=B6=!V0aT?hB7+wklQpfJCg{w=(1RY}@-?-zR@hTU2(7t#_G`#fB2~KPa&R?^u6! z^O@03>722zzS~b+@-CaLbDJ%?!&b{-3u>Uz{hQ664Wv&wb6gu;mvg8)<;?AQxolA$ zTQ8rz{Udr87KG4XFPAC-Cd*=jQkm;L6_1`Diri#mYC37d@TdYdagPl!L?Nj!W4U5z z!e%f<`14Klig^_ij^_msl}HhL=6$wCF)4*EMhUE{ntV_}8zEFYS~TO|8nys^_1HJm zt~QzXfGu=pk%H9vHp1Y~{7V6k>^^ILdZ_!5ZBWDj&oJIPcf~H|AB|&CZRow21ME^Z zQ3m<}yQP-H+JFeDFldQfB`VG*4tu10VdkFVc+E9)0`w}_qDre!-ZZ2jkK!3(zFCEMT?TU^g38bD+J?}l+ZtAo|ax=o^SK3DEd_i}z;Iqp$;DtGqG zsMl=0MmFqaW+F{sAw&C^_-xLf=tDnJ3)gJwYO!2or1yrc`IfEQ%+`I!Cf);qAHdVB z08_)r3hyHu(xSx5Oo1O-;Ig&j=8l!$sYNA8Bf@%$82DoDENjj2=lM71TeYd5SN!L=X&b{pZd@5h!3zFG1^SS zsFyAL$<|3l`+%gO`A4#P0Tc0@l;~vE?t63Nn|K#95fR?cR{zBo46qGiREP?=>g?4o z-)=pLyG)Cq@??JV@BL;Q46=zoY~m~js)chL5?Qsj2G}23Pbc^bKu}d>)Gu*~OquA- zEfcB*sZ z14c`BmLNFHivtz00=D|$!H}%2$|vUw)z?d!QmzvlhIw;DJ{(`5HsA+ zblkG~Syj7QS2Wzp^y7&AY5s8X!4%p-6=lM*2X=ku=Cv)|6u5KzlUbk6b3_+7;sB1( zONJ9OkORPgF@VD`Z-?L8tCi3Yv-;Wbsax-C2#|aU;t;_c2qG$|Tyy8YduDKLXB#Gu zKzy2ae6v{CS!Nh5GFMEOE<3nl-_1bx#C_W;pN3!NKqi445~gQgwxj*SmnDPN)lSO@k7$lC zh9kJb5nSbn2M|w&7eh7i*-@)jHg1{G>J@DDWes`R`PVo^EC+fqRX*-N0ud2$g-)-k ztdHbSloMAypVwe_VdT+Qxg2302g>7ouqLQ(6^Ft4Pj=_@jO|Fnql;}H&%^wA+wn^K zz9+XNwqY6j(`JrTj<31P(JbJo-{WW$a)=@haUV27E#^?1rLq!uzlohWpt#rrU=#X* zhp@8h178+y_A^Rk|D<`0RTC>E`Fl)dDMwt!ffVzI1Kq=aQcNTZcMGgmOYuKDH~4MZ zuqt}84$Z=2@iGZad z@6MQRy5rgB(OZ*xocC-stK*2Cam3F#u&+vPgTh+bicQB>4z62}dTe`-OY?{|FF4|t z9Q{|EnOEpA-%-ZGM@SpEW6^Baoe>?q5gFh1@56mUJcG9ibTjs@uhZf9)G_Nhf(8x* zlsa;k#yKzi{ff6{O;7eYZuU7mE9*5!*vK(x;t1Yw1aCP;%^a}{Z0nFXG6`yfjy}8Z z_t0w?r6o$#yt;daZrVGrR}S$3+zoG-pI zCYRZC{PLa68|asIJvxXR?@sR6loI*UKVrdLxyh2~PaK2K98EWN3n)%CI|I4VcZYwc zWLfi>IT~r{NuBque&HB=<><7M;=?Av_eg5+w6h@(Yo9;uTWX=GQM7S{?HsiZS_jB= z$i~S!ivRSZV-yFdp$EZ{V?c=3$xJ^qtLY}_& z%Q;|wZgN_#2G?_mm~R3F^at{A{>u-Brd{pUB_mcm>TJ8h6<*~E zu5m@NTq2GOh_NRJiwD+VI4Y4W1M{Qz#Y9vuGF$BZY_#CX1u5(4nT)_=c3}bL;xFX}zBKxtWnRB-0*3bR0SI;$ttC7kT zr*VmNF2TwGi61t$HU(@~iQR-%C06E{TnKck!2z&oJZtr{g70{7C-0qXAb9cYf?HhJ zT!R-&-Y^D^(NC=pXLeAHTSAWWRmR{ieHIqJRsNpQ`F> z*?5mrn->RMOna49a5!?oo_k#NLaurdSLZ%gyO=91q?T}DqZKN3Gl|(t*a#wLZt$79 ziZ$vpiFv<;@6?HsjEVbW`%T+wT;S|eA`#5Jl>?Z^J@fZhe|c8)l@ zBkM=|?p0F8bmbc^gfw_@?C0i$VCL_d%lW<3qLgW)-*QFGT#aU!*C6AJvS}}UvtM#c zqVDuuwJX!#aSh|ya3mr0>#CU-yn5whrNWs_DGM9lbBPaJ;v<)kbR)l5uqujC-)~xR zDslK#;ZoOpv!G90;xiXUkI31YSz7y#2J9~{U-qJXE1MR4vxQ510V!~y7za)K-Q%&b zXagHHQ5=Q`ezx_2sqxrf|An7?rJbwZ!PW2NYIo7Qz^bjSB>;?rML;2J^5g0w zxps9fmU*hwvZ|=~8<+Ubg>v8rm>--Zv?7uB8-tr!pU$h5?>@75#b?Eh)!kg82i{Nb z1!J+7k|!U@cOH8*d}SQ(Q-A0wQ^rv*hXM}%-I$a2bXs}~pH|WIXvU5sKe?hluArYQ za_7Wz6ImcGziVzD2e(!IY3K<_+H=eX{lx`T1Qwffx!8tVeKEJ4wdRRsFFksItMQv_ zILH4%`@HqhsUF6M68o zJ$X7_JkfJ@A+r$i=24u;;<>6}3twZCqm1AG$oTl^o$q~kB43`-Ri+aYaz&i^sWs^( zfvL2-pr`+A+Ryak3H^B*=Xv5p=1p!i8EZ%1Jb&cMvOQnE4nMKUV&v=83p_ypPc4vV z5X93>VN^4Nc@&Ssa+y8IG=meugJU!h0aW$9`0R1XJ>BOg1}LwW635o{T;vHud4^#; zz`e<74p@8h?q|COido9(`|9^f;{^}Hd7=oOAd+WziD#5XkK#f0fzz>$mw9lO)2fSX z+s_{9z82G8>xhQ_)|fG+_(C*K{T3UHqRsr$v3{MgiEdw?K8>r6tBv7_ukh6EBdIc+ zuSLl7Pcj>~*hq#Wm$Vo zd$P>@v*z<1(#x?tQ4B2(xcqx$0JrTh5;%p)*G*5$s5$!cm0mngl)y7cGSM;sCK4$=0zDA6{oOu8A#?yNSdi9=Y-r%XH@YIU{ zlYvloakV^OWaMb&p6hjNZAbj5R33o0KygNyy636y^PSdKBo?o-UEPt!GiZj1d^}t# zY|H!JkhyKj_V$+DtE$p@q70r^AnhiYiwuq`0SR%Fo-y}2gp>@vogLPF>RC`GEXjc- zy{wFzO>CXT`IF`~o=#eP?iP>8;t|cMa%Fqa2y8XRVY&9VuZ%&vm`ptzhvt-UTG?D=^-!zcy>64Ozl1E-sIhV9;Z zaPmWZ*!O&%=q}Ij4f>djm3QiT#vOaGI!hS+v9z*aWqbjTFafgc&IE7y;dSlWKuJMq z{&(Y&dpwPJS|J!0Orj07wQuAxDc-)!;g2)?W3O-jGP8)Mai3>c%oCLG#35i`H+{epKIG|MESBY-{lMLQGeCymCSIW~VCXvaA4&lP87A&bJb{Bxg`1W>xU%(1!|q_f-$}n?nX#*IM4BZH&m5R`W!Uc`&h| z0%XpeFt{|ybf?K#*(oDCc6q@Q9`Te1fVL{bELpi_&YX#sl`%RgaLqoGqF6+^gGm%}1w=0uh#6G(j*~k+$ z@kHr#)sP4>Yh~iv6c?Byt#G3EuK%HuHqx)OR3t2i4JD8F|_dACYvoY@AuA zxTxmYiG8HE*~%@l%cU2E59QQCRJ4xV8y+6nPQA?e~#d>mjJ73T9{gWU>GK7Qe>Jyy!3Y+L-c zl`G%+jRyq*5aTwiXI67F)yl0+>&JT8gX`aU#19_P4ekN6+&#dxiK9|tVrORN*h>a1 z3s?<*8TvEYVBwb|TXwaSi$cGC_z8J-Y}bV2?U$`QmrOi9uc7MtPo7R6�dVJ&h;# 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 PNj%;}gz_M2AVU8SI#E1r diff --git a/src/main/java/org/jointheleague/features/GooBotFeatures/Calculator.java b/src/main/java/org/jointheleague/features/GooBotFeatures/Calculator.java index 5f1b962a..b0a5b5a1 100644 --- a/src/main/java/org/jointheleague/features/GooBotFeatures/Calculator.java +++ b/src/main/java/org/jointheleague/features/GooBotFeatures/Calculator.java @@ -17,7 +17,7 @@ public Calculator(String channelName) { //Create a help embed to describe feature when !help command is sent helpEmbed = new HelpEmbed(COMMAND, "Give GooBot a number, an operation symbol, and" + "another number, and GooBot will perform the operation for you! This includes: +, x, /, " + - "-, ^, %. Please have no spaces in the operation provided. Have fun! Eg: !Calculator 55,+,12"); + "-, ^, %. Please have spaces in the operation provided. Have fun! Eg: !Calculator 55 + 12"); } @Override @@ -27,23 +27,28 @@ public void handle(MessageCreateEvent event) { String op; int num2; //respond to message here - if (messageContent.startsWith(COMMAND) ) { + if (messageContent.startsWith(COMMAND)) { int index1 = messageContent.indexOf(","); - int index2 = messageContent.indexOf(",", 15); - String sub1 = messageContent.substring(12, index1); - String subOp2 = messageContent.substring(index1 + 1, index2); - String sub2 = messageContent.substring(index2 + 1); - num1 = Integer.parseInt(sub1); - num2 = Integer.parseInt(sub2); - answer = calculate(event, num1, num2, subOp2); + int index2 = messageContent.indexOf(",", index1 + 1); + String[] seperatedParts = messageContent.split(" "); + if (seperatedParts.length > 3) { + num1 = Integer.parseInt(seperatedParts[1]); + num2 = Integer.parseInt(seperatedParts[3]); + op = seperatedParts[2]; + answer = calculate(event, num1, num2, op); event.getChannel().sendMessage("I got the answer! It is... " + answer); + } else { + event.getChannel().sendMessage("Sorry, we've ran into an error. To be specific, the operation" + + " entered in seemed to not have properly processed, meaning you may have forgotten the correct amount" + + " of spaces or entered something else incorrect for the required format. Check in with the example" + + " at the !help section to make sure you entered your operation in correctly!"); + } } } - - public static double calculate(MessageCreateEvent event, double num1, double num2, String subOp2) { + public static double calculate(MessageCreateEvent event, double num1, double num2, String Op2) { answer = 0; - switch (subOp2) { + switch (Op2) { case "+": answer = num1 + num2; break; diff --git a/src/main/java/org/jointheleague/features/GooBotFeatures/RandomWordGenerator.java b/src/main/java/org/jointheleague/features/GooBotFeatures/RandomWordGenerator.java index 5d904678..25234454 100644 --- a/src/main/java/org/jointheleague/features/GooBotFeatures/RandomWordGenerator.java +++ b/src/main/java/org/jointheleague/features/GooBotFeatures/RandomWordGenerator.java @@ -1,5 +1,7 @@ package org.jointheleague.features.GooBotFeatures; +import org.jointheleague.features.GooBotFeatures.RandomWordWrapper; + import org.javacord.api.event.message.MessageCreateEvent; import org.jointheleague.features.abstract_classes.Feature; import org.jointheleague.features.examples.third_features.plain_old_java_objects.cat_facts_api.CatWrapper; @@ -14,7 +16,6 @@ import java.net.URLConnection; import java.util.Scanner; -//A swagger page for this very simple API can be found here: https://app.swaggerhub.com/apis-docs/whiterabbit8/meowfacts/1.0.0 public class RandomWordGenerator extends Feature { @@ -49,7 +50,7 @@ public void handle(MessageCreateEvent event) { } public String getCoolWord() { - String word = "default"; + String word = "error"; try { URLConnection con = url.openConnection(); InputStream is = con.getInputStream(); @@ -59,6 +60,7 @@ public String getCoolWord() { word = s.next(); is.close(); s.close(); + word = word.substring(1, word.length()-1); } catch (IOException e) { System.out.print("Here is the error: + " + e.getStackTrace()); } diff --git a/src/main/java/org/jointheleague/features/GooBotFeatures/RandomWordWrapper.java b/src/main/java/org/jointheleague/features/GooBotFeatures/RandomWordWrapper.java index 617b8905..0b355d84 100644 --- a/src/main/java/org/jointheleague/features/GooBotFeatures/RandomWordWrapper.java +++ b/src/main/java/org/jointheleague/features/GooBotFeatures/RandomWordWrapper.java @@ -9,6 +9,7 @@ public class RandomWordWrapper { @SerializedName("data") @Expose + private List data = null; public List getData() { diff --git a/src/test/java/org/jointheleague/features/GooBotTests/CalculatorTest.java b/src/test/java/org/jointheleague/features/GooBotTests/CalculatorTest.java index 1776414a..3d59bc20 100644 --- a/src/test/java/org/jointheleague/features/GooBotTests/CalculatorTest.java +++ b/src/test/java/org/jointheleague/features/GooBotTests/CalculatorTest.java @@ -1,6 +1,12 @@ package org.jointheleague.features.GooBotTests; +import org.javacord.api.DiscordApi; import org.javacord.api.entity.channel.TextChannel; +import org.javacord.api.entity.emoji.Emoji; +import org.javacord.api.entity.message.Message; +import org.javacord.api.entity.message.embed.EmbedBuilder; +import org.javacord.api.entity.server.Server; +import org.javacord.api.entity.user.User; import org.javacord.api.event.message.MessageCreateEvent; import org.jointheleague.features.GooBotFeatures.Calculator; import org.jointheleague.features.help_embed.plain_old_java_objects.help_embed.HelpEmbed; @@ -13,6 +19,9 @@ import javax.swing.*; import java.io.ByteArrayOutputStream; import java.io.PrintStream; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.CompletableFuture; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; diff --git a/src/test/java/org/jointheleague/features/GooBotTests/RandomWordGeneratorApiTest.java b/src/test/java/org/jointheleague/features/GooBotTests/RandomWordGeneratorApiTest.java new file mode 100644 index 00000000..daa3b3b5 --- /dev/null +++ b/src/test/java/org/jointheleague/features/GooBotTests/RandomWordGeneratorApiTest.java @@ -0,0 +1,153 @@ +package org.jointheleague.features.GooBotTests; + +import org.javacord.api.entity.channel.TextChannel; +import org.javacord.api.event.message.MessageCreateEvent; +import org.jointheleague.features.GooBotFeatures.RandomWordGenerator; +import org.jointheleague.features.GooBotFeatures.RandomWordWrapper; +import org.jointheleague.features.examples.third_features.plain_old_java_objects.cat_facts_api.CatWrapper; +import org.jointheleague.features.help_embed.plain_old_java_objects.help_embed.HelpEmbed; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.Collections; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.mockito.Mockito.*; + +public class RandomWordGeneratorApiTest { + + private final String testChannelName = "test"; + private RandomWordGenerator RandomWordGenerator; + + private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); + private final PrintStream originalOut = System.out; + + @Mock + private MessageCreateEvent messageCreateEvent; + + @Mock + private TextChannel textChannel; + + @Mock + WebClient webClientMock; + + @Mock + WebClient.RequestHeadersUriSpec requestHeadersUriSpecMock; + + @Mock + WebClient.RequestHeadersSpec requestHeadersSpecMock; + + @Mock + WebClient.ResponseSpec responseSpecMock; + + @Mock + Mono RandomWordWrapperMock; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + + RandomWordGenerator = new RandomWordGenerator(testChannelName); + RandomWordGenerator.setWebClient(webClientMock); + System.setOut(new PrintStream(outContent)); + } + + @AfterEach + public void itShouldNotPrintToSystemOut() { + String expected = ""; + String actual = outContent.toString(); + + assertEquals(expected, actual); + System.setOut(originalOut); + } + + + @Test + void itShouldHaveACommand() { + //Given + + //When + String command = RandomWordGenerator.COMMAND; + + //Then + assertNotEquals("", command); + assertNotEquals("!command", command); + assertNotNull(command); + } + + @Test + void itShouldHaveAHelpEmbed() { + //Given + + //When + HelpEmbed actualHelpEmbed = RandomWordGenerator.getHelpEmbed(); + + //Then + assertNotNull(actualHelpEmbed); + } + + @Test + void itShouldHaveTheCommandAsTheTitleOfTheHelpEmbed() { + //Given + + //When + String helpEmbedTitle = RandomWordGenerator.getHelpEmbed().getTitle(); + String command = RandomWordGenerator.COMMAND; + + //Then + assertEquals(command, helpEmbedTitle); + } + + @Test + void givenMessageWithCommand_whenHandle_thenSendRandomWord() { + //given + String word = "Quizzical"; + List data = Collections.singletonList(word); + + RandomWordWrapper RandomWordWrapper = new RandomWordWrapper(); + RandomWordWrapper.setData(data); + + when(messageCreateEvent.getMessageContent()).thenReturn(RandomWordGenerator.COMMAND); + when(messageCreateEvent.getChannel()).thenReturn(textChannel); + + when(webClientMock.get()) + .thenReturn(requestHeadersUriSpecMock); + when(requestHeadersUriSpecMock.retrieve()) + .thenReturn(responseSpecMock); + when(responseSpecMock.bodyToMono(RandomWordWrapper.class)) + .thenReturn(RandomWordWrapperMock); + when(RandomWordWrapperMock.block()) + .thenReturn(RandomWordWrapper); + + //when + RandomWordGenerator.handle(messageCreateEvent); + + //then + verify(webClientMock, times(1)).get(); + verify(textChannel, times(1)).sendMessage(word); + } + + @Test + void givenMessageWithoutCommand_whenHandle_thenDoNothing() { + //Given + String command = ""; + when(messageCreateEvent.getMessageContent()).thenReturn(command); + + //When + RandomWordGenerator.handle(messageCreateEvent); + + //Then + verify(textChannel, never()).sendMessage(""); + } + +} \ No newline at end of file From 93b83dda724b3e43f37f547e28b46b3a51714fd3 Mon Sep 17 00:00:00 2001 From: zhaoyd5268 Date: Sat, 13 Jul 2024 16:21:12 -0700 Subject: [PATCH 7/9] Finished with all three features ;) --- .../org/jointheleague/features/GooBotFeatures/Calculator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jointheleague/features/GooBotFeatures/Calculator.java b/src/main/java/org/jointheleague/features/GooBotFeatures/Calculator.java index b0a5b5a1..8b17f452 100644 --- a/src/main/java/org/jointheleague/features/GooBotFeatures/Calculator.java +++ b/src/main/java/org/jointheleague/features/GooBotFeatures/Calculator.java @@ -17,7 +17,7 @@ public Calculator(String channelName) { //Create a help embed to describe feature when !help command is sent helpEmbed = new HelpEmbed(COMMAND, "Give GooBot a number, an operation symbol, and" + "another number, and GooBot will perform the operation for you! This includes: +, x, /, " + - "-, ^, %. Please have spaces in the operation provided. Have fun! Eg: !Calculator 55 + 12"); + "-, ^, %. Please have normal spacing in the operation provided. Have fun! Eg: !Calculator 55 + 12"); } @Override From 9623d6f52a66b7765565a5be042eba7b43263722 Mon Sep 17 00:00:00 2001 From: zhaoyd5268 Date: Sat, 13 Jul 2024 16:21:12 -0700 Subject: [PATCH 8/9] Finished with all three features ;) --- .../org/jointheleague/features/GooBotFeatures/Calculator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jointheleague/features/GooBotFeatures/Calculator.java b/src/main/java/org/jointheleague/features/GooBotFeatures/Calculator.java index b0a5b5a1..8b17f452 100644 --- a/src/main/java/org/jointheleague/features/GooBotFeatures/Calculator.java +++ b/src/main/java/org/jointheleague/features/GooBotFeatures/Calculator.java @@ -17,7 +17,7 @@ public Calculator(String channelName) { //Create a help embed to describe feature when !help command is sent helpEmbed = new HelpEmbed(COMMAND, "Give GooBot a number, an operation symbol, and" + "another number, and GooBot will perform the operation for you! This includes: +, x, /, " + - "-, ^, %. Please have spaces in the operation provided. Have fun! Eg: !Calculator 55 + 12"); + "-, ^, %. Please have normal spacing in the operation provided. Have fun! Eg: !Calculator 55 + 12"); } @Override From 6199d14cb67ecd04d6d0d70436667a09fd0a01e5 Mon Sep 17 00:00:00 2001 From: zhaoyd5268 Date: Sat, 20 Jul 2024 10:06:34 -0700 Subject: [PATCH 9/9] Added Wrapper class ;) --- .DS_Store | Bin 0 -> 6148 bytes src/.DS_Store | Bin 0 -> 6148 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .DS_Store create mode 100644 src/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b8ef489fccb084cfa335399b8bafd33d4a481121 GIT binary patch literal 6148 zcmeHLOHRWu6dbozX;mb;WP_9wRN@AqY8Ncnzy%;pR4N5p^&`YCd+xx33vfPGFweG1 z>{1~%2%+~Pdu(UMjwewZ2Y?xF@>8G>pu;5C=ra2vRdd8J)5V9-3!^gs*KmPj#O`vs*6jEIlB=qhyy;kd8lYiBSo8Y-Qb?w z6>dYWb?Le0(h)fY);wlZOj-NRtGc>L{t}aL40Fuud8v)Ts)jnC4yXe^a)4{LM5pIa zb9F!+PzSaS$onB-5==c-4(+RhncV^qTWq$$vV1IxCh?ehtQ_(T!#F9?NsZrP7$;|Y z;(4jZ%Au3P_|1p$BOAX%F?MwJpIACf>QHlaKphAjXu4`&*8lPT{eLLZnmV8k{3{1c zYjiala!P(}-I<)MwF%QTlZ5aphg%5?b}1%TmSXuwVT0|76o{$E${|}A`XOL#&`cfp HRR=x*p%jI~ literal 0 HcmV?d00001 diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0