/** * AnalyzerBeans * Copyright (C) 2014 Neopost - Customer Information Management * * This copyrighted material is made available to anyone wishing to use, modify, * copy, or redistribute it subject to the terms and conditions of the GNU * Lesser General Public License, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this distribution; if not, write to: * Free Software Foundation, Inc. * 51 Franklin Street, Fifth Floor * Boston, MA 02110-1301 USA */ package org.eobjects.analyzer.job.runner; import java.util.LinkedList; import java.util.Map; import java.util.Queue; import junit.framework.TestCase; import org.easymock.EasyMock; import org.eobjects.analyzer.job.AnalyzerJob; import org.eobjects.analyzer.job.ComponentJob; import org.eobjects.analyzer.job.concurrent.StatusAwareTaskListener; import org.eobjects.analyzer.result.AnalyzerResult; import org.eobjects.analyzer.result.NumberResult; public class AnalysisResultFutureImplTest extends TestCase { public void testIsSuccessful() throws Exception { Queue<JobAndResult> resultQueue = new LinkedList<JobAndResult>(); StatusAwareTaskListener jobCompletionListener = EasyMock.createMock(StatusAwareTaskListener.class); ErrorAware errorAware = EasyMock.createMock(ErrorAware.class); EasyMock.expect(jobCompletionListener.isDone()).andReturn(true); EasyMock.expect(errorAware.isErrornous()).andReturn(false); EasyMock.expect(errorAware.isErrornous()).andReturn(true); EasyMock.replay(jobCompletionListener, errorAware); AnalysisResultFutureImpl resultFuture = new AnalysisResultFutureImpl(resultQueue, jobCompletionListener, errorAware); assertTrue(resultFuture.isSuccessful()); assertFalse(resultFuture.isSuccessful()); EasyMock.verify(jobCompletionListener, errorAware); } public void testGetResultByJob() throws Exception { AnalyzerJob analyzerJob1 = EasyMock.createMock(AnalyzerJob.class); AnalyzerJob analyzerJob2 = EasyMock.createMock(AnalyzerJob.class); AnalyzerJob analyzerJob3 = EasyMock.createMock(AnalyzerJob.class); Queue<JobAndResult> resultQueue = new LinkedList<JobAndResult>(); resultQueue.add(new JobAndResult(analyzerJob1, new NumberResult(1))); resultQueue.add(new JobAndResult(analyzerJob2, new NumberResult(2))); StatusAwareTaskListener jobCompletionListener = EasyMock.createMock(StatusAwareTaskListener.class); ErrorAware errorAware = EasyMock.createMock(ErrorAware.class); EasyMock.expect(jobCompletionListener.isDone()).andReturn(true); EasyMock.expect(errorAware.isErrornous()).andReturn(false).times(4); EasyMock.replay(jobCompletionListener, errorAware); AnalysisResultFutureImpl resultFuture = new AnalysisResultFutureImpl(resultQueue, jobCompletionListener, errorAware); resultFuture.await(); assertEquals("1", resultFuture.getResult(analyzerJob1).toString()); assertEquals("2", resultFuture.getResult(analyzerJob2).toString()); assertNull(resultFuture.getResult(analyzerJob3)); Map<ComponentJob, AnalyzerResult> resultMap = resultFuture.getResultMap(); EasyMock.verify(jobCompletionListener, errorAware); assertEquals(2, resultMap.size()); assertEquals("1", resultMap.get(analyzerJob1).toString()); assertEquals("2", resultMap.get(analyzerJob2).toString()); } public void testCancel() throws Exception { Queue<JobAndResult> resultQueue = new LinkedList<JobAndResult>(); StatusAwareTaskListener jobCompletionListener = EasyMock.createMock(StatusAwareTaskListener.class); ErrorAware errorAware = EasyMock.createMock(ErrorAware.class); jobCompletionListener.onError(null, new AnalysisJobCancellation()); EasyMock.expect(errorAware.isCancelled()).andReturn(true); EasyMock.replay(jobCompletionListener, errorAware); AnalysisResultFutureImpl resultFuture = new AnalysisResultFutureImpl(resultQueue, jobCompletionListener, errorAware); resultFuture.cancel(); assertTrue(resultFuture.isCancelled()); EasyMock.verify(jobCompletionListener, errorAware); } }