summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorAdrien Hopkins <ahopk127@my.yorku.ca>2022-02-26 11:15:04 -0500
committerAdrien Hopkins <ahopk127@my.yorku.ca>2022-02-26 11:15:49 -0500
commit934213e08e85cc20bd994d0f39567426c21b89eb (patch)
treeb6a6ec78124e854246478f001fd0d816703e39ce /src/test
parent07c86e02be29aa3d3d878adce62c5c0a9a458e47 (diff)
Implemented expression conversion, tests now pass
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/sevenUnitsGUI/PresenterTest.java104
1 files changed, 62 insertions, 42 deletions
diff --git a/src/test/java/sevenUnitsGUI/PresenterTest.java b/src/test/java/sevenUnitsGUI/PresenterTest.java
index ff1450b..deb16d7 100644
--- a/src/test/java/sevenUnitsGUI/PresenterTest.java
+++ b/src/test/java/sevenUnitsGUI/PresenterTest.java
@@ -19,16 +19,19 @@ package sevenUnitsGUI;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import java.util.Collection;
import java.util.List;
import java.util.Optional;
import java.util.OptionalDouble;
import java.util.Set;
+import java.util.stream.Collectors;
import org.junit.jupiter.api.Test;
import sevenUnits.unit.BaseDimension;
import sevenUnits.unit.Metric;
import sevenUnits.unit.Unit;
+import sevenUnits.unit.UnitValue;
import sevenUnits.utils.NameSymbol;
import sevenUnits.utils.NamedObjectProduct;
@@ -38,51 +41,20 @@ import sevenUnits.utils.NamedObjectProduct;
* @since 2022-02-10
*/
public final class PresenterTest {
+ private static final List<String> unitNames(
+ Collection<? extends Unit> units) {
+ return units.stream().map(Unit::getShortName)
+ .collect(Collectors.toList());
+ }
+
Set<Unit> testUnits = Set.of(Metric.METRE, Metric.KILOMETRE,
Metric.METRE_PER_SECOND, Metric.KILOMETRE_PER_HOUR);
+
Set<NamedObjectProduct<BaseDimension>> testDimensions = Set.of(
Metric.Dimensions.LENGTH.withName(NameSymbol.ofName("Length")),
Metric.Dimensions.VELOCITY.withName(NameSymbol.ofName("Velocity")));
/**
- * Test for {@link Presenter#updateView()}
- *
- * @since 2022-02-12
- */
- @Test
- void testUpdateView() {
- // setup
- final ViewBot viewBot = new ViewBot();
- final Presenter presenter = new Presenter(viewBot);
-
- viewBot.setFromUnits(this.testUnits);
- viewBot.setToUnits(this.testUnits);
- viewBot.setDimensions(this.testDimensions);
- viewBot.setSelectedDimension(
- Optional.of(this.testDimensions.iterator().next()));
-
- // filter to length units only, then get the filtered sets of units
- presenter.updateView();
- final Set<Unit> fromUnits = viewBot.getFromUnits();
- final Set<Unit> toUnits = viewBot.getToUnits();
-
- // test that fromUnits/toUnits is [METRE, KILOMETRE]
- // HOWEVER I don't care about the order so I'm testing it this way
- assertEquals(2, fromUnits.size(),
- "Invalid fromUnits (length != 2): " + fromUnits);
- assertEquals(2, toUnits.size(),
- "Invalid toUnits (length != 2): " + toUnits);
- assertTrue(fromUnits.contains(Metric.METRE),
- "Invaild fromUnits (METRE missing): " + fromUnits);
- assertTrue(toUnits.contains(Metric.METRE),
- "Invaild toUnits (METRE missing): " + toUnits);
- assertTrue(fromUnits.contains(Metric.KILOMETRE),
- "Invaild fromUnits (KILOMETRE missing): " + fromUnits);
- assertTrue(toUnits.contains(Metric.KILOMETRE),
- "Invaild toUnits (KILOMETRE missing): " + toUnits);
- }
-
- /**
* Test method for {@link Presenter#convertExpressions}
*
* @since 2022-02-12
@@ -129,10 +101,58 @@ public final class PresenterTest {
* here (that's for the backend tests), I'm just testing that it correctly
* calls the unit conversion system
*/
- final String expected = String
- .valueOf(Metric.METRE.convertTo(Metric.KILOMETRE, 10000.0));
+ final UnitValue expectedInput = UnitValue.of(Metric.METRE, 10000.0);
+ final UnitValue expectedOutput = expectedInput
+ .convertTo(Metric.KILOMETRE);
+
+ final List<UnitValue> inputs = viewBot.getUnitConversionInputValues();
+ final List<UnitValue> outputs = viewBot.getUnitConversionOutputValues();
+ assertEquals(expectedInput, inputs.get(inputs.size() - 1));
+ assertEquals(expectedOutput, outputs.get(outputs.size() - 1));
+ }
+
+ /**
+ * Test for {@link Presenter#updateView()}
+ *
+ * @since 2022-02-12
+ */
+ @Test
+ void testUpdateView() {
+ // setup
+ final ViewBot viewBot = new ViewBot();
+ final Presenter presenter = new Presenter(viewBot);
+
+ // override default database units
+ presenter.database.clear();
+ for (final Unit unit : this.testUnits) {
+ presenter.database.addUnit(unit.getPrimaryName().orElseThrow(), unit);
+ }
+
+ // set from and to units
+ viewBot.setFromUnits(this.testUnits);
+ viewBot.setToUnits(this.testUnits);
+ viewBot.setDimensions(this.testDimensions);
+ viewBot.setSelectedDimension(
+ Optional.of(this.testDimensions.iterator().next()));
+
+ // filter to length units only, then get the filtered sets of units
+ presenter.updateView();
+ final Set<Unit> fromUnits = viewBot.getFromUnits();
+ final Set<Unit> toUnits = viewBot.getToUnits();
- final List<String> outputs = viewBot.getUnitConversionOutputValues();
- assertEquals(expected, outputs.get(outputs.size() - 1));
+ // test that fromUnits/toUnits is [METRE, KILOMETRE]
+ // HOWEVER I don't care about the order so I'm testing it this way
+ assertEquals(2, fromUnits.size(),
+ "Invalid fromUnits (length != 2): " + unitNames(fromUnits));
+ assertEquals(2, toUnits.size(),
+ "Invalid toUnits (length != 2): " + unitNames(toUnits));
+ assertTrue(fromUnits.contains(Metric.METRE),
+ "Invaild fromUnits (METRE missing): " + unitNames(fromUnits));
+ assertTrue(toUnits.contains(Metric.METRE),
+ "Invaild toUnits (METRE missing): " + unitNames(toUnits));
+ assertTrue(fromUnits.contains(Metric.KILOMETRE),
+ "Invaild fromUnits (KILOMETRE missing): " + unitNames(fromUnits));
+ assertTrue(toUnits.contains(Metric.KILOMETRE),
+ "Invaild toUnits (KILOMETRE missing): " + unitNames(toUnits));
}
}