17
17
18
18
import java .math .BigDecimal ;
19
19
import java .util .Map ;
20
- import java .util .Set ;
20
+ import java .util .function . Function ;
21
21
import java .util .function .Supplier ;
22
22
import java .util .stream .Collectors ;
23
23
import java .util .stream .IntStream ;
49
49
import software .xdev .chartjs .model .datapoint .ScatterDataPoint ;
50
50
import software .xdev .chartjs .model .dataset .BarDataset ;
51
51
import software .xdev .chartjs .model .dataset .BubbleDataset ;
52
+ import software .xdev .chartjs .model .dataset .Dataset ;
52
53
import software .xdev .chartjs .model .dataset .DoughnutDataset ;
53
54
import software .xdev .chartjs .model .dataset .LineDataset ;
54
55
import software .xdev .chartjs .model .dataset .PieDataset ;
@@ -89,120 +90,50 @@ class BasicChartTest extends AbstractChartTest
89
90
90
91
static Stream <Arguments > basicTest ()
91
92
{
92
- final Set < Map . Entry <String , BigDecimal >> defaultDataEntrySet = IntStream .rangeClosed (0 , 3 )
93
+ final Map <String , BigDecimal > defaultData = IntStream .rangeClosed (0 , 3 )
93
94
.boxed ()
94
- .collect (Collectors .toMap (String ::valueOf , BigDecimal ::valueOf ))
95
- .entrySet ();
95
+ .collect (Collectors .toMap (String ::valueOf , BigDecimal ::valueOf ));
96
96
97
97
return Stream .of (
98
98
new ArgumentDTO <>(
99
99
BarChart ::new ,
100
100
BarOptions ::new ,
101
- () -> {
102
- final BarDataset dataset = new BarDataset ();
103
- final BarData data = new BarData ().addDataset (dataset );
104
- for (final Map .Entry <String , BigDecimal > entry : defaultDataEntrySet )
105
- {
106
- data .addLabel (entry .getKey ());
107
- dataset .addData (entry .getValue ());
108
- }
109
- return data ;
110
- }),
101
+ createData (defaultData , BarData ::new , BarDataset ::new )),
111
102
new ArgumentDTO <>(
112
103
BubbleChart ::new ,
113
104
BubbleOptions ::new ,
114
- () -> {
115
- final BubbleDataset dataset = new BubbleDataset ();
116
- final BubbleData data = new BubbleData ().addDataset (dataset );
117
- for (final Map .Entry <String , BigDecimal > entry : defaultDataEntrySet )
118
- {
119
- data .addLabel (entry .getKey ());
120
- dataset .addData (
121
- new BubbleDataPoint (
122
- entry .getValue (),
123
- entry .getValue (),
124
- entry .getValue ().multiply (BigDecimal .TEN )));
125
- }
126
- return data ;
127
- }),
105
+ createData (defaultData , BubbleData ::new , BubbleDataset ::new , entry -> new BubbleDataPoint (
106
+ entry .getValue (),
107
+ entry .getValue (),
108
+ entry .getValue ().multiply (BigDecimal .TEN )))),
128
109
new ArgumentDTO <>(
129
110
DoughnutChart ::new ,
130
111
DoughnutOptions ::new ,
131
- () -> {
132
- final DoughnutDataset dataset = new DoughnutDataset ();
133
- final DoughnutData data = new DoughnutData ().addDataset (dataset );
134
- for (final Map .Entry <String , BigDecimal > entry : defaultDataEntrySet )
135
- {
136
- data .addLabel (entry .getKey ());
137
- dataset .addData (entry .getValue ());
138
- }
139
- return data ;
140
- }),
112
+ createData (defaultData , DoughnutData ::new , DoughnutDataset ::new )),
141
113
new ArgumentDTO <>(
142
114
LineChart ::new ,
143
115
LineOptions ::new ,
144
- () -> {
145
- final LineDataset dataset = new LineDataset ();
146
- final LineData data = new LineData ().addDataset (dataset );
147
- for (final Map .Entry <String , BigDecimal > entry : defaultDataEntrySet )
148
- {
149
- data .addLabel (entry .getKey ());
150
- dataset .addData (entry .getValue ());
151
- }
152
- return data ;
153
- }),
116
+ createData (defaultData , LineData ::new , LineDataset ::new )),
154
117
new ArgumentDTO <>(
155
118
PieChart ::new ,
156
119
PieOptions ::new ,
157
- () -> {
158
- final PieDataset dataset = new PieDataset ();
159
- final PieData data = new PieData ().addDataset (dataset );
160
- for (final Map .Entry <String , BigDecimal > entry : defaultDataEntrySet )
161
- {
162
- data .addLabel (entry .getKey ());
163
- dataset .addData (entry .getValue ());
164
- }
165
- return data ;
166
- }),
120
+ createData (defaultData , PieData ::new , PieDataset ::new )),
167
121
new ArgumentDTO <>(
168
122
PolarChart ::new ,
169
123
PolarOptions ::new ,
170
- () -> {
171
- final PolarDataset dataset = new PolarDataset ();
172
- final PolarData data = new PolarData ().addDataset (dataset );
173
- for (final Map .Entry <String , BigDecimal > entry : defaultDataEntrySet )
174
- {
175
- data .addLabel (entry .getKey ());
176
- dataset .addData (entry .getValue ());
177
- }
178
- return data ;
179
- }),
124
+ createData (defaultData , PolarData ::new , PolarDataset ::new )),
180
125
new ArgumentDTO <>(
181
126
RadarChart ::new ,
182
127
RadarOptions ::new ,
183
- () -> {
184
- final RadarDataset dataset = new RadarDataset ();
185
- final RadarData data = new RadarData ().addDataset (dataset );
186
- for (final Map .Entry <String , BigDecimal > entry : defaultDataEntrySet )
187
- {
188
- data .addLabel (entry .getKey ());
189
- dataset .addData (entry .getValue ());
190
- }
191
- return data ;
192
- }),
128
+ createData (defaultData , RadarData ::new , RadarDataset ::new )),
193
129
new ArgumentDTO <>(
194
130
ScatterChart ::new ,
195
131
LineOptions ::new ,
196
- () -> {
197
- final ScatterDataset dataset = new ScatterDataset ();
198
- final ScatterData data = new ScatterData ().addDataset (dataset );
199
- for (final Map .Entry <String , BigDecimal > entry : defaultDataEntrySet )
200
- {
201
- data .addLabel (entry .getKey ());
202
- dataset .addData (new ScatterDataPoint (entry .getValue (), entry .getValue ()));
203
- }
204
- return data ;
205
- })
132
+ createData (
133
+ defaultData ,
134
+ ScatterData ::new ,
135
+ ScatterDataset ::new ,
136
+ entry -> new ScatterDataPoint (entry .getValue (), entry .getValue ())))
206
137
).map (dto ->
207
138
Arguments .of (
208
139
dto .chartSupplier ().get ().getClass ().getSimpleName (),
@@ -211,6 +142,32 @@ static Stream<Arguments> basicTest()
211
142
dto .dataSupplier ().get ()));
212
143
}
213
144
145
+ private static <D extends Data <D , S >, S extends Dataset <S , BigDecimal >> Supplier <D > createData (
146
+ final Map <String , BigDecimal > defaultDataMap ,
147
+ final Supplier <D > dataSupplier ,
148
+ final Supplier <S > dataSetSupplier )
149
+ {
150
+ return createData (defaultDataMap , dataSupplier , dataSetSupplier , Map .Entry ::getValue );
151
+ }
152
+
153
+ private static <D extends Data <D , S >, S extends Dataset <S , O >, O > Supplier <D > createData (
154
+ final Map <String , BigDecimal > defaultDataMap ,
155
+ final Supplier <D > dataSupplier ,
156
+ final Supplier <S > dataSetSupplier ,
157
+ final Function <Map .Entry <String , BigDecimal >, O > addDataFunc )
158
+ {
159
+ return () -> {
160
+ final S dataset = dataSetSupplier .get ();
161
+ final D data = dataSupplier .get ().addDataset (dataset );
162
+ for (final Map .Entry <String , BigDecimal > entry : defaultDataMap .entrySet ())
163
+ {
164
+ data .addLabel (entry .getKey ());
165
+ dataset .addData (addDataFunc .apply (entry ));
166
+ }
167
+ return data ;
168
+ };
169
+ }
170
+
214
171
public static class ArgumentDTO <O extends Options <O , ?>, D extends Data <D , ?>>
215
172
{
216
173
private final Supplier <Chart <?, O , D >> chartSupplier ;
0 commit comments