1
|
package eu.dnetlib.enabling.resultset;
|
2
|
|
3
|
import static org.junit.Assert.*; // NOPMD
|
4
|
import static org.mockito.Mockito.*; // NOPMD by marko on 11/26/08 9:13 PM
|
5
|
|
6
|
import java.util.ArrayList;
|
7
|
import java.util.List;
|
8
|
|
9
|
import org.junit.Before;
|
10
|
import org.junit.Test;
|
11
|
import org.junit.runner.RunWith;
|
12
|
import org.mockito.Mock;
|
13
|
import org.mockito.junit.MockitoJUnitRunner;
|
14
|
|
15
|
/**
|
16
|
* test the resultset concrete implementation.
|
17
|
*
|
18
|
* @author marko
|
19
|
*
|
20
|
*/
|
21
|
@RunWith(MockitoJUnitRunner.class)
|
22
|
public class LocalResultSetImplTest {
|
23
|
|
24
|
/**
|
25
|
* This class could be an anonymous class, but is here to be shared among tests.
|
26
|
*
|
27
|
* @author marko
|
28
|
*
|
29
|
*/
|
30
|
private static final class TestResultSetListener implements ResultSetListener {
|
31
|
/**
|
32
|
* {@inheritDoc}
|
33
|
*
|
34
|
* @see eu.dnetlib.enabling.resultset.ResultSetListener#getResult(int, int)
|
35
|
*/
|
36
|
@Override
|
37
|
public List<String> getResult(final int fromPosition, final int toPosition) {
|
38
|
final List<String> res = new ArrayList<String>();
|
39
|
for (int i = fromPosition; i <= toPosition; i++)
|
40
|
res.add(((Integer) (i - 1)).toString());
|
41
|
return res;
|
42
|
}
|
43
|
|
44
|
@Override
|
45
|
public int getSize() {
|
46
|
return RESULT_SIZE;
|
47
|
}
|
48
|
}
|
49
|
|
50
|
/**
|
51
|
* Mockito lacks of multiple interfaces mocking.
|
52
|
*
|
53
|
* @author marko
|
54
|
*
|
55
|
*/
|
56
|
private abstract static class AbstractResultSetAware implements ResultSetListener, ResultSetAware {
|
57
|
}
|
58
|
|
59
|
/**
|
60
|
* resultset registry mock.
|
61
|
*/
|
62
|
@Mock
|
63
|
private transient ResultSetRegistry registry;
|
64
|
|
65
|
/**
|
66
|
* object under test.
|
67
|
*/
|
68
|
private transient LocalResultSetImpl resultSet;
|
69
|
|
70
|
/**
|
71
|
* number of returned test results.
|
72
|
*/
|
73
|
private static final int RESULT_SIZE = 3;
|
74
|
|
75
|
/**
|
76
|
* provides data to the resultset under test.
|
77
|
*/
|
78
|
private transient TestResultSetListener resultSetListener;
|
79
|
|
80
|
/**
|
81
|
* prepare.
|
82
|
*
|
83
|
*/
|
84
|
@Before
|
85
|
public void setUp() {
|
86
|
resultSetListener = new TestResultSetListener();
|
87
|
resultSet = new LocalResultSetImpl(resultSetListener);
|
88
|
}
|
89
|
|
90
|
/**
|
91
|
* test the get number of results method.
|
92
|
*/
|
93
|
@Test
|
94
|
public void testGetNumberOfResults() {
|
95
|
assertEquals("check number of results", RESULT_SIZE, resultSet.getNumberOfResults());
|
96
|
}
|
97
|
|
98
|
/**
|
99
|
* test the get result method.
|
100
|
*/
|
101
|
@Test
|
102
|
public void testGetResults() {
|
103
|
final List<String> res = resultSet.getResults(1, RESULT_SIZE); // NOPMD by marko on 11/27/08 3:00 AM
|
104
|
assertEquals("whole length", RESULT_SIZE, res.size());
|
105
|
for (int i = 0; i < RESULT_SIZE; i++)
|
106
|
assertEquals("check element", ((Integer) i).toString(), res.get(i));
|
107
|
|
108
|
final List<String> res2 = resultSet.getResults(1, RESULT_SIZE - 1); // NOPMD by marko on 11/27/08 3:00 AM
|
109
|
assertEquals("shorter", RESULT_SIZE - 1, res2.size());
|
110
|
|
111
|
final List<String> res3 = resultSet.getResults(1, RESULT_SIZE + 1); // NOPMD by marko on 11/27/08 3:00 AM
|
112
|
assertEquals("to out of bounds", RESULT_SIZE, res3.size());
|
113
|
|
114
|
final List<String> res4 = resultSet.getResults(RESULT_SIZE + 1, RESULT_SIZE); // NOPMD by marko on 11/27/08 3:00 AM
|
115
|
assertEquals("from out of bounds", 0, res4.size());
|
116
|
|
117
|
final List<String> res5 = resultSet.getResults(0, RESULT_SIZE); // NOPMD by marko on 11/27/08 3:00 AM
|
118
|
assertEquals("from lesser than 1", RESULT_SIZE, res5.size());
|
119
|
|
120
|
final List<String> res6 = resultSet.getResults(RESULT_SIZE, 1); // NOPMD by marko on 11/27/08 3:00 AM
|
121
|
assertEquals("inverted from and to", 1, res6.size());
|
122
|
|
123
|
resultSet.setOpen(true);
|
124
|
final List<String> res7 = resultSet.getResults(1, RESULT_SIZE + 1); // NOPMD by marko on 11/27/08 3:00 AM
|
125
|
assertEquals("to out of bounds - pass through", RESULT_SIZE + 1, res7.size());
|
126
|
}
|
127
|
|
128
|
/**
|
129
|
* test observer/observable pattern.
|
130
|
*/
|
131
|
@Test
|
132
|
public void testDestroy() {
|
133
|
resultSet.addObserver(registry);
|
134
|
assertEquals("observer should be added", 1, resultSet.countObservers());
|
135
|
|
136
|
resultSet.destroy();
|
137
|
assertTrue("should be destroyed", resultSet.isDestroyed());
|
138
|
|
139
|
assertEquals("observers should be cleared", 0, resultSet.countObservers());
|
140
|
verify(registry, times(1)).update(resultSet, null);
|
141
|
}
|
142
|
|
143
|
/**
|
144
|
* test getter ... let's make code coverage happy.
|
145
|
*/
|
146
|
@Test
|
147
|
public void testGetListener() {
|
148
|
assertEquals("test getter?", resultSetListener, resultSet.getListener());
|
149
|
}
|
150
|
|
151
|
/**
|
152
|
* test setter ... let's make code coverage happy.
|
153
|
*/
|
154
|
@Test
|
155
|
public void testSetListener() {
|
156
|
assertEquals("test getter?", resultSetListener, resultSet.getListener());
|
157
|
resultSet.setListener(null);
|
158
|
assertNull("test setter?", resultSet.getListener());
|
159
|
}
|
160
|
|
161
|
/**
|
162
|
* test.
|
163
|
*/
|
164
|
@Test
|
165
|
public void testResultSetAware() {
|
166
|
final AbstractResultSetAware abr = mock(AbstractResultSetAware.class);
|
167
|
resultSet = new LocalResultSetImpl(abr);
|
168
|
assertNotNull("dummy", resultSet);
|
169
|
|
170
|
verify(abr).setResultSet((ResultSet) anyObject());
|
171
|
|
172
|
}
|
173
|
|
174
|
}
|