1 /**********************************************************************
2 * Copyright (c) 2011 Ericsson.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
9 * Bernd Hufmann - Initial API and implementation
10 **********************************************************************/
11 package org
.eclipse
.linuxtools
.tmf
.ui
.tests
.views
.uml2sd
.load
;
13 import junit
.framework
.TestCase
;
15 import org
.eclipse
.jface
.preference
.IPreferenceStore
;
16 import org
.eclipse
.linuxtools
.internal
.tmf
.ui
.Activator
;
17 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.uml2sd
.SDView
;
18 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.uml2sd
.load
.IUml2SDLoader
;
19 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.uml2sd
.load
.LoadersManager
;
20 import org
.eclipse
.swt
.widgets
.Display
;
21 import org
.eclipse
.ui
.PlatformUI
;
23 public class LoadersManagerTest
extends TestCase
{
25 private final static String SDVIEW_WITH_ONE_LOADER
= "org.eclipse.linuxtools.tmf.ui.tests.testSDView1Loader"; //$NON-NLS-1$
26 private final static String SDVIEW_WITH_MULTIPLE_LOADER
= "org.eclipse.linuxtools.tmf.ui.tests.testSDView2Loaders"; //$NON-NLS-1$
27 private final static String TEST_LOADER_CLASS_NAME
= "org.eclipse.linuxtools.tmf.ui.tests.uml2sd.load.TestLoaders"; //$NON-NLS-1$
28 private final static String TMF_UML2SD_LOADER_CLASS_NAME
= "org.eclipse.linuxtools.tmf.ui.views.uml2sd.loader.TmfUml2SDSyncLoader"; //$NON-NLS-1$
30 private static final String LOADER_TAG
= "uml2SDLoader"; //$NON-NLS-1$
31 private static final String LOADER_PREFIX
= LOADER_TAG
+ "."; //$NON-NLS-1$
34 public void setUp() throws Exception
{
39 public void tearDown() throws Exception
{
43 @SuppressWarnings("nls")
44 public void testLoaderManager() {
50 * Test creation of a loader (one per SD view)
54 // Note this will create the default loader!
55 view
= (SDView
)PlatformUI
.getWorkbench()
56 .getActiveWorkbenchWindow()
58 .showView(SDVIEW_WITH_ONE_LOADER
);
60 IUml2SDLoader defaultLoader
= LoadersManager
.getInstance().getCurrentLoader(SDVIEW_WITH_ONE_LOADER
, view
);
61 assertNotNull("testLoaderManager", defaultLoader
);
63 // Test createLoader where loader doesn't exist
64 assertNull("testLoaderManager", LoadersManager
.getInstance().createLoader("blabla", view
));
67 IUml2SDLoader loader
= LoadersManager
.getInstance().createLoader(TEST_LOADER_CLASS_NAME
, view
);
69 assertNotNull("testLoaderManager", loader
);
70 assertEquals("testLoaderManager", "Test Loader", loader
.getTitleString());
71 assertEquals("testLoaderManager", loader
, LoadersManager
.getInstance().getCurrentLoader(SDVIEW_WITH_ONE_LOADER
));
73 // compare loader and default loader. Even if they are the same class, they are different instances
74 assertFalse("testLoaderManager", loader
==defaultLoader
);
76 // test getCurrentLoader(viewId, view)
77 IUml2SDLoader loader2
= LoadersManager
.getInstance().getCurrentLoader(SDVIEW_WITH_ONE_LOADER
, view
);
78 assertEquals("testLoaderManager", loader
, loader2
);
81 PlatformUI
.getWorkbench().getActiveWorkbenchWindow().getActivePage().hideView(view
);
83 // test that view restores the previous associated loader
84 view
= (SDView
)PlatformUI
.getWorkbench()
85 .getActiveWorkbenchWindow()
87 .showView(SDVIEW_WITH_ONE_LOADER
);
89 // Well, this is the only way test which loader is set
90 assertEquals("testLoaderManager", "Sequence Diagram - First Page", view
.getFrame().getName());
93 assertNull("testLoaderManager", LoadersManager
.getInstance().createLoader(TEST_LOADER_CLASS_NAME
, null));
96 PlatformUI
.getWorkbench().getActiveWorkbenchWindow().getActivePage().hideView(view
);
99 * Test creation of loaders with re-uses the same SD view
102 // test that view restores the previous associated loader
103 view
= (SDView
)PlatformUI
.getWorkbench()
104 .getActiveWorkbenchWindow()
106 .showView(SDVIEW_WITH_MULTIPLE_LOADER
);
108 // Test that default loader is set. Note that 2 default loaders are define in the plugin.xml and the
109 // the first one should be selected.
111 // Well, this is the only way test which loader is set
112 assertEquals("testLoaderManager", "Sequence Diagram - First Page", view
.getFrame().getName());
114 loader
= LoadersManager
.getInstance().getCurrentLoader(SDVIEW_WITH_MULTIPLE_LOADER
, view
);
115 assertNotNull("testLoaderManager", loader
);
116 assertEquals("testLoaderManager", "Test Loader", loader
.getTitleString());
117 assertEquals("testLoaderManager", loader
, LoadersManager
.getInstance().getCurrentLoader(SDVIEW_WITH_MULTIPLE_LOADER
));
119 // Test createLoader for loader with class name TMF_UML2SD_LOADER_CLASS_NAME
120 loader
= LoadersManager
.getInstance().createLoader(TMF_UML2SD_LOADER_CLASS_NAME
, view
);
122 assertNotNull("testLoaderManager", loader
);
123 assertEquals("testLoaderManager", "Component Interactions", loader
.getTitleString());
124 assertEquals("testLoaderManager", loader
, LoadersManager
.getInstance().getCurrentLoader(SDVIEW_WITH_MULTIPLE_LOADER
));
126 // Verify if the correct loader is stored in the preferences as the current loader for this view
127 assertEquals("testLoaderManager", TMF_UML2SD_LOADER_CLASS_NAME
, getSavedLoader(SDVIEW_WITH_MULTIPLE_LOADER
));
129 // Test createLoader for loader with class name TEST_LOADER_CLASS_NAME
130 loader
= LoadersManager
.getInstance().createLoader(TEST_LOADER_CLASS_NAME
, view
);
132 assertNotNull("testLoaderManager", loader
);
133 assertEquals("testLoaderManager", "Test Loader", loader
.getTitleString());
134 assertEquals("testLoaderManager", loader
, LoadersManager
.getInstance().getCurrentLoader(SDVIEW_WITH_MULTIPLE_LOADER
));
136 // Verify if the correct loader is stored in the preferences as the current loader for this view
137 assertEquals("testLoaderManager", TEST_LOADER_CLASS_NAME
, getSavedLoader(SDVIEW_WITH_MULTIPLE_LOADER
));
138 assertEquals("testLoaderManager", TEST_LOADER_CLASS_NAME
, LoadersManager
.getInstance().getSavedLoader(SDVIEW_WITH_MULTIPLE_LOADER
));
141 PlatformUI
.getWorkbench().getActiveWorkbenchWindow().getActivePage().hideView(view
);
144 LoadersManager
.getInstance().resetLoader(SDVIEW_WITH_MULTIPLE_LOADER
);
146 } catch (Exception e
) {
152 @SuppressWarnings("unused")
153 private void delay(long waitTimeMillis
) {
154 Display display
= Display
.getCurrent();
155 if (display
!= null) {
156 long endTimeMillis
= System
.currentTimeMillis() + waitTimeMillis
;
157 while(System
.currentTimeMillis() < endTimeMillis
) {
158 if (!display
.readAndDispatch()) {
165 Thread
.sleep(waitTimeMillis
);
166 } catch (InterruptedException e
) {
172 private String
getSavedLoader(String viewId
) {
173 IPreferenceStore p
= Activator
.getDefault().getPreferenceStore();
174 return p
.getString(LOADER_PREFIX
+ viewId
);