1 package guru.mikelue.jdut.datagrain;
2
3 import java.util.List;
4 import java.util.function.Supplier;
5
6 import org.junit.jupiter.api.Test;
7
8 import static org.junit.jupiter.api.Assertions.*;
9
10
11
12
13 public class DataGrainTest {
14 public DataGrainTest() {}
15
16
17
18
19 @Test
20 public void build()
21 {
22 DataGrain testedDataGrain = DataGrain.build(
23 tableBuilder -> tableBuilder
24 .name("tb_thing"),
25 rowBuilder -> rowBuilder
26 .implicitColumns("ct_1", "ct_2")
27
28
29
30 .addValues(1, "BANANA-01")
31 .addValues(2, (Supplier<String>)() -> "BANANA-02")
32
33
34
35
36 .addFields(
37 rowBuilder.newField("ct_1", 11),
38 rowBuilder.newField("ct_2", "PINEAPPLE-02"),
39 rowBuilder.newField("ct_3", (String)null)
40 )
41 .addFields(
42 rowBuilder.newField("ct_1", 12),
43 rowBuilder.newField("ct_3", () -> "PINEAPPLE-03")
44 )
45 .addValues(null, null)
46
47 );
48
49 List<DataRow> testedRows = testedDataGrain.getRows();
50 testedRows.forEach(
51 row -> assertEquals("tb_thing", row.getTable().getName())
52 );
53 assertEquals(Integer.valueOf(1), testedRows.get(0).getData("ct_1"));
54 assertEquals("BANANA-01", testedRows.get(0).getData("ct_2"));
55 assertEquals(Integer.valueOf(2), testedRows.get(1).getData("ct_1"));
56 assertEquals("BANANA-02", testedRows.get(1).getData("ct_2"));
57 assertEquals(Integer.valueOf(11), testedRows.get(2).getData("ct_1"));
58 assertEquals("PINEAPPLE-02", testedRows.get(2).getData("ct_2"));
59 assertEquals((String)null, testedRows.get(2).getData("ct_3"));
60 assertEquals(Integer.valueOf(12), testedRows.get(3).getData("ct_1"));
61 assertEquals("PINEAPPLE-03", testedRows.get(3).getData("ct_3"));
62 assertEquals((Integer)null, testedRows.get(4).getData("ct_1"));
63 assertEquals((String)null, testedRows.get(4).getData("ct_2"));
64 }
65
66
67
68
69 @Test
70 public void aggregate()
71 {
72 DataGrain testedDataGrain = DataGrain.build(
73 tableBuilder -> tableBuilder
74 .name("tb_thing_1"),
75 rowBuilder -> rowBuilder
76 .implicitColumns("t1_c1", "t1_c2")
77 .addValues(1, "OK-1")
78 ).aggregate(
79 DataGrain.build(
80 tableBuilder -> tableBuilder
81 .name("tb_thing_2"),
82 rowBuilder -> rowBuilder
83 .implicitColumns("t2_c1", "t2_c2")
84 .addValues(2, "OK-2")
85 )
86 );
87
88 List<DataRow> testedRows = testedDataGrain.getRows();
89 assertEquals("tb_thing_1", testedRows.get(0).getTable().getName());
90 assertEquals(Integer.valueOf(1), testedRows.get(0).getData("t1_c1"));
91 assertEquals("OK-1", testedRows.get(0).getData("t1_c2"));
92 assertEquals("tb_thing_2", testedRows.get(1).getTable().getName());
93 assertEquals(Integer.valueOf(2), testedRows.get(1).getData("t2_c1"));
94 assertEquals("OK-2", testedRows.get(1).getData("t2_c2"));
95 }
96
97
98
99
100 @Test
101 public void decorate()
102 {
103 DataGrain testedDataGrain = DataGrain.build(
104 tableSchema -> tableSchema.name("tab_1"),
105 rowsBuilder -> rowsBuilder
106 .implicitColumns("col_1", "col_2")
107 .addValues("v1", "v2")
108 .addValues("v1", "v2")
109 );
110
111 testedDataGrain = testedDataGrain.decorate(
112 rowBuilder -> rowBuilder
113 .fieldOfValue("col_1", "v1-1")
114 .fieldOfValue("col_3", "v3")
115 );
116
117 assertEquals("v1-1", testedDataGrain.getRow(0).<String>getData("col_1"));
118 assertEquals("v2", testedDataGrain.getRow(0).<String>getData("col_2"));
119 assertEquals("v3", testedDataGrain.getRow(0).<String>getData("col_3"));
120 assertEquals("v1-1", testedDataGrain.getRow(1).<String>getData("col_1"));
121 assertEquals("v2", testedDataGrain.getRow(1).<String>getData("col_2"));
122 assertEquals("v3", testedDataGrain.getRow(1).<String>getData("col_3"));
123 }
124 }