-
Notifications
You must be signed in to change notification settings - Fork 5
/
WeatherTestData.groovy
137 lines (117 loc) · 4.99 KB
/
WeatherTestData.groovy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*
* © 2021. TU Dortmund University,
* Institute of Energy Systems, Energy Efficiency and Energy Economics,
* Research group Distribution grid planning and operation
*/
package edu.ie3.test.common
import edu.ie3.datamodel.io.factory.timeseries.CosmoIdCoordinateFactory
import edu.ie3.datamodel.io.naming.FileNamingStrategy
import edu.ie3.datamodel.io.source.IdCoordinateSource
import edu.ie3.datamodel.io.source.csv.CsvDataSource
import edu.ie3.datamodel.io.source.csv.CsvTestDataMeta
import edu.ie3.datamodel.models.UniqueEntity
import edu.ie3.datamodel.models.input.OperatorInput
import edu.ie3.util.geo.CoordinateDistance
import edu.ie3.util.geo.GeoUtils
import org.locationtech.jts.geom.Point
import tech.units.indriya.ComparableQuantity
import javax.measure.quantity.Length
import java.util.stream.Collectors
import java.util.stream.Stream
abstract class WeatherTestData {
// Using a groovy bug to gain access to private methods in superclass:
// by default, we cannot access private methods with parameters from abstract parent classes, introducing a
// class that extends the abstract parent class and unveils the private methods by calling the parents private
// methods in a public or protected method makes them available for testing
static final class DummyCsvSource extends CsvDataSource {
DummyCsvSource(String csvSep, String folderPath, FileNamingStrategy fileNamingStrategy) {
super(csvSep, folderPath, fileNamingStrategy)
}
Map<String, String> buildFieldsToAttributes(
final String csvRow, final String[] headline) {
return super.buildFieldsToAttributes(csvRow, headline)
}
OperatorInput getFirstOrDefaultOperator(
Collection<OperatorInput> operators, String operatorUuid, String entityClassName, String requestEntityUuid) {
return super.getFirstOrDefaultOperator(operators, operatorUuid, entityClassName, requestEntityUuid)
}
def <T extends UniqueEntity> Set<Map<String, String>> distinctRowsWithLog(
Class<T> entityClass, Collection<Map<String, String>> allRows) {
return super.distinctRowsWithLog(allRows, uuidExtractor, entityClass.simpleName, "UUID")
}
String[] parseCsvRow(
String csvRow, String csvSep) {
return super.parseCsvRow(csvRow, csvSep)
}
String[] oldFieldVals(
String csvSep, String csvRow) {
return super.oldFieldVals(csvSep, csvRow)
}
}
static final class DummyIdCoordinateSource extends IdCoordinateSource implements CsvTestDataMeta {
DummyIdCoordinateSource() {
super(new CosmoIdCoordinateFactory())
}
@Override
Stream<Map<String, String>> extractSourceData() {
return null
}
Optional<Point> getCoordinate(int id) {
switch (id) {
case 193186: return Optional.of(GeoUtils.buildPoint(7d, 49d))
case 193187: return Optional.of(GeoUtils.buildPoint(8d, 49d))
case 193188: return Optional.of(GeoUtils.buildPoint(7d, 50d))
case 67775: return Optional.of(GeoUtils.buildPoint(8d, 50d))
case 67776: return Optional.of(GeoUtils.buildPoint(7d, 51d))
}
return Optional.empty()
}
@Override
Collection<Point> getCoordinates(int... ids) {
return Stream.of(ids).map(this.&getCoordinate).filter({ c -> c != null }).collect(Collectors.toSet())
}
@Override
Optional<Integer> getId(Point coordinate) {
if (coordinate.x == 49 && coordinate.y == 7) {
return Optional.of(193186)
}
if (coordinate.x == 49 && coordinate.y == 8) {
return Optional.of(193187)
}
if (coordinate.x == 50 && coordinate.y == 7) {
return Optional.of(193188)
}
if (coordinate.x == 50 && coordinate.y == 8) {
return Optional.of(67775)
}
if (coordinate.x == 51 && coordinate.y == 7) {
return Optional.of(67776)
}
return Optional.empty()
}
@Override
Collection<Point> getAllCoordinates() {
return [
GeoUtils.buildPoint(7d, 49d),
GeoUtils.buildPoint(8d, 49d),
GeoUtils.buildPoint(7d, 50d),
GeoUtils.buildPoint(8d, 50d),
GeoUtils.buildPoint(7d, 51d)
]
}
@Override
List<CoordinateDistance> getNearestCoordinates(Point coordinate, int n) {
throw new UnsupportedOperationException("This method is not supported!")
}
@Override
List<CoordinateDistance> getClosestCoordinates(Point coordinate, int n, ComparableQuantity<Length> distance) {
throw new UnsupportedOperationException("This method is not supported!")
}
}
public static final IdCoordinateSource coordinateSource = new DummyIdCoordinateSource()
public static final COORDINATE_193186 = coordinateSource.getCoordinate(193186).get()
public static final COORDINATE_193187 = coordinateSource.getCoordinate(193187).get()
public static final COORDINATE_193188 = coordinateSource.getCoordinate(193188).get()
public static final COORDINATE_67775 = coordinateSource.getCoordinate(67775).get()
public static final COORDINATE_67776 = coordinateSource.getCoordinate(67776).get()
}