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