Move alltests plugin to the Trace Compass namespace
[deliverable/tracecompass.git] / org.eclipse.tracecompass.tmf.core.tests / src / org / eclipse / linuxtools / tmf / core / tests / component / TmfProviderManagerTest.java
1 /*******************************************************************************
2 * Copyright (c) 2009, 2013 Ericsson
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
11 * Alexandre Montplaisir - Port to JUnit4
12 *******************************************************************************/
13
14 package org.eclipse.linuxtools.tmf.core.tests.component;
15
16 import static org.junit.Assert.assertEquals;
17 import static org.junit.Assert.assertTrue;
18
19 import org.eclipse.linuxtools.internal.tmf.core.component.TmfProviderManager;
20 import org.eclipse.linuxtools.tmf.core.component.TmfEventProvider;
21 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
22 import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
23 import org.eclipse.linuxtools.tmf.core.request.ITmfEventRequest;
24 import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
25 import org.junit.Test;
26
27 /**
28 * Test suite for the TmfProviderManager class.
29 */
30 public class TmfProviderManagerTest {
31
32 // ------------------------------------------------------------------------
33 // Dummy Providers
34 // ------------------------------------------------------------------------
35
36 private class TestProvider1 extends TmfEventProvider {
37 public TestProvider1(Class<ITmfEvent> type) {
38 super("TestProvider1", type);
39 }
40
41 @Override
42 public ITmfContext armRequest(ITmfEventRequest request) {
43 return null;
44 }
45
46 @Override
47 public ITmfEvent getNext(ITmfContext context) {
48 return null;
49 }
50
51 @Override
52 public boolean isCompleted(ITmfEventRequest request, ITmfEvent data, int nbRead) {
53 return false;
54 }
55 }
56
57 private class TestProvider2 extends TmfEventProvider {
58 public TestProvider2(Class<ITmfEvent> type) {
59 super("TestProvider2", type);
60 }
61
62 @Override
63 public ITmfContext armRequest(ITmfEventRequest request) {
64 return null;
65 }
66
67 @Override
68 public ITmfEvent getNext(ITmfContext context) {
69 return null;
70 }
71
72 @Override
73 public boolean isCompleted(ITmfEventRequest request, ITmfEvent data, int nbRead) {
74 return false;
75 }
76 }
77
78 private class TmfEvent3 extends TmfEvent {
79 }
80
81 private class TestProvider3 extends TmfEventProvider {
82 public TestProvider3(Class<TmfEvent3> type) {
83 super("TestProvider3", type);
84 }
85
86 @Override
87 public ITmfContext armRequest(ITmfEventRequest request) {
88 return null;
89 }
90
91 @Override
92 public TmfEvent3 getNext(ITmfContext context) {
93 return null;
94 }
95
96 @Override
97 public boolean isCompleted(ITmfEventRequest request, ITmfEvent data, int nbRead) {
98 return false;
99 }
100 }
101
102 // ------------------------------------------------------------------------
103 // register/dispose
104 // ------------------------------------------------------------------------
105
106 /**
107 * Test registering
108 */
109 @Test
110 public void testRegister_0() {
111 TmfEventProvider[] providers = TmfProviderManager.getProviders(ITmfEvent.class);
112 assertEquals("getProviders", 0, providers.length);
113
114 providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class);
115 assertEquals("getProviders", 0, providers.length);
116 }
117
118 /**
119 * Test unregistering
120 */
121 @Test
122 public void testRegister_Unregister_1() {
123
124 // Register a single provider
125 TestProvider1 testProvider1 = new TestProvider1(ITmfEvent.class);
126
127 TmfEventProvider[] providers = TmfProviderManager.getProviders(ITmfEvent.class);
128 assertEquals("getProviders", 1, providers.length);
129 assertEquals("getProviders", testProvider1, providers[0]);
130
131 providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class);
132 assertEquals("getProviders", 1, providers.length);
133 assertEquals("getProviders", testProvider1, providers[0]);
134
135 // Unregister it
136 testProvider1.dispose();
137
138 providers = TmfProviderManager.getProviders(ITmfEvent.class);
139 assertEquals("getProviders", 0, providers.length);
140
141 providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class);
142 assertEquals("getProviders", 0, providers.length);
143 }
144
145 /**
146 * Test unregistering
147 */
148 @Test
149 public void testRegister_Unregister_2() {
150
151 // Register 2 providers, same data type
152 TestProvider1 testProvider1 = new TestProvider1(ITmfEvent.class);
153 TestProvider2 testProvider2 = new TestProvider2(ITmfEvent.class);
154
155 TmfEventProvider[] providers = TmfProviderManager.getProviders(ITmfEvent.class);
156 assertEquals("getProviders", 2, providers.length);
157 assertTrue(providers.length == 2);
158 if (providers[0] == testProvider1) {
159 assertEquals("getProviders", testProvider2, providers[1]);
160 }
161 else {
162 assertEquals("getProviders", testProvider2, providers[0]);
163 assertEquals("getProviders", testProvider1, providers[1]);
164 }
165
166 providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class);
167 assertEquals("getProviders", 1, providers.length);
168 assertEquals("getProviders", testProvider1, providers[0]);
169
170 providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider2.class);
171 assertEquals("getProviders", 1, providers.length);
172 assertEquals("getProviders", testProvider2, providers[0]);
173
174 // Remove one
175 testProvider1.dispose();
176
177 providers = TmfProviderManager.getProviders(ITmfEvent.class);
178 assertEquals("getProviders", 1, providers.length);
179 assertEquals("getProviders", testProvider2, providers[0]);
180
181 providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class);
182 assertEquals("getProviders", 0, providers.length);
183
184 providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider2.class);
185 assertEquals("getProviders", 1, providers.length);
186 assertEquals("getProviders", testProvider2, providers[0]);
187
188 // Remove the other
189 testProvider2.dispose();
190
191 providers = TmfProviderManager.getProviders(ITmfEvent.class);
192 assertEquals("getProviders", 0, providers.length);
193
194 providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class);
195 assertEquals("getProviders", 0, providers.length);
196
197 providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider2.class);
198 assertEquals("getProviders", 0, providers.length);
199 }
200
201 /**
202 * Test unregistering
203 */
204 @Test
205 public void testRegister_Unregister_3() {
206
207 // Register 3 providers, mixed data types
208 TestProvider1 testProvider1 = new TestProvider1(ITmfEvent.class);
209 TestProvider2 testProvider2 = new TestProvider2(ITmfEvent.class);
210 TestProvider3 testProvider3 = new TestProvider3(TmfEvent3.class);
211
212 TmfEventProvider[] providers = TmfProviderManager.getProviders(ITmfEvent.class);
213 assertEquals("getProviders", 2, providers.length);
214 if (providers[0] == testProvider1) {
215 assertEquals("getProviders", testProvider2, providers[1]);
216 }
217 else {
218 assertEquals("getProviders", testProvider2, providers[0]);
219 assertEquals("getProviders", testProvider1, providers[1]);
220 }
221
222 TmfEventProvider[] providers3 = TmfProviderManager.getProviders(TmfEvent3.class);
223 assertEquals("getProviders", 1, providers3.length);
224 assertEquals("getProviders", testProvider3, providers3[0]);
225
226 providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class);
227 assertEquals("getProviders", 1, providers.length);
228 assertEquals("getProviders", testProvider1, providers[0]);
229
230 providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider2.class);
231 assertEquals("getProviders", 1, providers.length);
232 assertEquals("getProviders", testProvider2, providers[0]);
233
234 providers3 = TmfProviderManager.getProviders(TmfEvent3.class, TestProvider3.class);
235 assertEquals("getProviders", 1, providers3.length);
236 assertEquals("getProviders", testProvider3, providers3[0]);
237
238 // Remove one
239 testProvider1.dispose();
240
241 providers = TmfProviderManager.getProviders(ITmfEvent.class);
242 assertEquals("getProviders", 1, providers.length);
243 assertEquals("getProviders", testProvider2, providers[0]);
244
245 providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class);
246 assertEquals("getProviders", 0, providers.length);
247
248 providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider2.class);
249 assertEquals("getProviders", 1, providers.length);
250 assertEquals("getProviders", testProvider2, providers[0]);
251
252 providers3 = TmfProviderManager.getProviders(TmfEvent3.class);
253 assertEquals("getProviders", 1, providers3.length);
254 assertEquals("getProviders", testProvider3, providers3[0]);
255
256 providers3 = TmfProviderManager.getProviders(TmfEvent3.class, TestProvider3.class);
257 assertEquals("getProviders", 1, providers3.length);
258 assertEquals("getProviders", testProvider3, providers3[0]);
259
260 // Remove another one
261 testProvider2.dispose();
262
263 providers = TmfProviderManager.getProviders(ITmfEvent.class);
264 assertEquals("getProviders", 0, providers.length);
265
266 providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class);
267 assertEquals("getProviders", 0, providers.length);
268
269 providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider2.class);
270 assertEquals("getProviders", 0, providers.length);
271
272 providers3 = TmfProviderManager.getProviders(TmfEvent3.class);
273 assertTrue(providers3.length == 1);
274 assertTrue(providers3[0] == testProvider3);
275
276 providers3 = TmfProviderManager.getProviders(TmfEvent3.class, TestProvider3.class);
277 assertEquals("getProviders", 1, providers3.length);
278 assertEquals("getProviders", testProvider3, providers3[0]);
279
280 // Remove the last one
281 testProvider3.dispose();
282
283 providers = TmfProviderManager.getProviders(ITmfEvent.class);
284 assertEquals("getProviders", 0, providers.length);
285
286 providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class);
287 assertEquals("getProviders", 0, providers.length);
288
289 providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider2.class);
290 assertEquals("getProviders", 0, providers.length);
291
292 providers3 = TmfProviderManager.getProviders(TmfEvent3.class);
293 assertEquals("getProviders", 0, providers.length);
294
295 providers3 = TmfProviderManager.getProviders(TmfEvent3.class, TestProvider3.class);
296 assertEquals("getProviders", 0, providers.length);
297 }
298
299 /**
300 * Test getProviders method
301 */
302 @Test
303 public void testGetProvider() {
304
305 // Register 3 providers, mixed data types
306 TestProvider1 testProvider1 = new TestProvider1(ITmfEvent.class);
307 TestProvider2 testProvider2 = new TestProvider2(ITmfEvent.class);
308 TestProvider3 testProvider3 = new TestProvider3(TmfEvent3.class);
309
310 TmfEventProvider[] providers = TmfProviderManager.getProviders(ITmfEvent.class, null);
311 assertEquals("getProviders", 2, providers.length);
312 if (providers[0] == testProvider1) {
313 assertEquals("getProviders", testProvider2, providers[1]);
314 }
315 else {
316 assertEquals("getProviders", testProvider2, providers[0]);
317 assertEquals("getProviders", testProvider1, providers[1]);
318 }
319
320 providers = TmfProviderManager.getProviders(TmfEvent3.class, null);
321 assertEquals("getProviders", 1, providers.length);
322 assertEquals("getProviders", testProvider3, providers[0]);
323
324 // Remove the providers
325 testProvider1.dispose();
326 testProvider2.dispose();
327 testProvider3.dispose();
328 }
329
330 }
This page took 0.037339 seconds and 5 git commands to generate.