diff --git a/.idea/runConfigurations/ChainingHashDictionaryTests.xml b/.idea/runConfigurations/ChainingHashDictionaryTests.xml new file mode 100644 index 0000000000000000000000000000000000000000..8c2406619c9b59f06ddf6a0ae54150d43a6f60a3 --- /dev/null +++ b/.idea/runConfigurations/ChainingHashDictionaryTests.xml @@ -0,0 +1,18 @@ +<component name="ProjectRunConfigurationManager"> + <configuration default="false" name="ChainingHashDictionaryTests" type="JUnit" factoryName="JUnit" nameIsGenerated="true"> + <module name="project05-markov" /> + <extension name="coverage"> + <pattern> + <option name="PATTERN" value="edu.caltech.cs2.datastructures.*" /> + <option name="ENABLED" value="true" /> + </pattern> + </extension> + <option name="PACKAGE_NAME" value="edu.caltech.cs2.datastructures" /> + <option name="MAIN_CLASS_NAME" value="edu.caltech.cs2.datastructures.ChainingHashDictionaryTests" /> + <option name="METHOD_NAME" value="" /> + <option name="TEST_OBJECT" value="class" /> + <method v="2"> + <option name="Make" enabled="true" /> + </method> + </configuration> +</component> \ No newline at end of file diff --git a/.idea/runConfigurations/MoveToFrontDictionaryTests.xml b/.idea/runConfigurations/MoveToFrontDictionaryTests.xml new file mode 100644 index 0000000000000000000000000000000000000000..3ed7799018cbed298dc3dc0bfbf7aec4a9e42896 --- /dev/null +++ b/.idea/runConfigurations/MoveToFrontDictionaryTests.xml @@ -0,0 +1,18 @@ +<component name="ProjectRunConfigurationManager"> + <configuration default="false" name="MoveToFrontDictionaryTests" type="JUnit" factoryName="JUnit" nameIsGenerated="true"> + <module name="project05-markov" /> + <extension name="coverage"> + <pattern> + <option name="PATTERN" value="edu.caltech.cs2.datastructures.*" /> + <option name="ENABLED" value="true" /> + </pattern> + </extension> + <option name="PACKAGE_NAME" value="edu.caltech.cs2.datastructures" /> + <option name="MAIN_CLASS_NAME" value="edu.caltech.cs2.datastructures.MoveToFrontDictionaryTests" /> + <option name="METHOD_NAME" value="" /> + <option name="TEST_OBJECT" value="class" /> + <method v="2"> + <option name="Make" enabled="true" /> + </method> + </configuration> +</component> \ No newline at end of file diff --git a/.idea/runConfigurations/NGramTests.xml b/.idea/runConfigurations/NGramTests.xml new file mode 100644 index 0000000000000000000000000000000000000000..e6eca74d7bb4c74ce153b6f4803396399fdeb8b0 --- /dev/null +++ b/.idea/runConfigurations/NGramTests.xml @@ -0,0 +1,18 @@ +<component name="ProjectRunConfigurationManager"> + <configuration default="false" name="NGramTests" type="JUnit" factoryName="JUnit" nameIsGenerated="true"> + <module name="project05-markov" /> + <extension name="coverage"> + <pattern> + <option name="PATTERN" value="edu.caltech.cs2.datastructures.*" /> + <option name="ENABLED" value="true" /> + </pattern> + </extension> + <option name="PACKAGE_NAME" value="edu.caltech.cs2.datastructures" /> + <option name="MAIN_CLASS_NAME" value="edu.caltech.cs2.datastructures.NGramTests" /> + <option name="METHOD_NAME" value="" /> + <option name="TEST_OBJECT" value="class" /> + <method v="2"> + <option name="Make" enabled="true" /> + </method> + </configuration> +</component> \ No newline at end of file diff --git a/tests/edu/caltech/cs2/datastructures/ChainingHashDictionaryTests.java b/tests/edu/caltech/cs2/datastructures/ChainingHashDictionaryTests.java index 730ac47f30f4f3a2d1b454c06eabab3ef157fb2b..6830c6d2e61355d03e489a8a52c4b07a53ce801c 100644 --- a/tests/edu/caltech/cs2/datastructures/ChainingHashDictionaryTests.java +++ b/tests/edu/caltech/cs2/datastructures/ChainingHashDictionaryTests.java @@ -61,7 +61,7 @@ public class ChainingHashDictionaryTests implements IDictionaryNGramTests { @DisplayName("Does not use or import disallowed classes from java.util") @Test public void testForInvalidImportsJavaUtil() { - List<String> allowed = List.of("Iterator", "Supplier", "Stream"); + List<String> allowed = List.of("Iterator", "function\\.Supplier", "stream\\.Stream"); Inspection.assertNoImportsOfExcept(DICTIONARY_SOURCE, "java\\.util", allowed); List<String> bannedUsages = List.of("java\\.util\\.(?!" + String.join("|", allowed) + ")"); @@ -94,14 +94,12 @@ public class ChainingHashDictionaryTests implements IDictionaryNGramTests { @Timeout(value = 20, unit = SECONDS) @Test public void testGrowthCapability() { - Set<IDictionary<Object, Object>> dicts = new HashSet<>(); - for (int i = 0; i < 50; i++) { - dicts.add(new ChainingHashDictionary<>(MoveToFrontDictionary::new)); - } - for (IDictionary<Object, Object> dict : dicts) { - for (int i = 0; i < 400000; i++) { - dict.put(i, i); + for (int i = 0; i < 25; i++) { + IDictionary<Object, Object> dict = new ChainingHashDictionary<>(MoveToFrontDictionary::new); + for (int j = 0; j < 500000; j++) { + dict.put(j, j); } + // This _should_ get GC'd with a smaller heap size... } } diff --git a/tests/edu/caltech/cs2/datastructures/IDictionaryNGramTests.java b/tests/edu/caltech/cs2/datastructures/IDictionaryNGramTests.java index 858c3a71c69d6a2a9500c431b224fe133c3283fa..683ca292f9606f7bb4220cdc9c2d7408ad1a0cfc 100644 --- a/tests/edu/caltech/cs2/datastructures/IDictionaryNGramTests.java +++ b/tests/edu/caltech/cs2/datastructures/IDictionaryNGramTests.java @@ -6,6 +6,7 @@ import edu.caltech.cs2.textgenerator.NGram; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Timeout; import org.junit.jupiter.params.provider.Arguments; import java.util.HashMap; @@ -17,6 +18,7 @@ import java.util.stream.Stream; import static edu.caltech.cs2.project05.Project05TestOrdering.sanityTestLevel; import static edu.caltech.cs2.project05.Project05TestOrdering.specialTestLevel; +import static java.util.concurrent.TimeUnit.SECONDS; import static org.junit.jupiter.api.Assertions.assertTrue; // Wrapper class for all IDictionaries that will be tested using NGram keys to reduce code repetition @@ -47,7 +49,7 @@ public interface IDictionaryNGramTests extends IDictionaryTests { @Override default Map<Object, Object> generateRandomTestData(int size, Random rand, int maxNodeDegree, int minKeyLength, - int maxKeyLength) { + int maxKeyLength) { Map<Object, Object> base = new HashMap<>(); for (int i = 0; i < size; i++) { int keyLength = minKeyLength + rand.nextInt(maxKeyLength - minKeyLength); @@ -77,6 +79,7 @@ public interface IDictionaryNGramTests extends IDictionaryTests { @Order(specialTestLevel) @DisplayName("Test get() -- complexity") @Test + @Timeout(value = 20, unit = SECONDS) default void testGetComplexity() { Function<Integer, IDictionary<Object, Object>> provide = (Integer numElements) -> { IDictionary<Object, Object> t = newIDictionary(); @@ -95,6 +98,7 @@ public interface IDictionaryNGramTests extends IDictionaryTests { @Order(specialTestLevel) @DisplayName("Test put() -- complexity") @Test + @Timeout(value = 20, unit = SECONDS) default void testPutComplexity() { Function<Integer, IDictionary<Object, Object>> provide = (Integer numElements) -> { IDictionary<Object, Object> t = newIDictionary(); @@ -113,6 +117,7 @@ public interface IDictionaryNGramTests extends IDictionaryTests { @Order(specialTestLevel) @DisplayName("Test size() -- complexity") @Test + @Timeout(value = 20, unit = SECONDS) default void testSizeComplexity() { Function<Integer, IDictionary<Object, Object>> provide = (Integer numElements) -> { IDictionary<Object, Object> t = newIDictionary(); diff --git a/tests/edu/caltech/cs2/datastructures/MoveToFrontDictionaryTests.java b/tests/edu/caltech/cs2/datastructures/MoveToFrontDictionaryTests.java index a92f3ac4f6cdfb927597475140fbfbb6ed0d4bc4..2eb4546dddde5c7b1be9d4f7686145bd9fbf3354 100644 --- a/tests/edu/caltech/cs2/datastructures/MoveToFrontDictionaryTests.java +++ b/tests/edu/caltech/cs2/datastructures/MoveToFrontDictionaryTests.java @@ -96,7 +96,6 @@ public class MoveToFrontDictionaryTests implements IDictionaryNGramTests { } } - // TODO: what the fuck @Order(classSpecificTestLevel) @DisplayName("Check MoveToFrontDictionary class is properly implemented") @Test