Swapped GuesserTests and ChooserTests
.idea
misc.xml +1 -1
workspace.xml +46 -95
tests/edu/caltech/cs2/project02
ChooserTests.java +234 -39
GuesserTests.java +40 -235
+ 1
- 1
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11.0.1" project-jdk-type="JavaSDK">
\ No newline at end of file
+ 46
- 95
<list default="true" id="241d48ef-642b-434c-8a58-a60cbd226800" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/vcs.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/edu/caltech/cs2/project02/choosers/EvilHangmanChooser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/edu/caltech/cs2/project02/choosers/EvilHangmanChooser.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/edu/caltech/cs2/project02/guessers/AIHangmanGuesser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/edu/caltech/cs2/project02/guessers/AIHangmanGuesser.java" afterDir="false" />
<caret line="10" column="21" selection-start-line="10" selection-start-column="21" selection-end-line="10" selection-end-column="21" />
<caret line="13" column="12" selection-start-line="13" selection-start-column="12" selection-end-line="13" selection-end-column="12" />
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1546278838996" />
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.2761087" />
<caret line="10" column="21" selection-start-line="10" selection-start-column="21" selection-end-line="10" selection-end-column="21" />
<caret line="13" column="12" selection-start-line="13" selection-start-column="12" selection-end-line="13" selection-end-column="12" />
private static String GUESSER_SOURCE = "src/edu/caltech/cs2/project02/guessers/AIHangmanGuesser.java";
assertEquals('i', (char)Reflection.invoke(m, instance, "---", new HashSet<>(Arrays.asList('a', 'e', 'o'))));
assertEquals('e', (char)Reflection.invoke(m, instance, "sc--nc-", new HashSet<>(Arrays.asList('s', 'n', 'c'))));
assertEquals('a', (char)Reflection.invoke(m, instance, "-ppl-", new HashSet<>(Arrays.asList('p', 'l'))));
assertEquals('g', (char)Reflection.invoke(m, instance, "en-ineerin-", new HashSet<>(Arrays.asList('e', 'n', 'i', 'r'))));
private static String RANDOM_SOURCE = "src/edu/caltech/cs2/project02/choosers/RandomHangmanChooser.java";
private static String EVIL_SOURCE = "src/edu/caltech/cs2/project02/choosers/EvilHangmanChooser.java";
@DisplayName("Expected makeGuess() exceptions for characters that aren't lower case for RandomHangmanChooser")
IntStream.range(0, 20).forEach(i -> assertThrows(IllegalArgumentException.class, () -> m.invoke(chooser, (char) ('a' - (i + 1)))));
IntStream.range(0, 20).forEach(i -> assertThrows(IllegalArgumentException.class, () -> m.invoke(chooser, (char) ('z' + (i + 1)))));
public void runTestGame(Class<? extends IHangmanChooser> clazz, int wordLength, int wrongAnswersAllowed, String guesses) {
Constructor<? extends IHangmanChooser> constructor = Reflection.getConstructor(clazz, int.class, int.class);
public void testPlayGameWithRandomChooser(Map<String, String> arguments, String expectedOutput, CaptureSystemOutput.OutputCapture capture) {
assertEquals(expectedOutput.replace("\r\n", "\n").strip(), capture.toString().replace("\r\n", "\n").strip());
if (Reflection.getFields(EvilHangmanChooser.class).filter(Reflection.hasType(Map.class)).findAny().isPresent()) {
fail("You should not be storing a map as a field! Think about if the map is used in more than one method.");
@DisplayName("Expected makeGuess() exceptions for characters that aren't lower case for EvilHangmanChooser")
IntStream.range(0, 20).forEach(i -> assertThrows(IllegalArgumentException.class, () -> m.invoke(chooser, (char) ('a' - (i + 1)))));
IntStream.range(0, 20).forEach(i -> assertThrows(IllegalArgumentException.class, () -> m.invoke(chooser, (char) ('z' + (i + 1)))));
public void testPlayGameWithEvilChooser(Map<String, String> arguments, String expectedOutput, CaptureSystemOutput.OutputCapture capture) {
assertEquals(expectedOutput.replace("\r\n", "\n").strip(), capture.toString().replace("\r\n", "\n").strip());
\ No newline at end of file