Project

General

Profile

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
}
(3-3/8)