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