1 /*******************************************************************************
2 * Copyright (c) 2009, 2010 Ericsson
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
10 * Francois Chouinard - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.tmf
.tests
.component
;
15 import junit
.framework
.TestCase
;
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
;
24 * <b><u>TmfProviderManagerTest</u></b>
26 * Test suite for the TmfProviderManager class.
28 @SuppressWarnings("nls")
29 public class TmfProviderManagerTest
extends TestCase
{
31 public TmfProviderManagerTest(String name
) {
36 protected void setUp() throws Exception
{
41 protected void tearDown() throws Exception
{
45 // ------------------------------------------------------------------------
47 // ------------------------------------------------------------------------
49 public class TestProvider1
extends TmfDataProvider
<TmfEvent
> {
50 public TestProvider1(Class
<TmfEvent
> type
) {
51 super("TestProvider1", type
);
54 public ITmfContext
armRequest(ITmfDataRequest
<TmfEvent
> request
) {
58 public TmfEvent
getNext(ITmfContext context
) {
62 public boolean isCompleted(ITmfDataRequest
<TmfEvent
> request
, TmfEvent data
, int nbRead
) {
67 public class TestProvider2
extends TmfDataProvider
<TmfEvent
> {
68 public TestProvider2(Class
<TmfEvent
> type
) {
69 super("TestProvider2", type
);
72 public ITmfContext
armRequest(ITmfDataRequest
<TmfEvent
> request
) {
76 public TmfEvent
getNext(ITmfContext context
) {
80 public boolean isCompleted(ITmfDataRequest
<TmfEvent
> request
, TmfEvent data
, int nbRead
) {
85 public class TmfEvent3
extends TmfEvent
{
86 public TmfEvent3(TmfEvent3 other
) {
91 public class TestProvider3
extends TmfDataProvider
<TmfEvent3
> {
92 public TestProvider3(Class
<TmfEvent3
> type
) {
93 super("TestProvider3", type
);
96 public ITmfContext
armRequest(ITmfDataRequest
<TmfEvent3
> request
) {
100 public TmfEvent3
getNext(ITmfContext context
) {
104 public boolean isCompleted(ITmfDataRequest
<TmfEvent3
> request
, TmfEvent3 data
, int nbRead
) {
109 // ------------------------------------------------------------------------
111 // ------------------------------------------------------------------------
113 @SuppressWarnings("unchecked")
114 public void testRegister_0() {
115 TmfDataProvider
<TmfEvent
>[] providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class);
116 assertEquals("getProviders", 0, providers
.length
);
118 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TestProvider1
.class);
119 assertEquals("getProviders", 0, providers
.length
);
122 @SuppressWarnings("unchecked")
123 public void testRegister_Unregister_1() {
125 // Register a single provider
126 TestProvider1 testProvider1
= new TestProvider1(TmfEvent
.class);
128 TmfDataProvider
<TmfEvent
>[] providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class);
129 assertEquals("getProviders", 1, providers
.length
);
130 assertEquals("getProviders", testProvider1
, providers
[0]);
132 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TestProvider1
.class);
133 assertEquals("getProviders", 1, providers
.length
);
134 assertEquals("getProviders", testProvider1
, providers
[0]);
137 testProvider1
.dispose();
139 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class);
140 assertEquals("getProviders", 0, providers
.length
);
142 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TestProvider1
.class);
143 assertEquals("getProviders", 0, providers
.length
);
146 @SuppressWarnings("unchecked")
147 public void testRegister_Unregister_2() {
149 // Register 2 providers, same data type
150 TestProvider1 testProvider1
= new TestProvider1(TmfEvent
.class);
151 TestProvider2 testProvider2
= new TestProvider2(TmfEvent
.class);
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]);
160 assertEquals("getProviders", testProvider2
, providers
[0]);
161 assertEquals("getProviders", testProvider1
, providers
[1]);
164 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TestProvider1
.class);
165 assertEquals("getProviders", 1, providers
.length
);
166 assertEquals("getProviders", testProvider1
, providers
[0]);
168 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TestProvider2
.class);
169 assertEquals("getProviders", 1, providers
.length
);
170 assertEquals("getProviders", testProvider2
, providers
[0]);
173 testProvider1
.dispose();
175 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class);
176 assertEquals("getProviders", 1, providers
.length
);
177 assertEquals("getProviders", testProvider2
, providers
[0]);
179 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TestProvider1
.class);
180 assertEquals("getProviders", 0, providers
.length
);
182 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TestProvider2
.class);
183 assertEquals("getProviders", 1, providers
.length
);
184 assertEquals("getProviders", testProvider2
, providers
[0]);
187 testProvider2
.dispose();
189 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class);
190 assertEquals("getProviders", 0, providers
.length
);
192 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TestProvider1
.class);
193 assertEquals("getProviders", 0, providers
.length
);
195 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TestProvider2
.class);
196 assertEquals("getProviders", 0, providers
.length
);
199 @SuppressWarnings("unchecked")
200 public void testRegister_Unregister_3() {
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);
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]);
213 assertEquals("getProviders", testProvider2
, providers
[0]);
214 assertEquals("getProviders", testProvider1
, providers
[1]);
217 TmfDataProvider
<TmfEvent3
>[] providers3
= (TmfDataProvider
<TmfEvent3
>[]) TmfProviderManager
.getProviders(TmfEvent3
.class);
218 assertEquals("getProviders", 1, providers3
.length
);
219 assertEquals("getProviders", testProvider3
, providers3
[0]);
221 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TestProvider1
.class);
222 assertEquals("getProviders", 1, providers
.length
);
223 assertEquals("getProviders", testProvider1
, providers
[0]);
225 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TestProvider2
.class);
226 assertEquals("getProviders", 1, providers
.length
);
227 assertEquals("getProviders", testProvider2
, providers
[0]);
229 providers3
= (TmfDataProvider
<TmfEvent3
>[]) TmfProviderManager
.getProviders(TmfEvent3
.class, TestProvider3
.class);
230 assertEquals("getProviders", 1, providers3
.length
);
231 assertEquals("getProviders", testProvider3
, providers3
[0]);
234 testProvider1
.dispose();
236 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class);
237 assertEquals("getProviders", 1, providers
.length
);
238 assertEquals("getProviders", testProvider2
, providers
[0]);
240 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TestProvider1
.class);
241 assertEquals("getProviders", 0, providers
.length
);
243 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TestProvider2
.class);
244 assertEquals("getProviders", 1, providers
.length
);
245 assertEquals("getProviders", testProvider2
, providers
[0]);
247 providers3
= (TmfDataProvider
<TmfEvent3
>[]) TmfProviderManager
.getProviders(TmfEvent3
.class);
248 assertEquals("getProviders", 1, providers3
.length
);
249 assertEquals("getProviders", testProvider3
, providers3
[0]);
251 providers3
= (TmfDataProvider
<TmfEvent3
>[]) TmfProviderManager
.getProviders(TmfEvent3
.class, TestProvider3
.class);
252 assertEquals("getProviders", 1, providers3
.length
);
253 assertEquals("getProviders", testProvider3
, providers3
[0]);
255 // Remove another one
256 testProvider2
.dispose();
258 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class);
259 assertEquals("getProviders", 0, providers
.length
);
261 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TestProvider1
.class);
262 assertEquals("getProviders", 0, providers
.length
);
264 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TestProvider2
.class);
265 assertEquals("getProviders", 0, providers
.length
);
267 providers3
= (TmfDataProvider
<TmfEvent3
>[]) TmfProviderManager
.getProviders(TmfEvent3
.class);
268 assertTrue(providers3
.length
== 1);
269 assertTrue(providers3
[0] == testProvider3
);
271 providers3
= (TmfDataProvider
<TmfEvent3
>[]) TmfProviderManager
.getProviders(TmfEvent3
.class, TestProvider3
.class);
272 assertEquals("getProviders", 1, providers3
.length
);
273 assertEquals("getProviders", testProvider3
, providers3
[0]);
275 // Remove the last one
276 testProvider3
.dispose();
278 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class);
279 assertEquals("getProviders", 0, providers
.length
);
281 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TestProvider1
.class);
282 assertEquals("getProviders", 0, providers
.length
);
284 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent
.class, TestProvider2
.class);
285 assertEquals("getProviders", 0, providers
.length
);
287 providers3
= (TmfDataProvider
<TmfEvent3
>[]) TmfProviderManager
.getProviders(TmfEvent3
.class);
288 assertEquals("getProviders", 0, providers
.length
);
290 providers3
= (TmfDataProvider
<TmfEvent3
>[]) TmfProviderManager
.getProviders(TmfEvent3
.class, TestProvider3
.class);
291 assertEquals("getProviders", 0, providers
.length
);
294 @SuppressWarnings("unchecked")
295 public void testGetProvider() {
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);
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]);
308 assertEquals("getProviders", testProvider2
, providers
[0]);
309 assertEquals("getProviders", testProvider1
, providers
[1]);
312 providers
= (TmfDataProvider
<TmfEvent
>[]) TmfProviderManager
.getProviders(TmfEvent3
.class, null);
313 assertEquals("getProviders", 1, providers
.length
);
314 assertEquals("getProviders", testProvider3
, providers
[0]);
316 // Remove the providers
317 testProvider1
.dispose();
318 testProvider2
.dispose();
319 testProvider3
.dispose();