/*
* $Id$
*
* Copyright 2007 Glencoe Software, Inc. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package ome.server.utests;
import ome.conditions.ApiUsageException;
import ome.services.procs.Process;
import ome.services.procs.ProcessCallback;
import ome.services.procs.ProcessSkeleton;
import ome.services.procs.Processor;
import org.jmock.Mock;
import org.jmock.MockObjectTestCase;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
/**
* @author Josh Moore, josh at glencoesoftware.com
* @since 3.0-Beta2
*/
@Test(groups = {"jobs","ignore"})
public class ProcessSkeletonTest extends MockObjectTestCase {
private Process process;
private Processor processor;
private ProcessCallback callback;
protected Mock mockCallback, mockProcessor;
@Override
@BeforeMethod
protected void setUp() throws Exception {
super.setUp();
mockProcessor = mock(Processor.class);
mockCallback = mock(ProcessCallback.class);
processor = (Processor) mockProcessor.proxy();
callback = (ProcessCallback) mockCallback.proxy();
process = new ProcessSkeleton(processor);
}
@Test
public void testRegister() throws Exception {
assertTrue(process.isActive());
process.registerCallback(callback);
mockCallback.expects(once()).method("processCancelled");
process.cancel();
assertFalse(process.isActive());
}
@Test
public void testUnRegister() throws Exception {
process.registerCallback(callback);
process.unregisterCallback(callback);
// note: no expectations here.
process.cancel();
assertFalse(process.isActive());
}
@Test
public void testFinished() throws Exception {
process.registerCallback(callback);
mockCallback.expects(once()).method("processFinished");
process.finish();
}
@Test(expectedExceptions = ApiUsageException.class)
public void testState() throws Exception {
process.registerCallback(callback);
mockCallback.expects(once()).method("processFinished");
process.finish();
assertFalse(process.isActive());
process.registerCallback(callback);
}
@Test(expectedExceptions = ApiUsageException.class)
public void testStateNoCallbacks() throws Exception {
assertTrue(process.isActive());
process.finish();
assertFalse(process.isActive());
process.finish();
}
@Test
public void testCallbackThrowsException() throws Exception {
mockCallback.expects(once()).method("processCancelled").will(
throwException(new NullPointerException()));
process.registerCallback(callback);
process.cancel();
process.cancel();
}
}