From 98c5db82e5bb2870572f7e17b91581f35c9f46c2 Mon Sep 17 00:00:00 2001 From: "Kittl, Chris" Date: Fri, 7 Jan 2022 08:31:25 +0100 Subject: [PATCH 1/7] Use Stream#toList --- CHANGELOG.md | 3 +++ src/main/java/edu/ie3/util/EmpiricalRandom.java | 3 +-- src/main/java/edu/ie3/util/geo/GeoUtils.java | 14 +++++--------- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc96b5aa..3c163100 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased/Snapshot] +### Fixed +- Improve code quality to meet minimum standards [#203](https://github.com/ie3-institute/PowerSystemUtils/issues/203) +- Use `Stream#toList` ## [1.6.0] diff --git a/src/main/java/edu/ie3/util/EmpiricalRandom.java b/src/main/java/edu/ie3/util/EmpiricalRandom.java index 4befea0c..a20f6995 100644 --- a/src/main/java/edu/ie3/util/EmpiricalRandom.java +++ b/src/main/java/edu/ie3/util/EmpiricalRandom.java @@ -9,7 +9,6 @@ import java.util.List; import java.util.Map; import java.util.Random; -import java.util.stream.Collectors; import org.eclipse.collections.impl.UnmodifiableMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -69,7 +68,7 @@ public C nextEmpirical() { this.empiricalCdf.entrySet().stream() .filter(entry -> entry.getValue() >= rand) .map(Map.Entry::getKey) - .collect(Collectors.toList()); + .toList(); if (candidates.isEmpty()) { logger.error("There is no candidate, which is not supposed to happen. Take first one"); return empiricalCdf.keySet().iterator().next(); diff --git a/src/main/java/edu/ie3/util/geo/GeoUtils.java b/src/main/java/edu/ie3/util/geo/GeoUtils.java index 39857f30..eb388272 100644 --- a/src/main/java/edu/ie3/util/geo/GeoUtils.java +++ b/src/main/java/edu/ie3/util/geo/GeoUtils.java @@ -253,7 +253,7 @@ public static Relation buildClosedWays(Relation relation) throws GeoPreparationE relation.getMembers().stream() .filter(e -> e.getEntity() instanceof Way) .map(e -> (Way) e.getEntity()) - .collect(Collectors.toList()); + .toList(); /* Get an idea, of which ways do have intersections and where */ HashMap> intersections = new HashMap<>(); @@ -303,7 +303,7 @@ public static Relation buildClosedWays(Relation relation) throws GeoPreparationE intersections.entrySet().stream() .filter(e -> e.getValue().contains(currentWay)) .map(Map.Entry::getKey) - .collect(Collectors.toList()); + .toList(); Node secondIntersection; if (candidateNodes.size() > 1) throw new GeoPreparationException( @@ -568,10 +568,8 @@ public static Polygon buildConvexHull( */ @Deprecated public static Polygon getIntersection(Polygon a, Polygon b) { - List sharedCoords = - a.getCoords().stream().filter(b::contains).collect(Collectors.toList()); - List additionalCoords = - b.getCoords().stream().filter(a::contains).collect(Collectors.toList()); + List sharedCoords = a.getCoords().stream().filter(b::contains).toList(); + List additionalCoords = b.getCoords().stream().filter(a::contains).toList(); if (sharedCoords.isEmpty() && additionalCoords.isEmpty()) return null; else { @@ -913,9 +911,7 @@ public static Polygon radiusWithCircleAsPolygon(LatLon center, Quantity List circlePoints = radiusWithCircle(center, radius); List circlePointsLatLon = - circlePoints.stream() - .map(point -> new LatLon(point.getLat(), point.getLon())) - .collect(Collectors.toList()); + circlePoints.stream().map(point -> new LatLon(point.getLat(), point.getLon())).toList(); return new Polygon(circlePointsLatLon); } From 6f644eb6137d4158736da62f3aa07bb5f921c099 Mon Sep 17 00:00:00 2001 From: "Kittl, Chris" Date: Fri, 7 Jan 2022 08:34:19 +0100 Subject: [PATCH 2/7] Fix MarkDown auto-formatting --- CHANGELOG.md | 3 ++- gradle/scripts/spotless.gradle | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c163100..654ca5c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased/Snapshot] ### Fixed - Improve code quality to meet minimum standards [#203](https://github.com/ie3-institute/PowerSystemUtils/issues/203) -- Use `Stream#toList` + - Use `Stream#toList` +- Fix formatting for MarkDown files ## [1.6.0] diff --git a/gradle/scripts/spotless.gradle b/gradle/scripts/spotless.gradle index c34020c9..087ba77d 100644 --- a/gradle/scripts/spotless.gradle +++ b/gradle/scripts/spotless.gradle @@ -38,9 +38,15 @@ spotless { // removes unnecessary whitespace, indents with tabs and ends on new line for gradle, md and gitignore files and config-XMLs format 'misc', { - target '**/*.gradle', '**/*.md', '**/.gitignore', 'configs/**' + target '**/*.gradle', '**/.gitignore', 'configs/**' trimTrailingWhitespace() indentWithTabs() endWithNewline() } + + format 'markdown', { + target '**/*.md' + indentWithSpaces(2) + endWithNewline() + } } From 30f55264f4e64d29dd350613dee5187f6b74e34b Mon Sep 17 00:00:00 2001 From: "Kittl, Chris" Date: Fri, 7 Jan 2022 08:44:03 +0100 Subject: [PATCH 3/7] Enhance deprecation annotations --- CHANGELOG.md | 1 + src/main/java/edu/ie3/util/geo/GeoUtils.java | 26 +++++++++---------- .../java/edu/ie3/util/io/FileIOUtils.java | 4 +-- .../ie3/util/quantities/EmptyQuantity.java | 18 ++++++------- .../edu/ie3/util/quantities/QuantityUtil.java | 2 +- .../quantities/interfaces/EnergyDensity.java | 2 +- .../quantities/interfaces/PowerDensity.java | 2 +- 7 files changed, 28 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 654ca5c6..d7cdc252 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Improve code quality to meet minimum standards [#203](https://github.com/ie3-institute/PowerSystemUtils/issues/203) - Use `Stream#toList` + - Enhance deprecation annotations - Fix formatting for MarkDown files ## [1.6.0] diff --git a/src/main/java/edu/ie3/util/geo/GeoUtils.java b/src/main/java/edu/ie3/util/geo/GeoUtils.java index eb388272..71b3e534 100644 --- a/src/main/java/edu/ie3/util/geo/GeoUtils.java +++ b/src/main/java/edu/ie3/util/geo/GeoUtils.java @@ -238,7 +238,7 @@ public static org.locationtech.jts.geom.Point xyToPoint(double x, double y) { * @return Deep copy of the {@code relation} with closed ways * @deprecated This method is currently not under test and has to be revised thoroughly */ - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public static Relation buildClosedWays(Relation relation) throws GeoPreparationException { /* Copy relation and empty the Members */ Relation closedRelation = DeepCopy.copy(relation); @@ -372,7 +372,7 @@ else if (candidateNodes.isEmpty()) { * @deprecated ATTENTION! DON'T REMOVE: This method is currently not under test and has to be * revised thoroughly */ - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public static Polygon buildConvexHull( Set points, int precision, ConvexHullAlgorithm algorithm) throws GeoPreparationException { @@ -566,7 +566,7 @@ public static Polygon buildConvexHull( * @deprecated ATTENTION! DON'T REMOVE: This method is currently not under test and has to be * revised thoroughly */ - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public static Polygon getIntersection(Polygon a, Polygon b) { List sharedCoords = a.getCoords().stream().filter(b::contains).toList(); List additionalCoords = b.getCoords().stream().filter(a::contains).toList(); @@ -613,7 +613,7 @@ > calcHaversine( * @deprecated ATTENTION! DON'T REMOVE: This method is currently not under test and has to be * revised thoroughly */ - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public static Quantity calcArea(Way w) throws GeoPreparationException { if (!w.isClosed()) throw new GeoPreparationException( @@ -631,7 +631,7 @@ public static Quantity calcArea(Way w) throws GeoPreparationException { * @deprecated ATTENTION! DON'T REMOVE: This method is currently not under test and has to be * revised thoroughly */ - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public static Quantity calcArea(Polygon p) throws GeoPreparationException { /* Get the boundary of the Polygon */ Bounds bounds = p.getBounds(); @@ -732,7 +732,7 @@ public static Quantity calcArea(Polygon p) throws GeoPreparationException * @deprecated ATTENTION! DON'T REMOVE: This method is currently not under test and has to be * revised thoroughly */ - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public static boolean isBetween(Node a, Node b, Node c) { double crossProduct; double dotProduct; @@ -777,7 +777,7 @@ public static boolean isBetween(Node a, Node b, Node c) { * @deprecated ATTENTION! DON'T REMOVE: This method is currently not under test and has to be * revised thoroughly */ - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public static Quantity calcGeo2qmNew(double geoArea, Quantity cor) { double width = 51.5; double length = 7.401; @@ -812,7 +812,7 @@ public static Quantity calcGeo2qmNew(double geoArea, Quantity cor) { * @deprecated ATTENTION! DON'T REMOVE: This method is currently not under test and has to be * revised thoroughly */ - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public static boolean isInsideLanduse(LatLon node, List landUses) { for (Way landUse : landUses) { if (rayCasting(new Polygon(landUse), node)) return true; @@ -824,7 +824,7 @@ public static boolean isInsideLanduse(LatLon node, List landUses) { * @deprecated ATTENTION! DON'T REMOVE: This method is currently not under test and has to be * revised thoroughly */ - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public static boolean rayCasting(Polygon shape, LatLon node) { boolean inside = false; @@ -841,7 +841,7 @@ public static boolean rayCasting(Polygon shape, LatLon node) { * @deprecated ATTENTION! DON'T REMOVE: This method is currently not under test and has to be * revised thoroughly */ - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) private static boolean intersects(LatLon aIn, LatLon bIn, LatLon nIn) { // convert LatLons to arrays @@ -873,7 +873,7 @@ private static boolean intersects(LatLon aIn, LatLon bIn, LatLon nIn) { * @deprecated ATTENTION! DON'T REMOVE: This method is currently not under test and has to be * revised thoroughly */ - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public static double calculateBuildingArea(Way building) { double area = 0.0; @@ -926,7 +926,7 @@ public static Polygon radiusWithCircleAsPolygon(LatLon center, Quantity * @deprecated ATTENTION! DON'T REMOVE: This method is currently not under test and has to be * revised thoroughly */ - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public static List radiusWithCircle(LatLon center, Quantity radius) { double lat1 = Math.toRadians(center.getLat()); @@ -966,7 +966,7 @@ public static List radiusWithCircle(LatLon center, Quantity radi * @deprecated ATTENTION! DON'T REMOVE: This method is currently not under test and has to be * revised thoroughly */ - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public static Way wayFromWays(List waysToChain, Quantity radius, int wayId) { LinkedList waysCopy = new LinkedList<>(waysToChain); diff --git a/src/main/java/edu/ie3/util/io/FileIOUtils.java b/src/main/java/edu/ie3/util/io/FileIOUtils.java index ca7469b3..38231ec8 100755 --- a/src/main/java/edu/ie3/util/io/FileIOUtils.java +++ b/src/main/java/edu/ie3/util/io/FileIOUtils.java @@ -122,7 +122,7 @@ public static BufferedWriter getBufferedWriter( * @deprecated replaced by #compressFile(Path, Path). Add ".gz" to the input path and pass it as * output filepath in compressFile() for a similar functionality. */ - @Deprecated + @Deprecated(since = "1.5", forRemoval = true) public static CompletableFuture gzip(final String filename) { return gzip(filename, ""); } @@ -138,7 +138,7 @@ public static CompletableFuture gzip(final String filename) { * @return a Future containing a boolean which is either true on success or false otherwise * @deprecated replaced by #compressFile(Path, Path) */ - @Deprecated + @Deprecated(since = "1.5", forRemoval = true) public static CompletableFuture gzip( final String filename, final String outputFileName) { return CompletableFuture.supplyAsync( diff --git a/src/main/java/edu/ie3/util/quantities/EmptyQuantity.java b/src/main/java/edu/ie3/util/quantities/EmptyQuantity.java index 2ab50a21..2ea876b0 100644 --- a/src/main/java/edu/ie3/util/quantities/EmptyQuantity.java +++ b/src/main/java/edu/ie3/util/quantities/EmptyQuantity.java @@ -68,7 +68,7 @@ public Number getValue() { * on this Quantity */ @Override - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public ComparableQuantity add(Quantity that) { throw new EmptyQuantityException(EXCEPTION_MESSAGE); } @@ -83,7 +83,7 @@ public ComparableQuantity add(Quantity that) { * on this Quantity */ @Override - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public ComparableQuantity subtract(Quantity that) { throw new EmptyQuantityException(EXCEPTION_MESSAGE); } @@ -98,7 +98,7 @@ public ComparableQuantity subtract(Quantity that) { * on this Quantity */ @Override - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public ComparableQuantity divide(Quantity that) { throw new EmptyQuantityException(EXCEPTION_MESSAGE); } @@ -113,7 +113,7 @@ public ComparableQuantity divide(Quantity that) { * on this Quantity */ @Override - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public ComparableQuantity divide(Number that) { throw new EmptyQuantityException(EXCEPTION_MESSAGE); } @@ -128,7 +128,7 @@ public ComparableQuantity divide(Number that) { * on this Quantity */ @Override - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public ComparableQuantity multiply(Quantity multiplier) { throw new EmptyQuantityException(EXCEPTION_MESSAGE); } @@ -143,7 +143,7 @@ public ComparableQuantity multiply(Quantity multiplier) { * on this Quantity */ @Override - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public ComparableQuantity multiply(Number multiplier) { throw new EmptyQuantityException(EXCEPTION_MESSAGE); } @@ -157,7 +157,7 @@ public ComparableQuantity multiply(Number multiplier) { * on this Quantity */ @Override - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public ComparableQuantity inverse() { throw new EmptyQuantityException(EXCEPTION_MESSAGE); } @@ -171,7 +171,7 @@ public ComparableQuantity inverse() { * on this Quantity */ @Override - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public Quantity negate() { throw new EmptyQuantityException(EXCEPTION_MESSAGE); } @@ -198,7 +198,7 @@ public boolean equals(Object that) { * on this Quantity */ @Override - @Deprecated + @Deprecated(since = "1.4", forRemoval = false) public int hashCode() { throw new EmptyQuantityException(EXCEPTION_MESSAGE); } diff --git a/src/main/java/edu/ie3/util/quantities/QuantityUtil.java b/src/main/java/edu/ie3/util/quantities/QuantityUtil.java index 6cac1503..c8efc236 100644 --- a/src/main/java/edu/ie3/util/quantities/QuantityUtil.java +++ b/src/main/java/edu/ie3/util/quantities/QuantityUtil.java @@ -102,7 +102,7 @@ public static > boolean isEquivalentAbs( * @deprecated renamed to {@link QuantityUtil#isEquivalentAbs(Quantity, Quantity, double)} for * clarity und uniformity */ - @Deprecated + @Deprecated(since = "1.4", forRemoval = true) public static > boolean considerablyAbsEqual( Quantity a, Quantity b, double absQuantityTolerance) { return isEquivalentAbs(a, b, absQuantityTolerance); diff --git a/src/main/java/edu/ie3/util/quantities/interfaces/EnergyDensity.java b/src/main/java/edu/ie3/util/quantities/interfaces/EnergyDensity.java index d115f4a7..608d94fd 100644 --- a/src/main/java/edu/ie3/util/quantities/interfaces/EnergyDensity.java +++ b/src/main/java/edu/ie3/util/quantities/interfaces/EnergyDensity.java @@ -8,5 +8,5 @@ import tech.units.indriya.ComparableQuantity; /** @deprecated replaced by {@link Irradiation} */ -@Deprecated +@Deprecated(since = "1.5", forRemoval = true) public interface EnergyDensity extends ComparableQuantity {} diff --git a/src/main/java/edu/ie3/util/quantities/interfaces/PowerDensity.java b/src/main/java/edu/ie3/util/quantities/interfaces/PowerDensity.java index 1c821700..360de090 100644 --- a/src/main/java/edu/ie3/util/quantities/interfaces/PowerDensity.java +++ b/src/main/java/edu/ie3/util/quantities/interfaces/PowerDensity.java @@ -12,5 +12,5 @@ * * @deprecated replaced by {@link Irradiance} */ -@Deprecated +@Deprecated(since = "1.5", forRemoval = true) public interface PowerDensity extends ComparableQuantity {} From 8c1e3221d34d889fe2670eba3f9a862791762ba0 Mon Sep 17 00:00:00 2001 From: "Kittl, Chris" Date: Fri, 7 Jan 2022 12:44:14 +0100 Subject: [PATCH 4/7] Remove scoverage report ... path from sonarqube settings, as currently scoverage is not working --- gradle/scripts/sonarqube.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/scripts/sonarqube.gradle b/gradle/scripts/sonarqube.gradle index a27cf9bf..fb6d9407 100644 --- a/gradle/scripts/sonarqube.gradle +++ b/gradle/scripts/sonarqube.gradle @@ -33,7 +33,7 @@ sonarqube { property 'sonar.groovy.jacoco.itReportPath', 'build/jacoco/allTests.exec' property 'sonar.groovy.binaries', 'build/classes/groovy' // groovy binaries // scala specific stuff - property 'sonar.scala.coverage.reportPaths', 'build/reports/scoverage/scoverage.xml' + //property 'sonar.scala.coverage.reportPaths', 'build/reports/scoverage/scoverage.xml' } } From 6998285dde70502efad5b0a581a42f023b68943b Mon Sep 17 00:00:00 2001 From: "Kittl, Chris" Date: Fri, 7 Jan 2022 12:52:46 +0100 Subject: [PATCH 5/7] Configure jacoco --- CHANGELOG.md | 1 + gradle/scripts/jacoco.gradle | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d7cdc252..539396a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Use `Stream#toList` - Enhance deprecation annotations - Fix formatting for MarkDown files +- Configure gradle jacoco plugin according to newest documentation ## [1.6.0] diff --git a/gradle/scripts/jacoco.gradle b/gradle/scripts/jacoco.gradle index 5f9629b4..ed31577d 100644 --- a/gradle/scripts/jacoco.gradle +++ b/gradle/scripts/jacoco.gradle @@ -4,15 +4,15 @@ // general configuration jacoco { toolVersion = "0.8.7" - reportsDir = file("$buildDir/reports/jacoco") + reportsDirectory = layout.buildDirectory.dir("$buildDir/reports/jacoco") } jacocoTestReport { reports { - xml.enabled true - csv.enabled false - html.enabled true - html.destination file("${buildDir}/reports/jacoco") + csv.required = false + html.required = true + xml.required = true + html.outputLocation = layout.buildDirectory.dir("${buildDir}/reports/jacoco") } // what to exclude from coverage report (files that should not be analyzed!) From cb7b6185592a1c6389ed13c434dc15a55c346297 Mon Sep 17 00:00:00 2001 From: "Kittl, Chris" Date: Fri, 7 Jan 2022 15:56:47 +0100 Subject: [PATCH 6/7] Increasing coverage --- .../edu/ie3/util/geo/GeoUtilsTest.groovy | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/test/groovy/edu/ie3/util/geo/GeoUtilsTest.groovy b/src/test/groovy/edu/ie3/util/geo/GeoUtilsTest.groovy index e1d312cc..6ea690a0 100644 --- a/src/test/groovy/edu/ie3/util/geo/GeoUtilsTest.groovy +++ b/src/test/groovy/edu/ie3/util/geo/GeoUtilsTest.groovy @@ -9,6 +9,8 @@ import edu.ie3.util.quantities.PowerSystemUnits import edu.ie3.util.quantities.QuantityUtil import org.locationtech.jts.geom.Coordinate import org.locationtech.jts.geom.LineString +import org.locationtech.jts.geom.Point +import org.locationtech.jts.geom.PrecisionModel import org.locationtech.jts.io.geojson.GeoJsonReader import spock.lang.Shared @@ -34,6 +36,15 @@ class GeoUtilsTest extends Specification { geoJsonReader = new GeoJsonReader() } + def "Trying to instantiate the GeoUtils leads to an exception"() { + when: + new GeoUtils() + + then: + def ex = thrown(IllegalStateException) + ex.message == "Utility classes cannot be instantiated" + } + def "Test haversine (distance between two points given lat/lon)"() { given: LatLon start = new LatLon(37.87532764735112, -122.25311279296875) @@ -64,7 +75,19 @@ class GeoUtilsTest extends Specification { // Value from Google Maps, error range of +-10 km } - def "The GridAndGeoUtils should get the CoordinateDistances between a base point and a collection of other points correctly"() { + def "LatLon can properly be converted to Point"() { + given: + def latLon = new LatLon(49d, 7d) + def expected = new Point(new Coordinate(7d, 49d), new PrecisionModel(), 4326) + + when: + def actual = GeoUtils.latlonToPoint(latLon) + + then: + actual == expected + } + + def "The GeoUtils should get the CoordinateDistances between a base point and a collection of other points correctly"() { given: def basePoint = GeoUtils.xyToPoint(49d, 7d) def points = [ From da5ebd8695d4d2ea481673d8135b9ed0d0e1e2a3 Mon Sep 17 00:00:00 2001 From: Chris Kittl <44838605+ckittl@users.noreply.github.com> Date: Fri, 7 Jan 2022 16:00:15 +0100 Subject: [PATCH 7/7] Update CHANGELOG.md --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e502e047..ac9fc79f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Enable using JUnit platform - Fix broken tests - Let scalatest and JUnit tests run together -### Fixed - Improve code quality to meet minimum standards [#203](https://github.com/ie3-institute/PowerSystemUtils/issues/203) - Use `Stream#toList` - Enhance deprecation annotations