From 97e51fe823b2a6ea437c625427094b2944c5378a Mon Sep 17 00:00:00 2001 From: Adrien Hopkins Date: Fri, 8 Jul 2022 10:49:36 -0500 Subject: Added basic tests for the search rules --- src/test/java/sevenUnitsGUI/PresenterTest.java | 45 ++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) 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> testDimensions = Set .of(Metric.Dimensions.LENGTH, Metric.Dimensions.VELOCITY); + private static final Stream, Map>> 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, Map>> getSearchRules() { + return SEARCH_RULES; + } + private static final Set names(Set units) { return units.stream().map(Nameable::getName).collect(Collectors.toSet()); } @@ -253,6 +264,40 @@ public final class PresenterTest { assertEquals(expectedOutputString, actualOutputString); } + /** + * 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> 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 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 actualOutput = viewBot.getFromUnitNames(); + + // test output + assertEquals(expectedOutput, actualOutput); + } + /** * Tests that settings can be saved to and loaded from a file. * -- cgit v1.2.3