diff options
author | Adrien Hopkins <ahopk127@my.yorku.ca> | 2022-07-08 10:49:36 -0500 |
---|---|---|
committer | Adrien Hopkins <ahopk127@my.yorku.ca> | 2022-07-08 10:49:36 -0500 |
commit | 97e51fe823b2a6ea437c625427094b2944c5378a (patch) | |
tree | 2703bc54d9a623c78d7c8a2a7d3b91d1622cb8a9 /src | |
parent | 7dac440cfbbea898ebd3963d24356119e7247ddb (diff) |
Added basic tests for the search rules
Diffstat (limited to 'src')
-rw-r--r-- | src/test/java/sevenUnitsGUI/PresenterTest.java | 45 |
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 |