1. Project Clover database Wed Nov 12 2025 05:07:35 UTC
  2. Package guru.mikelue.foxglove.annotation

File DataGenContextTest.java

 

Code metrics

0
50
35
11
411
322
35
0.7
1.43
3.18
1

Classes

Class Line # Actions
DataGenContextTest 23 23 0% 8 0
1.0100%
DataGeneratorWarehouse 163 1 0% 1 0
1.0100%
DataGeneratorWarehouse.StaticGeneratorProvider 176 1 0% 1 0
1.0100%
DataGeneratorWarehouse.GeneratorProvider 184 1 0% 1 0
1.0100%
DataGeneratorWarehouse.FakeDataGenerator 192 2 0% 2 4
0.00%
TableFacetWarehouseParentOnMethod 207 8 0% 8 6
0.62562.5%
TableFacetWarehouseOnMethod 259 11 0% 11 0
1.0100%
TableFacetWarehouseOnMethod.StaticFacetProvider 260 1 0% 1 0
1.0100%
TableFacetWarehouseOnMethod.FacetProvider 268 1 0% 1 0
1.0100%
TableFacetWarehouseParentOnField 344 1 0% 1 0
1.0100%
TableFacetWarehouseOnField 375 0 - 0 0
-1.0 -
 

Contributing tests

This file is covered by 38 tests. .

Source view

1    package guru.mikelue.foxglove.annotation;
2   
3    import java.util.List;
4    import java.util.stream.Stream;
5   
6    import org.junit.jupiter.api.AfterEach;
7    import org.junit.jupiter.api.BeforeEach;
8    import org.junit.jupiter.params.ParameterizedTest;
9    import org.junit.jupiter.params.provider.ValueSource;
10   
11    import guru.mikelue.misc.testlib.AbstractTestBase;
12   
13    import guru.mikelue.foxglove.DataGenerator;
14    import guru.mikelue.foxglove.TableFacet;
15    import guru.mikelue.foxglove.functional.DataGeneratorProvider;
16    import guru.mikelue.foxglove.functional.TableFacetProvider;
17    import guru.mikelue.foxglove.functional.TableFacetsProvider;
18    import guru.mikelue.foxglove.jdbc.JdbcTableFacet;
19    import guru.mikelue.foxglove.setting.DataSettingInfo;
20   
21    import static org.assertj.core.api.Assertions.assertThat;
22   
 
23    public class DataGenContextTest extends AbstractTestBase {
 
24  38 toggle public DataGenContextTest() {}
25   
 
26  38 toggle @BeforeEach
27    void setup() {}
28   
 
29  38 toggle @AfterEach
30    void tearDown() {}
31   
32    /**
33    * Tests various cases for building of named {@link TableFacet} from method.
34    */
 
35  15 toggle @ParameterizedTest
36    @ValueSource(strings = {
37    "byDefaults",
38    "byPublic", "byProtected", "byPrivate",
39    "byPublicStatic", "byProtectedStatic", "byStatic", "byPrivateStatic",
40    "byList", "byStream", "byArray",
41    "byPublicOfParent", "byProtectedOfParent",
42    "byPublicStaticOfParent", "byProtectedStaticOfParent",
43    })
44    void namedTableFacetsByMethod(
45    String tableFacetName
46    ) {
47  15 var testedInstance = new TableFacetWarehouseOnMethod();
48  15 var testedContextOnMethod =
49    DataGenContext.loadFrom(TableFacetWarehouseOnMethod.class);
50   
51  15 var testedFacets = testedContextOnMethod.getNamedTableFacets(tableFacetName, testedInstance);
52   
53  15 assertThat(testedFacets)
54    .isNotNull()
55    .hasSize(1)
56    .allSatisfy(facet -> {
57  15 assertThat(facet)
58    .isInstanceOf(JdbcTableFacet.class);
59    });
60    }
61   
62    /**
63    * Tests various cases for building of named {@link TableFacet} from field.
64    */
 
65  16 toggle @ParameterizedTest
66    @ValueSource(strings = {
67    "byDefaults",
68    "byPublic", "byProtected", "byPrivate",
69    "byPublicStatic", "byProtectedStatic", "byStatic", "byPrivateStatic",
70    "byList", "byStream", "byArray", "byProvider",
71    "byPublicOfParent", "byProtectedOfParent",
72    "byPublicStaticOfParent", "byProtectedStaticOfParent",
73    })
74    void namedTableFacetsByField(
75    String tableFacetName
76    ) {
77  16 var testedContextOnField = DataGenContext.loadFrom(TableFacetWarehouseOnField.class);
78   
79  16 var testedInstance = new TableFacetWarehouseOnField();
80  16 var testedFacets = testedContextOnField.getNamedTableFacets(tableFacetName, testedInstance);
81   
82  16 assertThat(testedFacets)
83    .isNotNull()
84    .hasSize(1)
85    .allSatisfy(facet -> {
86  16 assertThat(facet)
87    .isInstanceOf(JdbcTableFacet.class);
88    });
89    }
90   
91    /**
92    * Tests various cases for building {@link TableFacet} by providers' class.
93    */
 
94  2 toggle @ParameterizedTest
95    @ValueSource(classes = {
96    TableFacetWarehouseOnMethod.StaticFacetProvider.class,
97    TableFacetWarehouseOnMethod.FacetProvider.class,
98    })
99    void typedProviderForTableFacets(
100    Class<TableFacetsProvider<TableFacet>> providerClass
101    ) {
102  2 var testedInstance = new TableFacetWarehouseOnMethod();
103  2 var testedContextOnMethod =
104    DataGenContext.loadFrom(TableFacetWarehouseOnMethod.class);
105   
106  2 var testedFacets = testedContextOnMethod.getTypedTableFacets(
107    providerClass, testedInstance
108    );
109  2 assertThat(testedFacets)
110    .hasSize(1)
111    .allSatisfy(facet -> {
112  2 assertThat(facet)
113    .isInstanceOf(JdbcTableFacet.class);
114    });
115    }
116   
117    /**
118    * Tests the case for methods/fields with named {@link DataGeneratorSource}.
119    */
 
120  3 toggle @ParameterizedTest
121    @ValueSource(strings = {
122    "byField", "byMethod",
123    "byProvider",
124    })
125    void namedDataGeneratorSource(
126    String name
127    ) {
128  3 var testedContextForDataGenerator = DataGenContext.loadFrom(DataGeneratorWarehouse.class);
129  3 var testedInstance = new DataGeneratorWarehouse();
130   
131  3 var testedGenerator = testedContextForDataGenerator.getNamedDataGenerator(
132    name, testedInstance
133    );
134  3 assertThat(testedGenerator)
135    .isNotNull()
136    .isInstanceOf(DataGenerator.class);
137    }
138   
139    /**
140    * Tests various cases for building {@link DataGenerator} by providers' class.
141    */
 
142  2 toggle @ParameterizedTest
143    @ValueSource(classes = {
144    DataGeneratorWarehouse.StaticGeneratorProvider.class,
145    DataGeneratorWarehouse.GeneratorProvider.class,
146    })
147    void typedProviderForDataGenerator(
148    Class<DataGeneratorProvider<TableFacet>> providerClass
149    ) {
150  2 var testedInstance = new DataGeneratorWarehouse();
151  2 var testedContextOnMethod =
152    DataGenContext.loadFrom(DataGeneratorWarehouse.class);
153   
154  2 var testedGenerator = testedContextOnMethod.getTypedDataGenerator(
155    providerClass, testedInstance
156    );
157  2 assertThat(testedGenerator)
158    .isNotNull()
159    .isInstanceOf(DataGenerator.class);
160    }
161    }
162   
 
163    class DataGeneratorWarehouse {
164    @DataGeneratorSource
165    DataGenerator<TableFacet> byField = new FakeDataGenerator();
166   
167    @DataGeneratorSource
168    DataGeneratorProvider<TableFacet> byProvider = () -> new FakeDataGenerator();
169   
 
170  1 toggle @DataGeneratorSource
171    DataGenerator<TableFacet> byMethod()
172    {
173  1 return new FakeDataGenerator();
174    }
175   
 
176    static class StaticGeneratorProvider implements DataGeneratorProvider<TableFacet> {
 
177  1 toggle @Override
178    public DataGenerator<TableFacet> get()
179    {
180  1 return new FakeDataGenerator();
181    }
182    }
183   
 
184    class GeneratorProvider implements DataGeneratorProvider<TableFacet> {
 
185  1 toggle @Override
186    public DataGenerator<TableFacet> get()
187    {
188  1 return new FakeDataGenerator();
189    }
190    }
191   
 
192    static class FakeDataGenerator implements DataGenerator<TableFacet> {
 
193  0 toggle @Override
194    public DataGenerator<TableFacet> withSetting(DataSettingInfo setting)
195    {
196  0 return this;
197    }
198   
 
199  0 toggle @Override
200    public int generate(List<TableFacet> tables)
201    {
202  0 return -1;
203    }
204    }
205    }
206   
 
207    class TableFacetWarehouseParentOnMethod {
 
208  0 toggle @TableFacetsSource
209    TableFacet byDefaults()
210    {
211  0 return builder();
212    }
213   
 
214  1 toggle @TableFacetsSource("byPublicOfParent")
215    public TableFacet byPublicOfParent()
216    {
217  1 return builder();
218    }
219   
 
220  1 toggle @TableFacetsSource("byProtectedOfParent")
221    protected TableFacet byProtectedOfParent()
222    {
223  1 return builder();
224    }
225   
 
226  1 toggle @TableFacetsSource("byPublicStaticOfParent")
227    public static TableFacet byPublicStaticOfParent()
228    {
229  1 return builder();
230    }
231   
 
232  1 toggle @TableFacetsSource("byProtectedStaticOfParent")
233    protected TableFacet byProtectedStaticOfParent()
234    {
235  1 return builder();
236    }
237   
238    // Should be ignored
 
239  0 toggle @TableFacetsSource("byPrivateStatic")
240    private static TableFacet carsOfPrivateStatic()
241    {
242  0 return builder();
243    }
244   
245    // Should be ignored
 
246  0 toggle @TableFacetsSource("byPrivate")
247    private TableFacet carsOfPrivate()
248    {
249  0 return builder();
250    }
251   
 
252  17 toggle static TableFacet builder()
253    {
254  17 return JdbcTableFacet.builder("ap_car")
255    .build();
256    }
257    }
258   
 
259    class TableFacetWarehouseOnMethod extends TableFacetWarehouseParentOnMethod {
 
260    static class StaticFacetProvider implements TableFacetProvider<TableFacet> {
 
261  1 toggle @Override
262    public TableFacet getOne()
263    {
264  1 return builder();
265    }
266    }
267   
 
268    class FacetProvider implements TableFacetProvider<TableFacet> {
 
269  1 toggle @Override
270    public TableFacet getOne()
271    {
272  1 return builder();
273    }
274    }
275   
276    // Should use the name in parent class
 
277  1 toggle @Override
278    TableFacet byDefaults()
279    {
280  1 return builder();
281    }
282   
 
283  1 toggle @TableFacetsSource("byPublic")
284    public TableFacet byPublic()
285    {
286  1 return builder();
287    }
288   
 
289  1 toggle @TableFacetsSource("byProtected")
290    public TableFacet byProtected()
291    {
292  1 return builder();
293    }
294   
 
295  1 toggle @TableFacetsSource("byPrivate")
296    private TableFacet byPrivate()
297    {
298  1 return builder();
299    }
300   
 
301  1 toggle @TableFacetsSource("byList")
302    List<TableFacet> byList()
303    {
304  1 return List.of(builder());
305    }
306   
 
307  1 toggle @TableFacetsSource("byStream")
308    Stream<TableFacet> byStream()
309    {
310  1 return Stream.of(builder());
311    }
312   
 
313  1 toggle @TableFacetsSource("byArray")
314    TableFacet[] byArray()
315    {
316  1 return new TableFacet[] { builder() };
317    }
318   
 
319  1 toggle @TableFacetsSource("byPublicStatic")
320    public static TableFacet byPublicStatic()
321    {
322  1 return builder();
323    }
324   
 
325  1 toggle @TableFacetsSource("byProtectedStatic")
326    protected static TableFacet byProtectedStatic()
327    {
328  1 return builder();
329    }
330   
 
331  1 toggle @TableFacetsSource("byStatic")
332    static TableFacet byStatic()
333    {
334  1 return builder();
335    }
336   
 
337  1 toggle @TableFacetsSource("byPrivateStatic")
338    private static TableFacet byPrivateStatic()
339    {
340  1 return builder();
341    }
342    }
343   
 
344    class TableFacetWarehouseParentOnField {
345    @TableFacetsSource("byDefaults")
346    TableFacet byDefaults = builder();
347   
348    @TableFacetsSource("byPublicOfParent")
349    public TableFacet byPublicOfParent = builder();
350   
351    @TableFacetsSource("byProtectedOfParent")
352    protected TableFacet byProtectedOfParent = builder();
353   
354    @TableFacetsSource("byPublicStaticOfParent")
355    public static TableFacet byPublicStaticOfParent = builder();
356   
357    @TableFacetsSource("byProtectedStaticOfParent")
358    protected static TableFacet byProtectedStaticOfParent = builder();
359   
360    // Should be ignored
361    @TableFacetsSource("byPrivate")
362    private TableFacet byPrivate = builder();
363   
364    // Should be ignored
365    @TableFacetsSource("byPrivateStatic")
366    private static TableFacet byPrivateStatic = builder();
367   
 
368  184 toggle static TableFacet builder()
369    {
370  184 return JdbcTableFacet.builder("ap_car")
371    .build();
372    }
373    }
374   
 
375    class TableFacetWarehouseOnField extends TableFacetWarehouseParentOnField {
376    // Overriding parent
377    TableFacet byDefaults = builder();
378   
379    @TableFacetsSource("byPublic")
380    public TableFacet byPublic = builder();
381   
382    @TableFacetsSource("byProtected")
383    protected TableFacet byProtected = builder();
384   
385    @TableFacetsSource("byPrivate")
386    private TableFacet byPrivate = builder();
387   
388    @TableFacetsSource("byList")
389    List<TableFacet> byList = List.of(builder());
390   
391    @TableFacetsSource("byStream")
392    Stream<TableFacet> byStream = Stream.of(builder());
393   
394    @TableFacetsSource("byArray")
395    TableFacet[] byArray = { builder() };
396   
397    @TableFacetsSource("byProvider")
398    TableFacetProvider<TableFacet> byProvider = TableFacetWarehouseOnField::builder;
399   
400    @TableFacetsSource("byPublicStatic")
401    public static TableFacet byPublicStatic = builder();
402   
403    @TableFacetsSource("byStatic")
404    static TableFacet byStatic = builder();
405   
406    @TableFacetsSource("byProtectedStatic")
407    protected static TableFacet byProtectedStatic = builder();
408   
409    @TableFacetsSource("byPrivateStatic")
410    private static TableFacet byPrivateStatic = builder();
411    }