summaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/UnitsDatabaseTest.java67
1 files changed, 66 insertions, 1 deletions
diff --git a/src/test/java/UnitsDatabaseTest.java b/src/test/java/UnitsDatabaseTest.java
index 9222740..6d2247f 100644
--- a/src/test/java/UnitsDatabaseTest.java
+++ b/src/test/java/UnitsDatabaseTest.java
@@ -19,6 +19,7 @@ package test.java;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.util.Iterator;
import java.util.Map;
@@ -49,6 +50,8 @@ public class UnitsDatabaseTest {
// used for testing expressions
// J = U^2 * V / W^2
private static final LinearUnit J = SI.KILOGRAM.times(SI.METRE.toExponent(2)).dividedBy(SI.SECOND.toExponent(2));
+ private static final LinearUnit K = SI.KELVIN;
+
private static final Unit NONLINEAR = new AbstractUnit(SI.METRE) {
@Override
@@ -70,6 +73,52 @@ public class UnitsDatabaseTest {
private static final UnitPrefix BC = new DefaultUnitPrefix(11);
/**
+ * Confirms that operations that shouldn't function for infinite databases throw an {@code IllegalStateException}.
+ *
+ * @since 2019-05-03
+ */
+ @Test
+ public void testInfiniteSetExceptions() {
+ // load units
+ final UnitsDatabase infiniteDatabase = new UnitsDatabase();
+
+ infiniteDatabase.addUnit("J", J);
+ infiniteDatabase.addUnit("K", K);
+
+ infiniteDatabase.addPrefix("A", A);
+ infiniteDatabase.addPrefix("B", B);
+ infiniteDatabase.addPrefix("C", C);
+
+ {
+ boolean exceptionThrown = false;
+ try {
+ infiniteDatabase.unitMap().entrySet().toArray();
+ } catch (final IllegalStateException e) {
+ exceptionThrown = true;
+ // pass!
+ } finally {
+ if (!exceptionThrown) {
+ fail("No IllegalStateException thrown");
+ }
+ }
+ }
+
+ {
+ boolean exceptionThrown = false;
+ try {
+ infiniteDatabase.unitMap().keySet().toArray();
+ } catch (final IllegalStateException e) {
+ exceptionThrown = true;
+ // pass!
+ } finally {
+ if (!exceptionThrown) {
+ fail("No IllegalStateException thrown");
+ }
+ }
+ }
+ }
+
+ /**
* Test that prefixes correctly apply to units.
*
* @since 2019-04-14
@@ -189,11 +238,15 @@ public class UnitsDatabaseTest {
final UnitsDatabase database = new UnitsDatabase();
database.addUnit("J", J);
+ database.addUnit("K", K);
database.addPrefix("A", A);
database.addPrefix("B", B);
database.addPrefix("C", C);
+ final int NUM_UNITS = database.unitMapPrefixless().size();
+ final int NUM_PREFIXES = database.prefixMap().size();
+
final Iterator<String> nameIterator = database.unitMap().keySet().iterator();
final Iterator<Entry<String, Unit>> entryIterator = database.unitMap().entrySet().iterator();
@@ -203,11 +256,12 @@ public class UnitsDatabaseTest {
// loop 1000 times
for (int i = 0; i < 1000; i++) {
// expected length of next
- if (unitsWithThisLengthSoFar >= (int) Math.pow(3, expectedLength - 1)) {
+ if (unitsWithThisLengthSoFar >= NUM_UNITS * (int) Math.pow(NUM_PREFIXES, expectedLength - 1)) {
expectedLength++;
unitsWithThisLengthSoFar = 0;
}
+ // test that stuff is valid
final String nextName = nameIterator.next();
final Unit nextUnit = database.getUnit(nextName);
final Entry<String, Unit> nextEntry = entryIterator.next();
@@ -218,6 +272,17 @@ public class UnitsDatabaseTest {
unitsWithThisLengthSoFar++;
}
+
+ // test toString for consistency
+ final String entryIteratorString = entryIterator.toString();
+ for (int i = 0; i < 3; i++) {
+ assertEquals(entryIteratorString, entryIterator.toString());
+ }
+
+ final String nameIteratorString = nameIterator.toString();
+ for (int i = 0; i < 3; i++) {
+ assertEquals(nameIteratorString, nameIterator.toString());
+ }
}
/**