| /******************************************************************************* |
| * Copyright (c) 2010, 2013 Oracle. All rights reserved. |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License 2.0, which accompanies this distribution |
| * and is available at https://www.eclipse.org/legal/epl-2.0/. |
| * |
| * Contributors: |
| * Oracle - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.jpt.common.utility.tests.internal.command; |
| |
| import org.eclipse.jpt.common.utility.command.Command; |
| import org.eclipse.jpt.common.utility.command.StatefulCommandContext; |
| import org.eclipse.jpt.common.utility.internal.command.AsynchronousExtendedCommandContext; |
| import org.eclipse.jpt.common.utility.internal.exception.RuntimeExceptionHandler; |
| import org.eclipse.jpt.common.utility.tests.internal.MultiThreadedTestCase; |
| |
| public class AsynchronousCommandContextTests |
| extends MultiThreadedTestCase |
| { |
| public AsynchronousCommandContextTests(String name) { |
| super(name); |
| } |
| |
| public void testExecution() throws Exception { |
| TestCommand command = new TestCommand(); |
| AsynchronousExtendedCommandContext.SimpleConfig config = new AsynchronousExtendedCommandContext.SimpleConfig(); |
| config.setThreadFactory(this.buildThreadFactory()); |
| config.setExceptionHandler(RuntimeExceptionHandler.instance()); |
| StatefulCommandContext commandContext = new AsynchronousExtendedCommandContext(config); |
| commandContext.start(); |
| commandContext.execute(command); |
| commandContext.execute(command); |
| commandContext.execute(command); |
| Thread.sleep(TWO_TICKS); // wait for the command to execute |
| commandContext.stop(); |
| assertEquals(3, command.count); |
| } |
| |
| static class TestCommand implements Command { |
| int count = 0; |
| public void execute() { |
| this.count++; |
| } |
| } |
| } |