Package org.springframework.ide.eclipse.config.tests.graph.parts

Source Code of org.springframework.ide.eclipse.config.tests.graph.parts.ActivityDiagramPartUiTest$RunningJobsCounter

/*******************************************************************************
*  Copyright (c) 2012 VMware, Inc.
*  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:
*      VMware, Inc. - initial API and implementation
*******************************************************************************/
package org.springframework.ide.eclipse.config.tests.graph.parts;

import java.util.List;

import org.eclipse.core.runtime.jobs.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.IJobChangeListener;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.swtbot.eclipse.gef.finder.widgets.SWTBotGefEditPart;
import org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable;
import org.eclipse.swtbot.swt.finder.results.VoidResult;
import org.springframework.ide.eclipse.config.core.schemas.BatchSchemaConstants;
import org.springframework.ide.eclipse.config.graph.AbstractConfigGraphicalEditor;
import org.springframework.ide.eclipse.config.graph.parts.ActivityDiagramPart;
import org.springframework.ide.eclipse.config.tests.AbstractConfigUiTestCase;
import org.springframework.ide.eclipse.config.tests.util.StsBotConfigEditor;
import org.springframework.ide.eclipse.config.tests.util.gef.EditPartMatcherFactory;
import org.springframework.ide.eclipse.config.tests.util.gef.StsBotGefEditor;

/**
* @author Leo Dos Santos
* @author Tomasz Zarna
*/
public class ActivityDiagramPartUiTest extends AbstractConfigUiTestCase {

  private RunningJobsCounter runningJobsListener;

  public void testDropInvalidPart() throws Exception {
    cEditor = openFileInEditor("src/batch-config.xml");
    assertNotNull("Could not open a configuration editor.", cEditor);

    UIThreadRunnable.syncExec(new VoidResult() {
      public void run() {
        AbstractConfigGraphicalEditor page = cEditor.getGraphicalEditorForUri(BatchSchemaConstants.URI);
        assertNotNull("Could not load batch-graph page.", page);
        cEditor.setActiveEditor(page);
      }
    });

    StsBotConfigEditor editor = getBot().activeConfigEditor();
    StsBotGefEditor gEditor = editor.toGefEditorFromUri(BatchSchemaConstants.URI);
    List<SWTBotGefEditPart> parts = gEditor.editParts(EditPartMatcherFactory
        .editPartOfType(ActivityDiagramPart.class));
    assertFalse(parts.isEmpty());

    SWTBotGefEditPart diagramPart = parts.get(0);
    assertEquals(2, diagramPart.children().size());

    gEditor.activateTool(BatchSchemaConstants.ELEM_SPLIT);
    diagramPart.click();

    gEditor.editParts(EditPartMatcherFactory.editPartOfType(ActivityDiagramPart.class));
    diagramPart = parts.get(0);
    assertEquals(2, diagramPart.children().size());

  }

  public void testDropValidPart() throws Exception {
    runningJobsListener = new RunningJobsCounter();
    Job.getJobManager().addJobChangeListener(runningJobsListener);
    cEditor = openFileInEditor("src/batch-config.xml");
    assertNotNull("Could not open a configuration editor.", cEditor);

    UIThreadRunnable.syncExec(new VoidResult() {
      public void run() {
        AbstractConfigGraphicalEditor page = cEditor.getGraphicalEditorForUri(BatchSchemaConstants.URI);
        assertNotNull("Could not load batch-graph page.", page);
        cEditor.setActiveEditor(page);
      }
    });
    waitForRunningJobsToFinish(runningJobsListener, 5000);

    StsBotConfigEditor editor = getBot().activeConfigEditor();
    StsBotGefEditor gEditor = editor.toGefEditorFromUri(BatchSchemaConstants.URI);
    List<SWTBotGefEditPart> parts = gEditor.editParts(EditPartMatcherFactory
        .editPartOfType(ActivityDiagramPart.class));
    assertFalse(parts.isEmpty());

    SWTBotGefEditPart diagramPart = parts.get(0);
    assertEquals(2, diagramPart.children().size());

    gEditor.activateTool(BatchSchemaConstants.ELEM_JOB);
    diagramPart.click();

    gEditor.editParts(EditPartMatcherFactory.editPartOfType(ActivityDiagramPart.class));
    diagramPart = parts.get(0);
    assertEquals(3, diagramPart.children().size());
  }

  private class RunningJobsCounter implements IJobChangeListener {

    int running = 0;

    private int getRunning() {
      return running;
    }

    public void sleeping(IJobChangeEvent event) {
    }

    public void scheduled(IJobChangeEvent event) {
    }

    public void running(IJobChangeEvent event) {
      running++;
    }

    public void done(IJobChangeEvent event) {
      running--;
    }

    public void awake(IJobChangeEvent event) {
    }

    public void aboutToRun(IJobChangeEvent event) {
    }

  }

  private void waitForRunningJobsToFinish(RunningJobsCounter jobsCounter, long waitLimit) {
    long start = System.currentTimeMillis();
    int running = 1;
    do {
      running = jobsCounter.getRunning();
      if (running > 0) {
        try {
          Thread.sleep(500);
        }
        catch (InterruptedException e) {
          return;
        }
      }
    } while (running > 0 || System.currentTimeMillis() - start > waitLimit);
  }

  @Override
  protected void tearDown() throws Exception {
    if (runningJobsListener != null) {
      Job.getJobManager().removeJobChangeListener(runningJobsListener);
    }
    super.tearDown();
  }

}
TOP

Related Classes of org.springframework.ide.eclipse.config.tests.graph.parts.ActivityDiagramPartUiTest$RunningJobsCounter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.