1 /**********************************************************************
2 * Copyright (c) 2011, 2013 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 * Alexandre Montplaisir - Port to JUnit4
11 **********************************************************************/
13 package org
.eclipse
.tracecompass
.tmf
.ui
.tests
.views
.uml2sd
.load
;
15 import static org
.junit
.Assert
.assertEquals
;
16 import static org
.junit
.Assert
.assertFalse
;
17 import static org
.junit
.Assert
.assertNotNull
;
18 import static org
.junit
.Assert
.assertNull
;
19 import static org
.junit
.Assert
.fail
;
21 import org
.eclipse
.jface
.preference
.IPreferenceStore
;
22 import org
.eclipse
.tracecompass
.internal
.tmf
.ui
.Activator
;
23 import org
.eclipse
.tracecompass
.tmf
.ui
.views
.uml2sd
.SDView
;
24 import org
.eclipse
.tracecompass
.tmf
.ui
.views
.uml2sd
.load
.IUml2SDLoader
;
25 import org
.eclipse
.tracecompass
.tmf
.ui
.views
.uml2sd
.load
.LoadersManager
;
26 import org
.eclipse
.ui
.PlatformUI
;
27 import org
.junit
.Test
;
30 * Test cases class to test loader manager of UML2SD extension point.
32 public class LoadersManagerTest
{
34 private final static String SDVIEW_WITH_ONE_LOADER
= "org.eclipse.linuxtools.tmf.ui.tests.testSDView1Loader";
35 private final static String SDVIEW_WITH_MULTIPLE_LOADER
= "org.eclipse.linuxtools.tmf.ui.tests.testSDView2Loaders";
36 private final static String TEST_LOADER_CLASS_NAME
= "org.eclipse.tracecompass.tmf.ui.tests.uml2sd.load.TestLoaders";
37 private final static String TMF_UML2SD_LOADER_CLASS_NAME
= "org.eclipse.tracecompass.tmf.ui.views.uml2sd.loader.TmfUml2SDSyncLoader";
39 private static final String LOADER_TAG
= "uml2SDLoader";
40 private static final String LOADER_PREFIX
= LOADER_TAG
+ ".";
43 * Tests of loader manager singleton class.
46 public void testLoaderManager() {
51 * Test creation of a loader (one per SD view)
55 // Note this will create the default loader!
56 view
= (SDView
)PlatformUI
.getWorkbench()
57 .getActiveWorkbenchWindow()
59 .showView(SDVIEW_WITH_ONE_LOADER
);
61 IUml2SDLoader defaultLoader
= LoadersManager
.getInstance().getCurrentLoader(SDVIEW_WITH_ONE_LOADER
, view
);
62 assertNotNull("testLoaderManager", defaultLoader
);
64 // Test createLoader where loader doesn't exist
65 assertNull("testLoaderManager", LoadersManager
.getInstance().createLoader("blabla", view
));
68 IUml2SDLoader loader
= LoadersManager
.getInstance().createLoader(TEST_LOADER_CLASS_NAME
, view
);
70 assertNotNull("testLoaderManager", loader
);
71 assertEquals("testLoaderManager", "Test Loader", loader
.getTitleString());
72 assertEquals("testLoaderManager", loader
, LoadersManager
.getInstance().getCurrentLoader(SDVIEW_WITH_ONE_LOADER
));
74 // compare loader and default loader. Even if they are the same class, they are different instances
75 assertFalse("testLoaderManager", loader
==defaultLoader
);
77 // test getCurrentLoader(viewId, view)
78 IUml2SDLoader loader2
= LoadersManager
.getInstance().getCurrentLoader(SDVIEW_WITH_ONE_LOADER
, view
);
79 assertEquals("testLoaderManager", loader
, loader2
);
82 PlatformUI
.getWorkbench().getActiveWorkbenchWindow().getActivePage().hideView(view
);
84 // test that view restores the previous associated loader
85 view
= (SDView
)PlatformUI
.getWorkbench()
86 .getActiveWorkbenchWindow()
88 .showView(SDVIEW_WITH_ONE_LOADER
);
90 // Well, this is the only way test which loader is set
91 assertEquals("testLoaderManager", "Sequence Diagram - First Page", view
.getFrame().getName());
94 assertNull("testLoaderManager", LoadersManager
.getInstance().createLoader(TEST_LOADER_CLASS_NAME
, null));
97 PlatformUI
.getWorkbench().getActiveWorkbenchWindow().getActivePage().hideView(view
);
100 * Test creation of loaders with re-uses the same SD view
103 // test that view restores the previous associated loader
104 view
= (SDView
)PlatformUI
.getWorkbench()
105 .getActiveWorkbenchWindow()
107 .showView(SDVIEW_WITH_MULTIPLE_LOADER
);
109 // Test that default loader is set. Note that 2 default loaders are define in the plugin.xml and the
110 // the first one should be selected.
112 // Well, this is the only way test which loader is set
113 assertEquals("testLoaderManager", "Sequence Diagram - First Page", view
.getFrame().getName());
115 loader
= LoadersManager
.getInstance().getCurrentLoader(SDVIEW_WITH_MULTIPLE_LOADER
, view
);
116 assertNotNull("testLoaderManager", loader
);
117 assertEquals("testLoaderManager", "Test Loader", loader
.getTitleString());
118 assertEquals("testLoaderManager", loader
, LoadersManager
.getInstance().getCurrentLoader(SDVIEW_WITH_MULTIPLE_LOADER
));
120 // Test createLoader for loader with class name TMF_UML2SD_LOADER_CLASS_NAME
121 loader
= LoadersManager
.getInstance().createLoader(TMF_UML2SD_LOADER_CLASS_NAME
, view
);
123 assertNotNull("testLoaderManager", loader
);
124 assertEquals("testLoaderManager", "Component Interactions", loader
.getTitleString());
125 assertEquals("testLoaderManager", loader
, LoadersManager
.getInstance().getCurrentLoader(SDVIEW_WITH_MULTIPLE_LOADER
));
127 // Verify if the correct loader is stored in the preferences as the current loader for this view
128 assertEquals("testLoaderManager", TMF_UML2SD_LOADER_CLASS_NAME
, getSavedLoader(SDVIEW_WITH_MULTIPLE_LOADER
));
130 // Test createLoader for loader with class name TEST_LOADER_CLASS_NAME
131 loader
= LoadersManager
.getInstance().createLoader(TEST_LOADER_CLASS_NAME
, view
);
133 assertNotNull("testLoaderManager", loader
);
134 assertEquals("testLoaderManager", "Test Loader", loader
.getTitleString());
135 assertEquals("testLoaderManager", loader
, LoadersManager
.getInstance().getCurrentLoader(SDVIEW_WITH_MULTIPLE_LOADER
));
137 // Verify if the correct loader is stored in the preferences as the current loader for this view
138 assertEquals("testLoaderManager", TEST_LOADER_CLASS_NAME
, getSavedLoader(SDVIEW_WITH_MULTIPLE_LOADER
));
139 assertEquals("testLoaderManager", TEST_LOADER_CLASS_NAME
, LoadersManager
.getInstance().getSavedLoader(SDVIEW_WITH_MULTIPLE_LOADER
));
142 PlatformUI
.getWorkbench().getActiveWorkbenchWindow().getActivePage().hideView(view
);
145 LoadersManager
.getInstance().resetLoader(SDVIEW_WITH_MULTIPLE_LOADER
);
147 } catch (Exception e
) {
153 private static String
getSavedLoader(String viewId
) {
154 IPreferenceStore p
= Activator
.getDefault().getPreferenceStore();
155 return p
.getString(LOADER_PREFIX
+ viewId
);