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