diff --git a/build/reports/problems/problems-report.html b/build/reports/problems/problems-report.html new file mode 100644 index 00000000..04ae0129 --- /dev/null +++ b/build/reports/problems/problems-report.html @@ -0,0 +1,663 @@ + + + + + + + + + + + + + Gradle Configuration Cache + + + +
+ +
+ Loading... +
+ + + + + + diff --git a/build/reports/tests/test/classes/org.jointheleague.features.student.second_feature.FeatureTwoTest.html b/build/reports/tests/test/classes/org.jointheleague.features.student.second_feature.FeatureTwoTest.html new file mode 100644 index 00000000..89bb70c0 --- /dev/null +++ b/build/reports/tests/test/classes/org.jointheleague.features.student.second_feature.FeatureTwoTest.html @@ -0,0 +1,126 @@ + + + + + +Test results - FeatureTwoTest + + + + + +
+

FeatureTwoTest

+ +
+ + + + + +
+
+ + + + + + + +
+
+
7
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
1.490s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Tests

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TestDurationResult
checkLevelsAdvance()0.090spassed
itShouldCheckScramble()1.276spassed
itShouldHandleMessagesWithCommand()0.006spassed
itShouldHaveACommand()0.002spassed
itShouldHaveAHelpEmbed()0.001spassed
itShouldHaveTheCommandAsTheTitleOfTheHelpEmbed()0.001spassed
itShouldNotHandleMessagesWithoutCommand()0.114spassed
+
+
+ +
+ + 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..c8914a1e --- /dev/null +++ b/build/reports/tests/test/index.html @@ -0,0 +1,133 @@ + + + + + +Test results - Test Summary + + + + + +
+

Test Summary

+
+ + + + + +
+
+ + + + + + + +
+
+
7
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
1.490s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Packages

+ + + + + + + + + + + + + + + + + + + + + +
PackageTestsFailuresIgnoredDurationSuccess rate
+org.jointheleague.features.student.second_feature +7001.490s100%
+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+org.jointheleague.features.student.second_feature.FeatureTwoTest +7001.490s100%
+
+
+ +
+ + 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.student.second_feature.html b/build/reports/tests/test/packages/org.jointheleague.features.student.second_feature.html new file mode 100644 index 00000000..e678fa7e --- /dev/null +++ b/build/reports/tests/test/packages/org.jointheleague.features.student.second_feature.html @@ -0,0 +1,103 @@ + + + + + +Test results - Package org.jointheleague.features.student.second_feature + + + + + +
+

Package org.jointheleague.features.student.second_feature

+ +
+ + + + + +
+
+ + + + + + + +
+
+
7
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
1.490s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Classes

+ + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+FeatureTwoTest +7001.490s100%
+
+
+ +
+ + 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 00000000..f76dd238 Binary files /dev/null and b/build/test-results/test/binary/output.bin.idx differ diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin new file mode 100644 index 00000000..33fc0ff8 Binary files /dev/null and b/build/test-results/test/binary/results.bin differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/DiscordBot.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/DiscordBot.class.uniqueId0 new file mode 100644 index 00000000..36c9b7dc Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/DiscordBot.class.uniqueId0 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FeatureTwo.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/FeatureTwo.class.uniqueId1 new file mode 100644 index 00000000..a9834244 Binary files /dev/null and b/build/tmp/compileJava/compileTransaction/stash-dir/FeatureTwo.class.uniqueId1 differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin new file mode 100644 index 00000000..9b65b7cb Binary files /dev/null and b/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/FeatureTwoTest.class.uniqueId0 b/build/tmp/compileTestJava/compileTransaction/stash-dir/FeatureTwoTest.class.uniqueId0 new file mode 100644 index 00000000..52b99b2d Binary files /dev/null and b/build/tmp/compileTestJava/compileTransaction/stash-dir/FeatureTwoTest.class.uniqueId0 differ diff --git a/build/tmp/compileTestJava/previous-compilation-data.bin b/build/tmp/compileTestJava/previous-compilation-data.bin new file mode 100644 index 00000000..034f42d5 Binary files /dev/null and b/build/tmp/compileTestJava/previous-compilation-data.bin differ diff --git a/src/main/java/org/jointheleague/discord_bot/DiscordBot.java b/src/main/java/org/jointheleague/discord_bot/DiscordBot.java index cefb5f79..a8bbfef1 100644 --- a/src/main/java/org/jointheleague/discord_bot/DiscordBot.java +++ b/src/main/java/org/jointheleague/discord_bot/DiscordBot.java @@ -14,6 +14,7 @@ import org.jointheleague.features.examples.first_features.RandomNumber; import org.jointheleague.features.help_embed.HelpListener; import org.jointheleague.features.student.first_feature.FeatureOne; +import org.jointheleague.features.student.second_feature.FeatureTwo; public class DiscordBot { @@ -61,6 +62,7 @@ public void connect(boolean printInvite) throws InterruptedException { addFeature(new HighLowGame(channelName)); addFeature(new NewsApi(channelName)); addFeature(new CatFactsApi(channelName)); + addFeature(new FeatureTwo(channelName)); } private void addFeature(Feature feature){ diff --git a/src/main/java/org/jointheleague/features/student/second_feature/FeatureTwo.java b/src/main/java/org/jointheleague/features/student/second_feature/FeatureTwo.java new file mode 100644 index 00000000..cc65c9f1 --- /dev/null +++ b/src/main/java/org/jointheleague/features/student/second_feature/FeatureTwo.java @@ -0,0 +1,96 @@ +package org.jointheleague.features.student.second_feature; + +import org.jointheleague.api_wrapper.ReceivedMessage; +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 FeatureTwo extends Feature { + + public final String COMMAND = "!unscramble"; + Random rand = new Random(); + boolean ready = false; + int levelCounter=0; + String[] responseScramble = null; + + + public String[][] words = { + {"six", "cat", "dog", "two","bye","man","fan","pan","zap", "hat","log","rug","pug","wet","net", "set","fix","and"},//l1 + {"iron","wood","tree","tent","duck","king","high","gold","game","fire","hate","inch","deck","farm","dust","flow","food","halt"},//l2 + {"eager", "eagle","cable", "cabin", "caddy", "apple","noise", "sound","wheel","hills","boxes","threw","chart","share","worth","chord","labor"},//l3 + {"honest", "drawer","adieu","holder","govern","liquid","lonely","evolve", "excess","doctor","singer","easily","driven","fourth","friend","casino","canyon","combat"},//l4 + {"abandon", "advisor","allured","ironed","anxious","babysat","backlit","advance","bargain","boombox","gallery","gallons","habitat","haircut","eagerly","soundly","eardrum","factory"},//l5 + {"capacity", "engineer","aircraft","advanced","delivery","compound","exposure","original","northern","galactic","reaction","triangle","treasury","humanity","included","facility","everyday","equation"},//l6 + {"beginning", "household","candidate","jewellery","deduction","important","marketing","governing","practical","judgement","breathing","combating","zealously","reconquer","normalize","objectify","quadratic"},//l7 + {"puzzlingly", "highjacked","maximizing","texturized","laboringly","racetracks","nationhood","complexity","aquaphobia"},//l8 + }; + + public FeatureTwo(String channelName) { + super(channelName); + + //Create a help embed to describe feature when !help command is sent + helpEmbed = new HelpEmbed( + COMMAND, + "Starts a game of unscramble. You are given a series of scrambled letters, and have to guess the unscrambled word. " + + "This game starts easy and gets harder. Points are tracked."+"\n Reply/Answer using the command "+COMMAND + ); + } + + @Override + public void handle(ReceivedMessage event) { + + String messageContent = event.getMessageContent(); + + if (messageContent.startsWith(COMMAND)&&!ready) { + int id = rand.nextInt(words[levelCounter].length); + getScrambled(levelCounter, id); + responseScramble = getScrambled(levelCounter, id); + if (levelCounter == 0) { + event.sendResponse("Alright, lets start a game of unscramble! \n" + + "Unscramble the letters and reply with: \n" + COMMAND + " followed by your guess.\nLevel " + (levelCounter + 1) + ": " + responseScramble[0]); + } else { + event.sendResponse("Level " + (levelCounter + 1) + ": " + responseScramble[0]); + } + ready = true; + } + if (messageContent.startsWith(COMMAND)&&ready) { + if (messageContent.length() > COMMAND.length()) { + if (responseScramble[1].equals(messageContent.substring(COMMAND.length() + 1))) { + if (levelCounter != 7) { + event.sendResponse("Nice, You unscrambled it correctly!\nThe word was " + responseScramble[1] + "\nType " + COMMAND + " to continue!"); + ready = false; + levelCounter += 1; + } else { + event.sendResponse("WOW, You've beaten the game! Congrats on unscrambling all those words! \nType !help to find more commands!"); + ready = false; + levelCounter = 0; + } + } else { + event.sendResponse("Not quite! Try again."); + } + + } + } + } + + public String[] getScrambled(int level, int num) { + + String[] scrambled = new String[2]; + String word = words[level][num]; + char[] arrayofChars = word.toCharArray(); + for (int i = 0; i < word.length(); i++) { + char c = arrayofChars[i]; + + int ran = rand.nextInt(word.length()); + + arrayofChars[i] = arrayofChars[ran]; + arrayofChars[ran] = c; + + } + scrambled[0] = new String(arrayofChars); + scrambled[1] = word; + return scrambled; + } + +} diff --git a/src/test/java/org/jointheleague/features/student/second_feature/FeatureTwoTest.java b/src/test/java/org/jointheleague/features/student/second_feature/FeatureTwoTest.java new file mode 100644 index 00000000..20c453f6 --- /dev/null +++ b/src/test/java/org/jointheleague/features/student/second_feature/FeatureTwoTest.java @@ -0,0 +1,172 @@ +package org.jointheleague.features.student.second_feature; + +import org.jointheleague.api_wrapper.ReceivedMessage; +import org.jointheleague.features.abstract_classes.Feature; +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 FeatureTwoTest { + private final String testChannelName = "testing"; + private final FeatureTwo featureTwo = new FeatureTwo(testChannelName); + + private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); + private final PrintStream originalOut = System.out; + + @Mock + private ReceivedMessage receivedMessage; + + @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 = featureTwo.COMMAND; + + //Then + + if(!(featureTwo 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(featureTwo.COMMAND, "test"); + when(receivedMessage.getMessageContent()).thenReturn(featureTwo.COMMAND); + + //When + featureTwo.handle(receivedMessage); + + //Then + verify(receivedMessage, times(1)).sendResponse(anyString()); + } + + @Test + void itShouldNotHandleMessagesWithoutCommand() { + //Given + String command = ""; + when(receivedMessage.getMessageContent()).thenReturn(command); + + //When + featureTwo.handle(receivedMessage); + + //Then + verify(receivedMessage, never()).sendResponse(""); + } + + @Test + void itShouldHaveAHelpEmbed() { + //Given + + //When + HelpEmbed actualHelpEmbed = featureTwo.getHelpEmbed(); + + //Then + assertNotNull(actualHelpEmbed); + } + + @Test + void itShouldHaveTheCommandAsTheTitleOfTheHelpEmbed() { + //Given + + //When + String helpEmbedTitle = featureTwo.getHelpEmbed().getTitle(); + String command = featureTwo.COMMAND; + + //Then + assertEquals(command, helpEmbedTitle); + } + + @Test + void itShouldCheckScramble() { + for (int i = 0; i < 7; i++) { + String[] testScram = featureTwo.getScrambled(i, 1); + assertNotEquals(testScram[0], testScram[1]); + } + } + + @Test + void checkLevelsAdvance() { + featureTwo.levelCounter = 0; + featureTwo.ready = false; + when(receivedMessage.getMessageContent()).thenReturn(featureTwo.COMMAND); + featureTwo.handle(receivedMessage); + for (int i = 0; i <= 7; i++) { + + + if (i != 7) { + for (int j = 0; j < featureTwo.words[i].length - 1; j++) { + String word = featureTwo.words[i][j]; + when(receivedMessage.getMessageContent()).thenReturn(featureTwo.COMMAND + " " + word); + + featureTwo.handle(receivedMessage); + if (featureTwo.responseScramble[1].equals(word)) { + assertEquals(i + 1, featureTwo.levelCounter); + } else { + assertNotEquals(word, featureTwo.responseScramble[1]); + } + } + + + } else { + for (int j = 0; j < featureTwo.words[i].length; j++) { + String word = featureTwo.words[i][j]; + when(receivedMessage.getMessageContent()).thenReturn(featureTwo.COMMAND + " " + word); + + featureTwo.handle(receivedMessage); + if (i != 7) { + if (featureTwo.responseScramble[1].equals(word)) { + assertEquals(i + 1, featureTwo.levelCounter); + } else { + assertNotEquals(word, featureTwo.responseScramble[1]); + } + } else { + if (featureTwo.responseScramble[1].equals(word)) { + assertEquals(word, featureTwo.responseScramble[1]); + } else { + assertNotEquals(word, featureTwo.responseScramble[1]); + } + } + } + } + } + + } + + +}