1
+ package com .iluwatar .fluentinterface .fluentiterable ;
2
+
3
+ import org .junit .Test ;
4
+
5
+ import java .util .Arrays ;
6
+ import java .util .Collections ;
7
+ import java .util .List ;
8
+ import java .util .Optional ;
9
+ import java .util .Spliterator ;
10
+ import java .util .function .Consumer ;
11
+
12
+ import static org .junit .Assert .assertEquals ;
13
+ import static org .junit .Assert .assertFalse ;
14
+ import static org .junit .Assert .assertNotNull ;
15
+ import static org .junit .Assert .assertTrue ;
16
+ import static org .mockito .Mockito .mock ;
17
+ import static org .mockito .Mockito .times ;
18
+ import static org .mockito .Mockito .verify ;
19
+ import static org .mockito .Mockito .verifyNoMoreInteractions ;
20
+
21
+ /**
22
+ * Date: 12/12/15 - 7:00 PM
23
+ *
24
+ * @author Jeroen Meulemeester
25
+ */
26
+ public abstract class FluentIterableTest {
27
+
28
+ /**
29
+ * Create a new {@link FluentIterable<Integer>} from the given integers
30
+ *
31
+ * @param integers The integers
32
+ * @return The new iterable, use for testing
33
+ */
34
+ protected abstract FluentIterable <Integer > createFluentIterable (final Iterable <Integer > integers );
35
+
36
+ @ Test
37
+ public void testFirst () throws Exception {
38
+ final List <Integer > integers = Arrays .asList (1 , 2 , 3 , 10 , 9 , 8 );
39
+ final Optional <Integer > first = createFluentIterable (integers ).first ();
40
+ assertNotNull (first );
41
+ assertTrue (first .isPresent ());
42
+ assertEquals (integers .get (0 ), first .get ());
43
+ }
44
+
45
+ @ Test
46
+ public void testFirstEmptyCollection () throws Exception {
47
+ final List <Integer > integers = Collections .<Integer >emptyList ();
48
+ final Optional <Integer > first = createFluentIterable (integers ).first ();
49
+ assertNotNull (first );
50
+ assertFalse (first .isPresent ());
51
+ }
52
+
53
+ @ Test
54
+ public void testFirstCount () throws Exception {
55
+ final List <Integer > integers = Arrays .asList (1 , 2 , 3 , 10 , 9 , 8 );
56
+ final List <Integer > first4 = createFluentIterable (integers )
57
+ .first (4 )
58
+ .asList ();
59
+
60
+ assertNotNull (first4 );
61
+ assertEquals (4 , first4 .size ());
62
+
63
+ assertEquals (integers .get (0 ), first4 .get (0 ));
64
+ assertEquals (integers .get (1 ), first4 .get (1 ));
65
+ assertEquals (integers .get (2 ), first4 .get (2 ));
66
+ assertEquals (integers .get (3 ), first4 .get (3 ));
67
+ }
68
+
69
+ @ Test
70
+ public void testFirstCountLessItems () throws Exception {
71
+ final List <Integer > integers = Arrays .asList (1 , 2 , 3 );
72
+ final List <Integer > first4 = createFluentIterable (integers )
73
+ .first (4 )
74
+ .asList ();
75
+
76
+ assertNotNull (first4 );
77
+ assertEquals (3 , first4 .size ());
78
+
79
+ assertEquals (integers .get (0 ), first4 .get (0 ));
80
+ assertEquals (integers .get (1 ), first4 .get (1 ));
81
+ assertEquals (integers .get (2 ), first4 .get (2 ));
82
+ }
83
+
84
+ @ Test
85
+ public void testLast () throws Exception {
86
+ final List <Integer > integers = Arrays .asList (1 , 2 , 3 , 10 , 9 , 8 );
87
+ final Optional <Integer > last = createFluentIterable (integers ).last ();
88
+ assertNotNull (last );
89
+ assertTrue (last .isPresent ());
90
+ assertEquals (integers .get (integers .size () - 1 ), last .get ());
91
+ }
92
+
93
+ @ Test
94
+ public void testLastEmptyCollection () throws Exception {
95
+ final List <Integer > integers = Collections .<Integer >emptyList ();
96
+ final Optional <Integer > last = createFluentIterable (integers ).last ();
97
+ assertNotNull (last );
98
+ assertFalse (last .isPresent ());
99
+ }
100
+
101
+ @ Test
102
+ public void testLastCount () throws Exception {
103
+ final List <Integer > integers = Arrays .asList (1 , 2 , 3 , 10 , 9 , 8 );
104
+ final List <Integer > last4 = createFluentIterable (integers )
105
+ .last (4 )
106
+ .asList ();
107
+
108
+ assertNotNull (last4 );
109
+ assertEquals (4 , last4 .size ());
110
+ assertEquals (Integer .valueOf (3 ), last4 .get (0 ));
111
+ assertEquals (Integer .valueOf (10 ), last4 .get (1 ));
112
+ assertEquals (Integer .valueOf (9 ), last4 .get (2 ));
113
+ assertEquals (Integer .valueOf (8 ), last4 .get (3 ));
114
+ }
115
+
116
+ @ Test
117
+ public void testLastCountLessItems () throws Exception {
118
+ final List <Integer > integers = Arrays .asList (1 , 2 , 3 );
119
+ final List <Integer > last4 = createFluentIterable (integers )
120
+ .last (4 )
121
+ .asList ();
122
+
123
+ assertNotNull (last4 );
124
+ assertEquals (3 , last4 .size ());
125
+
126
+ assertEquals (Integer .valueOf (1 ), last4 .get (0 ));
127
+ assertEquals (Integer .valueOf (2 ), last4 .get (1 ));
128
+ assertEquals (Integer .valueOf (3 ), last4 .get (2 ));
129
+ }
130
+
131
+ @ Test
132
+ public void testFilter () throws Exception {
133
+ final List <Integer > integers = Arrays .asList (1 , 2 , 3 , 10 , 9 , 8 );
134
+ final List <Integer > evenItems = createFluentIterable (integers )
135
+ .filter (i -> i % 2 == 0 )
136
+ .asList ();
137
+
138
+ assertNotNull (evenItems );
139
+ assertEquals (3 , evenItems .size ());
140
+ assertEquals (Integer .valueOf (2 ), evenItems .get (0 ));
141
+ assertEquals (Integer .valueOf (10 ), evenItems .get (1 ));
142
+ assertEquals (Integer .valueOf (8 ), evenItems .get (2 ));
143
+ }
144
+
145
+ @ Test
146
+ public void testMap () throws Exception {
147
+ final List <Integer > integers = Arrays .asList (1 , 2 , 3 );
148
+ final List <Long > longs = createFluentIterable (integers )
149
+ .map (Integer ::longValue )
150
+ .asList ();
151
+
152
+ assertNotNull (longs );
153
+ assertEquals (integers .size (), longs .size ());
154
+ assertEquals (Long .valueOf (1 ), longs .get (0 ));
155
+ assertEquals (Long .valueOf (2 ), longs .get (1 ));
156
+ assertEquals (Long .valueOf (3 ), longs .get (2 ));
157
+ }
158
+
159
+ @ Test
160
+ public void testForEach () throws Exception {
161
+ final List <Integer > integers = Arrays .asList (1 , 2 , 3 );
162
+
163
+ final Consumer <Integer > consumer = mock (Consumer .class );
164
+ createFluentIterable (integers ).forEach (consumer );
165
+
166
+ verify (consumer , times (1 )).accept (Integer .valueOf (1 ));
167
+ verify (consumer , times (1 )).accept (Integer .valueOf (2 ));
168
+ verify (consumer , times (1 )).accept (Integer .valueOf (3 ));
169
+ verifyNoMoreInteractions (consumer );
170
+
171
+ }
172
+
173
+ @ Test
174
+ public void testSpliterator () throws Exception {
175
+ final List <Integer > integers = Arrays .asList (1 , 2 , 3 );
176
+ final Spliterator <Integer > split = createFluentIterable (integers ).spliterator ();
177
+ assertNotNull (split );
178
+ }
179
+
180
+ }
0 commit comments