Commit | Line | Data |
---|---|---|
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 | 13 | package org.eclipse.linuxtools.tmf.core.tests.component; |
d18dd09b ASL |
14 | |
15 | import junit.framework.TestCase; | |
16 | ||
8fd82db5 | 17 | import org.eclipse.linuxtools.internal.tmf.core.component.TmfProviderManager; |
6c13869b | 18 | import org.eclipse.linuxtools.tmf.core.component.TmfDataProvider; |
6256d8ad | 19 | import org.eclipse.linuxtools.tmf.core.event.ITmfEvent; |
6c13869b | 20 | import org.eclipse.linuxtools.tmf.core.event.TmfEvent; |
5419a136 | 21 | import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest; |
6c13869b | 22 | import 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 |
30 | public 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 | } |