Skip to content

Commit 22835f3

Browse files
authored
Improve symbol generation testing and symbol check output (#108)
1 parent 4ce7988 commit 22835f3

File tree

3 files changed

+41
-36
lines changed

3 files changed

+41
-36
lines changed

qudtlib-test/src/test/java/io/github/qudtlib/FactorUnitsTests.java

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -431,22 +431,25 @@ public static Stream<Arguments> testSortAccordingToUnitLabel() {
431431
.getFactorUnits()));
432432
}
433433

434-
@Test
435-
public void getSymbol() {
436-
FactorUnits m1 = FactorUnits.ofFactorUnitSpec(M, 1);
437-
Assertions.assertEquals("m", m1.getSymbol().get());
438-
439-
FactorUnits m_1 = FactorUnits.ofFactorUnitSpec(M, -1);
440-
Assertions.assertEquals("/m", m_1.getSymbol().get());
441-
442-
FactorUnits m8 = FactorUnits.ofFactorUnitSpec(M, 8);
443-
Assertions.assertEquals("m⁸", m8.getSymbol().get());
444-
445-
FactorUnits ms12 = FactorUnits.ofFactorUnitSpec(MilliSEC, 12);
446-
Assertions.assertEquals("ms¹²", ms12.getSymbol().get());
434+
@ParameterizedTest
435+
@MethodSource
436+
public void getSymbol(String expectedSymbol, FactorUnits factorUnits) {
437+
Assertions.assertEquals(
438+
expectedSymbol,
439+
factorUnits.getSymbol().orElse("[no symbol]"),
440+
String.format(
441+
"Factor units %s should return %s for getSymbol()",
442+
factorUnits, expectedSymbol));
443+
}
447444

448-
FactorUnits ms_9 = FactorUnits.ofFactorUnitSpec(MilliSEC, -9);
449-
Assertions.assertEquals("/ms⁹", ms_9.getSymbol().get());
445+
public static Stream<Arguments> getSymbol() {
446+
return Stream.of(
447+
Arguments.of("m", FactorUnits.ofFactorUnitSpec(M, 1)),
448+
Arguments.of("/m", FactorUnits.ofFactorUnitSpec(M, -1)),
449+
Arguments.of("m⁸", FactorUnits.ofFactorUnitSpec(M, 8)),
450+
Arguments.of("ms¹²", FactorUnits.ofFactorUnitSpec(MilliSEC, 12)),
451+
Arguments.of("/ms⁹", FactorUnits.ofFactorUnitSpec(MilliSEC, -9)),
452+
Arguments.of("ft·h/gal{UK}", FT__HR__PER__GAL_UK.getFactorUnits()));
450453
}
451454

452455
@ParameterizedTest

qudtlib-tools/src/main/java/io/github/qudtlib/tools/contributions/CheckSymbols.java

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,23 @@ public static void main(String[] args) {
4343
unitsToCheck.stream()
4444
.filter(u -> !globalData.correctUnits.contains(u))
4545
.forEach(unit -> checkUnit(unit, globalData, ttlPrintStream));
46-
System.out.println(
47-
String.format(
48-
"was incorrect: \n%s\n",
49-
globalData.wasIncorrect.stream()
50-
.map(Unit::getIriAbbreviated)
51-
.collect(Collectors.joining("\n"))));
52-
System.out.println(
53-
String.format(
54-
"was missing: \n%s\n",
55-
globalData.wasMissing.stream()
56-
.map(Unit::getIriAbbreviated)
57-
.collect(Collectors.joining("\n"))));
5846
}
47+
System.out.println(
48+
String.format(
49+
"# %d Units with incorrect symbol: \n%s\n",
50+
globalData.wasIncorrect.size(),
51+
globalData.wasIncorrect.stream()
52+
.sorted(Comparator.comparing(Unit::getIriLocalname))
53+
.map(Unit::getIriAbbreviated)
54+
.collect(Collectors.joining("\n# ", "\n# ", "\n"))));
55+
System.out.println(
56+
String.format(
57+
"# %d Units without symbol: \n%s\n",
58+
globalData.wasMissing.size(),
59+
globalData.wasMissing.stream()
60+
.sorted(Comparator.comparing(Unit::getIriLocalname))
61+
.map(Unit::getIriAbbreviated)
62+
.collect(Collectors.joining("\n# ", "\n#", "\n"))));
5963
});
6064
globalData.missingData.entrySet().stream()
6165
.sorted(
@@ -84,7 +88,7 @@ private static Predicate<Unit> isLikelyDerivedUnit() {
8488
}
8589

8690
private static void printStatements(ByteArrayOutputStream ttlOut) {
87-
System.out.println("STATEMENTS TO ADD:\n\n");
91+
System.out.println("# STATEMENTS TO ADD:\n\n");
8892
System.out.println(ttlOut.toString());
8993
}
9094

@@ -107,24 +111,24 @@ private static void checkUnit(Unit unit, GlobalData globalData, PrintStream ttlP
107111
if (!globalData.trustCalculationForUnit(unit)) {
108112
return;
109113
}
110-
Optional<String> calculatedSymbol =
111-
unit.getSymbol().or(() -> unit.getFactorUnits().getSymbol());
114+
Optional<String> calculatedSymbol = unit.getFactorUnits().getSymbol();
112115
if (calculatedSymbol.isEmpty()) {
113116
return;
114117
} else {
115118
if (unit.getSymbol().isPresent()) {
116119
String actualSymbol = unit.getSymbol().get();
117-
globalData.correctUnits.add(unit);
118120
boolean isRelevantDifference = !actualSymbol.equals(calculatedSymbol.get());
119121
if (isRelevantDifference) {
120122
commentsForTTl.println(
121123
format(
122-
"WRONG SYMBOL? : %s - calculated from factors: %s, actual: %s\n",
124+
"WRONG SYMBOL : %s - calculated from factors: %s, actual: %s\n",
123125
unit.getIriAbbreviated(),
124126
calculatedSymbol.get().toString(),
125127
actualSymbol.toString()));
126-
commentsForTTl.println("Here is the triple you might want to use instead:");
127-
printSymbolTriple(commentsForTTl, commentsForTTl, unit, calculatedSymbol.get());
128+
printSymbolTriple(ttlPrintStream, commentsForTTl, unit, calculatedSymbol.get());
129+
globalData.wasIncorrect.add(unit);
130+
} else {
131+
globalData.correctUnits.add(unit);
128132
}
129133
} else {
130134
commentsForTTl.println(

qudtlib-tools/src/main/java/io/github/qudtlib/tools/contributions/GlobalData.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ public class GlobalData {
1111

1212
final Map<Unit, Set<Unit>> unitDependencies;
1313
final String relativeDifferenceThreshold = "0.001";
14-
final Set<Unit> undecidedUnits = new HashSet<>();
1514
final Set<Unit> correctUnits = new HashSet<>();
16-
final Set<Unit> incorrectUnits = new HashSet<>();
1715

1816
final Set<Unit> wasIncorrect = new HashSet<>();
1917
final Set<Unit> wasMissing = new HashSet<>();

0 commit comments

Comments
 (0)