package de.uni_goettingen.sub.commons.ocr.tesseract; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import java.io.File; import java.net.URI; import org.junit.Before; import org.junit.Test; import de.uni_goettingen.sub.commons.ocr.api.OcrFormat; import de.unigoettingen.sub.commons.ocr.util.BeanProvider; import de.unigoettingen.sub.commons.ocr.util.FileAccess; import de.unigoettingen.sub.commons.ocr.util.merge.Merger; import de.unigoettingen.sub.commons.ocr.util.merge.MergerProvider; public class TesseractProcessTest { private TesseractProcess processSut = new TesseractProcess(); private TesseractProcess processSpy = spy(processSut); private Tesseract tesseractMock = mock(Tesseract.class); private BeanProvider fileProviderMock = mock(BeanProvider.class); private FileAccess fileAccessMock = mock(FileAccess.class); private MergerProvider mergerProviderMock = mock(MergerProvider.class); private Merger mergerMock = mock(Merger.class); @Before public void setUp() throws Exception { doReturn(tesseractMock).when(processSpy).createTesseract(any(File.class), any(File.class)); when(fileProviderMock.getFileAccess()).thenReturn(fileAccessMock); when(mergerProviderMock.createMerger(any(OcrFormat.class))).thenReturn(mergerMock); processSpy.setBeanProvider(fileProviderMock); processSpy.setMergerProvider(mergerProviderMock); } @Test public void shouldAddOneImage() throws Exception { assertEquals("Number of images", 0, processSpy.getNumberOfImages()); processSpy.addImage(new URI("file:/test.tif")); assertEquals("Number of images", 1, processSpy.getNumberOfImages()); } @Test(expected=IllegalArgumentException.class) public void shouldRejectRemoteUriForImage() throws Exception { processSpy.addImage(new URI("http://test.com/test.tif")); } @Test public void shouldAddOneOutput() throws Exception { assertEquals("Number of outputs", 0, processSpy.getAllOutputFormats().size()); processSpy.addOutput(OcrFormat.HOCR); assertEquals("Number of outputs", 1, processSpy.getAllOutputFormats().size()); } @Test(expected=IllegalArgumentException.class) public void shouldRejectUnsupportedFormatForOutput() throws Exception { processSpy.addOutput(OcrFormat.PDF); } @Test public void shouldDoNothingWithoutImages() throws Exception { processSpy.addOutput(OcrFormat.HOCR); processSpy.start(); verify(tesseractMock, never()).execute(); } @Test public void shouldDoNothingWithoutOutputs() throws Exception { processSpy.addImage(new URI("file:/test.tif")); processSpy.start(); verify(tesseractMock, never()).execute(); } @Test public void shouldRunTesseract() throws Exception { processSpy.setName("testProcess"); processSpy.addImage(new URI("file:/test.tif")); processSpy.addOutput(OcrFormat.TXT); processSpy.start(); verify(tesseractMock).execute(); } }