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