summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdrien Hopkins <ahopk127@my.yorku.ca>2022-07-08 10:49:36 -0500
committerAdrien Hopkins <ahopk127@my.yorku.ca>2022-07-08 10:49:36 -0500
commit97e51fe823b2a6ea437c625427094b2944c5378a (patch)
tree2703bc54d9a623c78d7c8a2a7d3b91d1622cb8a9 /src
parent7dac440cfbbea898ebd3963d24356119e7247ddb (diff)
Added basic tests for the search rules
Diffstat (limited to 'src')
-rw-r--r--src/test/java/sevenUnitsGUI/PresenterTest.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/test/java/sevenUnitsGUI/PresenterTest.java b/src/test/java/sevenUnitsGUI/PresenterTest.java
index 0f54e7e..1379abd 100644
--- a/src/test/java/sevenUnitsGUI/PresenterTest.java
+++ b/src/test/java/sevenUnitsGUI/PresenterTest.java
@@ -21,7 +21,9 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.math.RoundingMode;
import java.nio.file.Path;
+import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -33,6 +35,7 @@ import org.junit.jupiter.params.provider.MethodSource;
import sevenUnits.unit.BaseDimension;
import sevenUnits.unit.BritishImperial;
+import sevenUnits.unit.LinearUnit;
import sevenUnits.unit.LinearUnitValue;
import sevenUnits.unit.Metric;
import sevenUnits.unit.Unit;
@@ -56,6 +59,10 @@ public final class PresenterTest {
static final Set<ObjectProduct<BaseDimension>> testDimensions = Set
.of(Metric.Dimensions.LENGTH, Metric.Dimensions.VELOCITY);
+ private static final Stream<Function<Map.Entry<String, LinearUnit>, Map<String, LinearUnit>>> SEARCH_RULES = Stream
+ .of(PrefixSearchRule.NO_PREFIXES, PrefixSearchRule.COMMON_PREFIXES,
+ PrefixSearchRule.ALL_METRIC_PREFIXES);
+
/**
* @return rounding rules used by {@link #testRoundingRules}
* @since 2022-04-16
@@ -68,6 +75,10 @@ public final class PresenterTest {
return Stream.of(SCIENTIFIC_ROUNDING, INTEGER_ROUNDING, SIG_FIG_ROUNDING);
}
+ private static final Stream<Function<Map.Entry<String, LinearUnit>, Map<String, LinearUnit>>> getSearchRules() {
+ return SEARCH_RULES;
+ }
+
private static final Set<String> names(Set<? extends Nameable> units) {
return units.stream().map(Nameable::getName).collect(Collectors.toSet());
}
@@ -254,6 +265,40 @@ public final class PresenterTest {
}
/**
+ * Tests that the Presenter correctly applies search rules.
+ *
+ * @param searchRule search rule to test
+ * @since 2022-07-08
+ */
+ @ParameterizedTest
+ @MethodSource("getSearchRules")
+ void testSearchRules(
+ Function<Map.Entry<String, LinearUnit>, Map<String, LinearUnit>> searchRule) {
+ // setup
+ final var viewBot = new ViewBot();
+ final var presenter = new Presenter(viewBot);
+
+ presenter.setSearchRule(searchRule);
+ presenter.setOneWayConversionEnabled(false);
+
+ presenter.database.clear();
+ presenter.database.addUnit("metre", Metric.METRE);
+ presenter.database.addUnit("inch", BritishImperial.Length.INCH);
+ presenter.updateView();
+
+ // create expected output based on rule
+ final Set<String> expectedOutput = new HashSet<>();
+ expectedOutput.addAll(searchRule
+ .apply(Map.entry("inch", BritishImperial.Length.INCH)).keySet());
+ expectedOutput.addAll(
+ searchRule.apply(Map.entry("metre", Metric.METRE)).keySet());
+ final Set<String> actualOutput = viewBot.getFromUnitNames();
+
+ // test output
+ assertEquals(expectedOutput, actualOutput);
+ }
+
+ /**
* Tests that settings can be saved to and loaded from a file.
*
* @since 2022-04-16