/******************************************************************************* * Copyright (c) 2011-2014 Ericsson * * All rights reserved. This program and the accompanying materials are * made available under the terms of the Eclipse Public License v1.0 which * accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Bernd Hufmann - Initial API and implementation * Alexandre Montplaisir - Port to JUnit4 *******************************************************************************/ package org.eclipse.tracecompass.tmf.ui.tests.views.uml2sd.loader; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.util.List; import org.eclipse.tracecompass.tmf.core.signal.TmfSignalManager; import org.eclipse.tracecompass.tmf.ui.views.uml2sd.dialogs.FilterCriteria; import org.eclipse.tracecompass.tmf.ui.views.uml2sd.dialogs.FilterListDialog; import org.eclipse.tracecompass.tmf.ui.views.uml2sd.handlers.provider.ISDAdvancedPagingProvider; import org.eclipse.tracecompass.tmf.ui.views.uml2sd.handlers.provider.ISDPagingProvider; import org.eclipse.tracecompass.tmf.ui.views.uml2sd.loader.TmfUml2SDSyncLoader; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; /** * Test cases for Experiment handling. * * @author Bernd Hufmann */ public class TmfUml2SDSyncLoaderExpTest { private static Uml2SDTestFacility fFacility; /** * Initialization */ @BeforeClass public static void setUpClass() { fFacility = Uml2SDTestFacility.getInstance(); fFacility.init(); // create filter criteria (incl. save) fFacility.createFilterCriteria(); fFacility.selectExperiment(); } /** * Cleanup */ @AfterClass public static void tearDownClass() { fFacility.disposeExperiment(); fFacility.dispose(); fFacility = null; } /** * Verify setup * * Verified Methods: loader.getTitleString() * view.getPartName() * view.getFrame() * Expected result: Title, view name are set properly. */ @Test public void verifySetup() { assertEquals("getTitleString", "Component Interactions", fFacility.getLoader().getTitleString()); assertEquals("getPartName", "Sequence Diagram", fFacility.getSdView().getPartName()); assertNotNull("getFrame", fFacility.getSdView().getFrame()); fFacility.disposeExperiment(); fFacility.delay(IUml2SDTestConstants.GUI_REFESH_DELAY); verifyPage(0, 0, false, false, 0); } /** * Verify cancellation of ongoing indexing. * * Verified Methods: loader.experimentSelected(), loader.experimentDisposed(), loader.nextPage() * Expected result: No exceptions during cancellation and nextPage() operation. * * Note this test is not sufficient to verify the concurrent access of the loader attributes * by multiple threads. Contention might happen but it's not guaranteed. */ @Test public void verifyCancel() { for(int i = 0; i < 5; i++) { fFacility.selectExperiment(false); fFacility.delay(IUml2SDTestConstants.INITIAL_INDEX_DELAY); try { fFacility.disposeExperiment(); fFacility.getLoader().nextPage(); // to test out of bounce // Note: To actually create an out of bound exception remove // safety-checks in nextPage/moveToPage of loader class } catch (Exception e){ // No Exception expected fail("exp.select/exp.dispose"); } } } /** * Verify disposed experiment. * * Verified Methods: loader.nextPage(), * loader.pagesCount(), loader.hasNextPage(), loader.hasPrevPage(), * frame.syncMessagesCount, frame.lifeLinesCount * Expected result: Page values and filter are reset. * * Note this test is not sufficient to verify the concurrent access of the loader attributes * by multiple threads. Contention might happen but it's not guaranteed. */ @Test public void verifyDispose() { verifyPage(0, 0, false, false, 0); // verify that all enable filters are disabled after disposal List<FilterCriteria> filter = FilterListDialog.getGlobalFilters(); for (FilterCriteria filterCriteria : filter) { assertFalse("exp.dispose", filterCriteria.isActive()); } } /** * Verify the disposal of the loader. * * Verified Methods: loader.dispose() * Expected result: All providers are removed from SDView. */ @Test public void verifyLoaderDispose() { fFacility.getLoader().dispose(); assertTrue("loader.dispose", fFacility.getSdView().getSDPagingProvider() == null); assertTrue("loader.dispose", fFacility.getSdView().getSDFindProvider() == null); assertTrue("loader.dispose", fFacility.getSdView().getSDFilterProvider() == null); assertTrue("loader.dispose", fFacility.getSdView().getExtendedFindProvider() == null); assertTrue("loader.dispose", fFacility.getSdView().getExtendedFilterProvider() == null); // Set again loader as signal handler, which was removed by the the dispose above TmfSignalManager.register(fFacility.getLoader()); } /** * Verify setViewer. * * Verified Methods: loader.setViewer * Expected result: Paging, find and filter provider are set */ @Test public void testSetViewer() { fFacility.getLoader().setViewer(fFacility.getSdView()); ISDPagingProvider pagingProvider = fFacility.getSdView().getSDPagingProvider(); assertTrue("loader.setViewer", pagingProvider != null); assertTrue("loader.setViewer", pagingProvider instanceof ISDAdvancedPagingProvider); assertTrue("loader.setViewer", pagingProvider instanceof TmfUml2SDSyncLoader); assertTrue("loader.setViewer", fFacility.getSdView().getSDFindProvider() != null); assertTrue("loader.setViewer", fFacility.getSdView().getSDFilterProvider() != null); // All other providers are not used. assertTrue("loader.setViewer", fFacility.getSdView().getExtendedFindProvider() == null); assertTrue("loader.setViewer", fFacility.getSdView().getExtendedFilterProvider() == null); } private static void verifyPage(int currentPage, int numMsg, boolean hasNext, boolean hasPrev, int lifelineCount) { assertEquals("currentPage", currentPage, fFacility.getLoader().currentPage()); assertEquals("syncMessageCount, ", numMsg, fFacility.getSdView().getFrame().syncMessageCount()); if (hasNext) { assertTrue("hasNextpage", fFacility.getLoader().hasNextPage()); } else { assertFalse("hasNextPage", fFacility.getLoader().hasNextPage()); } if (hasPrev) { assertTrue("hasPrevPage", fFacility.getLoader().hasPrevPage()); } else { assertFalse("hasPrevPage", fFacility.getLoader().hasPrevPage()); } assertEquals("lifeLinesCount", lifelineCount, fFacility.getSdView().getFrame().lifeLinesCount()); } }