Major test-case cleanup.

- Removed JMock dependency, tests rewritten to use Mockito for stub/mock
- All test should now be using JUnit annotation-style tests
- All modules should now depend on same JUnit version
- Rewrote a few tests to better utilize JUnit annotations
- Fixed a few broken tests
- Code style changes
This commit is contained in:
Harald Kuhr 2011-12-19 14:28:34 +01:00
parent 52a97cfb2f
commit 0c4fc454b9
26 changed files with 1539 additions and 1526 deletions

View File

@ -15,7 +15,7 @@
*/ */
package com.twelvemonkeys.util; package com.twelvemonkeys.util;
import org.jmock.cglib.MockObjectTestCase; import junit.framework.TestCase;
import java.io.*; import java.io.*;
@ -35,9 +35,9 @@ import java.io.*;
* @author Stephen Colebourne * @author Stephen Colebourne
* @author Anonymous * @author Anonymous
*/ */
public abstract class ObjectAbstractTestCase extends MockObjectTestCase { public abstract class ObjectAbstractTestCase extends TestCase {
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
/** /**
* Implement this method to return the object to test. * Implement this method to return the object to test.
* *

View File

@ -52,12 +52,5 @@
<version>4.7</version> <version>4.7</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>jmock</groupId>
<artifactId>jmock-cglib</artifactId>
<version>1.0.1</version>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -81,6 +81,7 @@ public class WMFImageReader extends ImageReaderBase {
processReadAborted(); processReadAborted();
return image; return image;
} }
processImageProgress(100f);
processImageComplete(); processImageComplete();

View File

@ -43,7 +43,7 @@ import java.util.List;
* @version $Id: SVGImageReaderTestCase.java,v 1.0 Apr 1, 2008 10:39:17 PM haraldk Exp$ * @version $Id: SVGImageReaderTestCase.java,v 1.0 Apr 1, 2008 10:39:17 PM haraldk Exp$
*/ */
public class SVGImageReaderTestCase extends ImageReaderAbstractTestCase<SVGImageReader> { public class SVGImageReaderTestCase extends ImageReaderAbstractTestCase<SVGImageReader> {
private SVGImageReaderSpi mSVGImageReaderSpi = new SVGImageReaderSpi(); private SVGImageReaderSpi provider = new SVGImageReaderSpi();
protected List<TestData> getTestData() { protected List<TestData> getTestData() {
return Arrays.asList( return Arrays.asList(
@ -52,7 +52,7 @@ public class SVGImageReaderTestCase extends ImageReaderAbstractTestCase<SVGImage
} }
protected ImageReaderSpi createProvider() { protected ImageReaderSpi createProvider() {
return mSVGImageReaderSpi; return provider;
} }
@Override @Override

View File

@ -43,7 +43,7 @@ import java.util.List;
* @version $Id: SVGImageReaderTestCase.java,v 1.0 Apr 1, 2008 10:39:17 PM haraldk Exp$ * @version $Id: SVGImageReaderTestCase.java,v 1.0 Apr 1, 2008 10:39:17 PM haraldk Exp$
*/ */
public class WMFImageReaderTestCase extends ImageReaderAbstractTestCase<WMFImageReader> { public class WMFImageReaderTestCase extends ImageReaderAbstractTestCase<WMFImageReader> {
private WMFImageReaderSpi mSVGImageReaderSpi = new WMFImageReaderSpi(); private WMFImageReaderSpi provider = new WMFImageReaderSpi();
protected List<TestData> getTestData() { protected List<TestData> getTestData() {
return Arrays.asList( return Arrays.asList(
@ -53,7 +53,7 @@ public class WMFImageReaderTestCase extends ImageReaderAbstractTestCase<WMFImage
} }
protected ImageReaderSpi createProvider() { protected ImageReaderSpi createProvider() {
return mSVGImageReaderSpi; return provider;
} }
@Override @Override

View File

@ -29,12 +29,11 @@
package com.twelvemonkeys.imageio.util; package com.twelvemonkeys.imageio.util;
import com.twelvemonkeys.imageio.stream.URLImageInputStreamSpi; import com.twelvemonkeys.imageio.stream.URLImageInputStreamSpi;
import org.jmock.Mock;
import org.jmock.cglib.MockObjectTestCase;
import org.jmock.core.Invocation;
import org.jmock.core.Stub;
import org.junit.Ignore; import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import org.mockito.InOrder;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import javax.imageio.*; import javax.imageio.*;
import javax.imageio.event.IIOReadProgressListener; import javax.imageio.event.IIOReadProgressListener;
@ -55,6 +54,9 @@ import java.util.Arrays;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
/** /**
* ImageReaderAbstractTestCase * ImageReaderAbstractTestCase
* *
@ -62,7 +64,7 @@ import java.util.List;
* @author last modified by $Author: haraldk$ * @author last modified by $Author: haraldk$
* @version $Id: ImageReaderAbstractTestCase.java,v 1.0 Apr 1, 2008 10:36:46 PM haraldk Exp$ * @version $Id: ImageReaderAbstractTestCase.java,v 1.0 Apr 1, 2008 10:36:46 PM haraldk Exp$
*/ */
public abstract class ImageReaderAbstractTestCase<T extends ImageReader> extends MockObjectTestCase { public abstract class ImageReaderAbstractTestCase<T extends ImageReader> {
// TODO: Should we really test if he provider is installed? // TODO: Should we really test if he provider is installed?
// - Pro: Tests the META-INF/services config // - Pro: Tests the META-INF/services config
// - Con: Not all providers should be installed at runtime... // - Con: Not all providers should be installed at runtime...
@ -948,8 +950,7 @@ public abstract class ImageReaderAbstractTestCase<T extends ImageReader> extends
@Test @Test
public void testAddIIOReadProgressListener() { public void testAddIIOReadProgressListener() {
ImageReader reader = createReader(); ImageReader reader = createReader();
Mock mockListener = new Mock(IIOReadProgressListener.class); reader.addIIOReadProgressListener(mock(IIOReadProgressListener.class));
reader.addIIOReadProgressListener((IIOReadProgressListener) mockListener.proxy());
} }
@Test @Test
@ -964,13 +965,8 @@ public abstract class ImageReaderAbstractTestCase<T extends ImageReader> extends
TestData data = getTestData().get(0); TestData data = getTestData().get(0);
reader.setInput(data.getInputStream()); reader.setInput(data.getInputStream());
Mock mockListener = new Mock(IIOReadProgressListener.class); IIOReadProgressListener listener = mock(IIOReadProgressListener.class);
String started = "Started"; reader.addIIOReadProgressListener(listener);
mockListener.expects(once()).method("imageStarted").withAnyArguments().id(started);
mockListener.stubs().method("imageProgress").withAnyArguments().after(started);
mockListener.expects(once()).method("imageComplete").withAnyArguments().after(started);
reader.addIIOReadProgressListener((IIOReadProgressListener) mockListener.proxy());
try { try {
reader.read(0); reader.read(0);
@ -980,7 +976,10 @@ public abstract class ImageReaderAbstractTestCase<T extends ImageReader> extends
} }
// At least imageStarted and imageComplete, plus any number of imageProgress // At least imageStarted and imageComplete, plus any number of imageProgress
mockListener.verify(); InOrder ordered = inOrder(listener);
ordered.verify(listener).imageStarted(reader, 0);
ordered.verify(listener, atLeastOnce()).imageProgress(eq(reader), anyInt());
ordered.verify(listener).imageComplete(reader);
} }
@Test @Test
@ -989,28 +988,13 @@ public abstract class ImageReaderAbstractTestCase<T extends ImageReader> extends
TestData data = getTestData().get(0); TestData data = getTestData().get(0);
reader.setInput(data.getInputStream()); reader.setInput(data.getInputStream());
Mock mockListener = new Mock(IIOReadProgressListener.class); IIOReadProgressListener listener = mock(IIOReadProgressListener.class);
String started = "Started"; IIOReadProgressListener listenerToo = mock(IIOReadProgressListener.class);
mockListener.expects(once()).method("imageStarted").withAnyArguments().id(started); IIOReadProgressListener listenerThree = mock(IIOReadProgressListener.class);
mockListener.stubs().method("imageProgress").withAnyArguments().after(started);
mockListener.expects(once()).method("imageComplete").withAnyArguments().after(started);
Mock mockListenerToo = new Mock(IIOReadProgressListener.class); reader.addIIOReadProgressListener(listener);
String startedToo = "Started Two"; reader.addIIOReadProgressListener(listenerToo);
mockListenerToo.expects(once()).method("imageStarted").withAnyArguments().id(startedToo); reader.addIIOReadProgressListener(listenerThree);
mockListenerToo.stubs().method("imageProgress").withAnyArguments().after(startedToo);
mockListenerToo.expects(once()).method("imageComplete").withAnyArguments().after(startedToo);
Mock mockListenerThree = new Mock(IIOReadProgressListener.class);
String startedThree = "Started Three";
mockListenerThree.expects(once()).method("imageStarted").withAnyArguments().id(startedThree);
mockListenerThree.stubs().method("imageProgress").withAnyArguments().after(startedThree);
mockListenerThree.expects(once()).method("imageComplete").withAnyArguments().after(startedThree);
reader.addIIOReadProgressListener((IIOReadProgressListener) mockListener.proxy());
reader.addIIOReadProgressListener((IIOReadProgressListener) mockListenerToo.proxy());
reader.addIIOReadProgressListener((IIOReadProgressListener) mockListenerThree.proxy());
try { try {
reader.read(0); reader.read(0);
@ -1020,9 +1004,19 @@ public abstract class ImageReaderAbstractTestCase<T extends ImageReader> extends
} }
// At least imageStarted and imageComplete, plus any number of imageProgress // At least imageStarted and imageComplete, plus any number of imageProgress
mockListener.verify(); InOrder ordered = inOrder(listener, listenerToo, listenerThree);
mockListenerToo.verify();
mockListenerThree.verify(); ordered.verify(listener).imageStarted(reader, 0);
ordered.verify(listenerToo).imageStarted(reader, 0);
ordered.verify(listenerThree).imageStarted(reader, 0);
ordered.verify(listener, atLeastOnce()).imageProgress(eq(reader), anyInt());
ordered.verify(listenerToo, atLeastOnce()).imageProgress(eq(reader), anyInt());
ordered.verify(listenerThree, atLeastOnce()).imageProgress(eq(reader), anyInt());
ordered.verify(listener).imageComplete(reader);
ordered.verify(listenerToo).imageComplete(reader);
ordered.verify(listenerThree).imageComplete(reader);
} }
@Test @Test
@ -1034,8 +1028,7 @@ public abstract class ImageReaderAbstractTestCase<T extends ImageReader> extends
@Test @Test
public void testRemoveIIOReadProgressListenerNone() { public void testRemoveIIOReadProgressListenerNone() {
ImageReader reader = createReader(); ImageReader reader = createReader();
Mock mockListener = new Mock(IIOReadProgressListener.class); reader.removeIIOReadProgressListener(mock(IIOReadProgressListener.class));
reader.removeIIOReadProgressListener((IIOReadProgressListener) mockListener.proxy());
} }
@Test @Test
@ -1043,8 +1036,8 @@ public abstract class ImageReaderAbstractTestCase<T extends ImageReader> extends
ImageReader reader = createReader(); ImageReader reader = createReader();
TestData data = getTestData().get(0); TestData data = getTestData().get(0);
reader.setInput(data.getInputStream()); reader.setInput(data.getInputStream());
Mock mockListener = new Mock(IIOReadProgressListener.class);
IIOReadProgressListener listener = (IIOReadProgressListener) mockListener.proxy(); IIOReadProgressListener listener = mock(IIOReadProgressListener.class);
reader.addIIOReadProgressListener(listener); reader.addIIOReadProgressListener(listener);
reader.removeIIOReadProgressListener(listener); reader.removeIIOReadProgressListener(listener);
@ -1056,7 +1049,7 @@ public abstract class ImageReaderAbstractTestCase<T extends ImageReader> extends
} }
// Should not have called any methods... // Should not have called any methods...
mockListener.verify(); verifyZeroInteractions(listener);
} }
@Test @Test
@ -1065,15 +1058,11 @@ public abstract class ImageReaderAbstractTestCase<T extends ImageReader> extends
TestData data = getTestData().get(0); TestData data = getTestData().get(0);
reader.setInput(data.getInputStream()); reader.setInput(data.getInputStream());
Mock mockListener = new Mock(IIOReadProgressListener.class, "Listener1"); IIOReadProgressListener listener = mock(IIOReadProgressListener.class, "Listener1");
IIOReadProgressListener listener = (IIOReadProgressListener) mockListener.proxy();
reader.addIIOReadProgressListener(listener); reader.addIIOReadProgressListener(listener);
Mock mockListenerToo = new Mock(IIOReadProgressListener.class, "Listener2");
mockListenerToo.expects(once()).method("imageStarted").with(eq(reader), eq(0)); IIOReadProgressListener listenerToo = mock(IIOReadProgressListener.class, "Listener2");
mockListenerToo.stubs().method("imageProgress").withAnyArguments();
mockListenerToo.expects(once()).method("imageComplete").with(eq(reader));
IIOReadProgressListener listenerToo = (IIOReadProgressListener) mockListenerToo.proxy();
reader.addIIOReadProgressListener(listenerToo); reader.addIIOReadProgressListener(listenerToo);
reader.removeIIOReadProgressListener(listener); reader.removeIIOReadProgressListener(listener);
@ -1085,9 +1074,13 @@ public abstract class ImageReaderAbstractTestCase<T extends ImageReader> extends
fail("Could not read image"); fail("Could not read image");
} }
// Should not have called any methods... // Should not have called any methods on listener1...
mockListener.verify(); verifyZeroInteractions(listener);
mockListenerToo.verify();
InOrder ordered = inOrder(listenerToo);
ordered.verify(listenerToo).imageStarted(reader, 0);
ordered.verify(listenerToo, atLeastOnce()).imageProgress(eq(reader), anyInt());
ordered.verify(listenerToo).imageComplete(reader);
} }
@Test @Test
@ -1096,8 +1089,8 @@ public abstract class ImageReaderAbstractTestCase<T extends ImageReader> extends
TestData data = getTestData().get(0); TestData data = getTestData().get(0);
reader.setInput(data.getInputStream()); reader.setInput(data.getInputStream());
Mock mockListener = new Mock(IIOReadProgressListener.class); IIOReadProgressListener listener = mock(IIOReadProgressListener.class);
reader.addIIOReadProgressListener((IIOReadProgressListener) mockListener.proxy()); reader.addIIOReadProgressListener(listener);
reader.removeAllIIOReadProgressListeners(); reader.removeAllIIOReadProgressListeners();
@ -1109,7 +1102,7 @@ public abstract class ImageReaderAbstractTestCase<T extends ImageReader> extends
} }
// Should not have called any methods... // Should not have called any methods...
mockListener.verify(); verifyZeroInteractions(listener);
} }
@Test @Test
@ -1118,11 +1111,11 @@ public abstract class ImageReaderAbstractTestCase<T extends ImageReader> extends
TestData data = getTestData().get(0); TestData data = getTestData().get(0);
reader.setInput(data.getInputStream()); reader.setInput(data.getInputStream());
Mock mockListener = new Mock(IIOReadProgressListener.class); IIOReadProgressListener listener = mock(IIOReadProgressListener.class);
reader.addIIOReadProgressListener((IIOReadProgressListener) mockListener.proxy()); reader.addIIOReadProgressListener(listener);
Mock mockListenerToo = new Mock(IIOReadProgressListener.class); IIOReadProgressListener listenerToo = mock(IIOReadProgressListener.class);
reader.addIIOReadProgressListener((IIOReadProgressListener) mockListenerToo.proxy()); reader.addIIOReadProgressListener(listenerToo);
reader.removeAllIIOReadProgressListeners(); reader.removeAllIIOReadProgressListeners();
@ -1134,8 +1127,8 @@ public abstract class ImageReaderAbstractTestCase<T extends ImageReader> extends
} }
// Should not have called any methods... // Should not have called any methods...
mockListener.verify(); verifyZeroInteractions(listener);
mockListenerToo.verify(); verifyZeroInteractions(listenerToo);
} }
@Test @Test
@ -1144,41 +1137,24 @@ public abstract class ImageReaderAbstractTestCase<T extends ImageReader> extends
TestData data = getTestData().get(0); TestData data = getTestData().get(0);
reader.setInput(data.getInputStream()); reader.setInput(data.getInputStream());
Mock mockListener = new Mock(IIOReadProgressListener.class, "Progress1"); IIOReadProgressListener listener = mock(IIOReadProgressListener.class, "Progress1");
mockListener.stubs().method("imageStarted").withAnyArguments();
mockListener.stubs().method("imageProgress").withAnyArguments();
mockListener.expects(once()).method("readAborted").with(eq(reader));
mockListener.stubs().method("imageComplete").withAnyArguments();
IIOReadProgressListener listener = (IIOReadProgressListener) mockListener.proxy();
reader.addIIOReadProgressListener(listener); reader.addIIOReadProgressListener(listener);
Mock mockListenerToo = new Mock(IIOReadProgressListener.class, "Progress2"); IIOReadProgressListener listenerToo = mock(IIOReadProgressListener.class, "Progress2");
mockListenerToo.stubs().method("imageStarted").withAnyArguments();
mockListenerToo.stubs().method("imageProgress").withAnyArguments();
mockListenerToo.expects(once()).method("readAborted").with(eq(reader));
mockListenerToo.stubs().method("imageComplete").withAnyArguments();
IIOReadProgressListener listenerToo = (IIOReadProgressListener) mockListenerToo.proxy();
reader.addIIOReadProgressListener(listenerToo); reader.addIIOReadProgressListener(listenerToo);
// Create a listener that just makes the reader abort immediately... // Create a listener that just makes the reader abort immediately...
Mock abortingListener = new Mock(IIOReadProgressListener.class, "Aborter"); IIOReadProgressListener abortingListener = mock(IIOReadProgressListener.class, "Aborter");
abortingListener.stubs().method("readAborted").withAnyArguments(); Answer<Void> abort = new Answer<Void>() {
abortingListener.stubs().method("imageComplete").withAnyArguments(); public Void answer(InvocationOnMock invocation) throws Throwable {
Stub abort = new Stub() {
public Object invoke(Invocation pInvocation) throws Throwable {
reader.abort(); reader.abort();
return null; return null;
} }
public StringBuffer describeTo(StringBuffer pStringBuffer) {
pStringBuffer.append("aborting");
return pStringBuffer;
}
}; };
abortingListener.stubs().method("imageProgress").will(abort); doAnswer(abort).when(abortingListener).imageStarted(any(ImageReader.class), anyInt());
abortingListener.stubs().method("imageStarted").will(abort); doAnswer(abort).when(abortingListener).imageProgress(any(ImageReader.class), anyInt());
reader.addIIOReadProgressListener((IIOReadProgressListener) abortingListener.proxy()); reader.addIIOReadProgressListener(abortingListener);
try { try {
reader.read(0); reader.read(0);
@ -1187,8 +1163,8 @@ public abstract class ImageReaderAbstractTestCase<T extends ImageReader> extends
failBecause("Image could not be read", e); failBecause("Image could not be read", e);
} }
mockListener.verify(); verify(listener).readAborted(reader);
mockListenerToo.verify(); verify(listenerToo).readAborted(reader);
} }
@Test @Test

View File

@ -28,8 +28,8 @@
package com.twelvemonkeys.imageio.util; package com.twelvemonkeys.imageio.util;
import org.jmock.Mock; import org.junit.Test;
import org.jmock.cglib.MockObjectTestCase; import org.mockito.InOrder;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam; import javax.imageio.ImageWriteParam;
@ -39,6 +39,10 @@ import java.awt.image.RenderedImage;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import static org.junit.Assert.*;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.*;
/** /**
* ImageReaderAbstractTestCase class description. * ImageReaderAbstractTestCase class description.
* *
@ -46,12 +50,13 @@ import java.io.IOException;
* @author last modified by $Author: haku $ * @author last modified by $Author: haku $
* @version $Id: ImageReaderAbstractTestCase.java,v 1.0 18.nov.2004 17:38:33 haku Exp $ * @version $Id: ImageReaderAbstractTestCase.java,v 1.0 18.nov.2004 17:38:33 haku Exp $
*/ */
public abstract class ImageWriterAbstractTestCase extends MockObjectTestCase { public abstract class ImageWriterAbstractTestCase {
protected abstract ImageWriter createImageWriter(); protected abstract ImageWriter createImageWriter();
protected abstract RenderedImage getTestData(); protected abstract RenderedImage getTestData();
@Test
public void testSetOutput() throws IOException { public void testSetOutput() throws IOException {
// Should just pass with no exceptions // Should just pass with no exceptions
ImageWriter writer = createImageWriter(); ImageWriter writer = createImageWriter();
@ -59,6 +64,7 @@ public abstract class ImageWriterAbstractTestCase extends MockObjectTestCase {
writer.setOutput(ImageIO.createImageOutputStream(new ByteArrayOutputStream())); writer.setOutput(ImageIO.createImageOutputStream(new ByteArrayOutputStream()));
} }
@Test
public void testSetOutputNull() { public void testSetOutputNull() {
// Should just pass with no exceptions // Should just pass with no exceptions
ImageWriter writer = createImageWriter(); ImageWriter writer = createImageWriter();
@ -66,25 +72,30 @@ public abstract class ImageWriterAbstractTestCase extends MockObjectTestCase {
writer.setOutput(null); writer.setOutput(null);
} }
@Test
public void testWrite() throws IOException { public void testWrite() throws IOException {
ImageWriter writer = createImageWriter(); ImageWriter writer = createImageWriter();
ByteArrayOutputStream buffer = new ByteArrayOutputStream(); ByteArrayOutputStream buffer = new ByteArrayOutputStream();
writer.setOutput(ImageIO.createImageOutputStream(buffer)); writer.setOutput(ImageIO.createImageOutputStream(buffer));
try { try {
writer.write(getTestData()); writer.write(getTestData());
} }
catch (IOException e) { catch (IOException e) {
fail(e.getMessage()); fail(e.getMessage());
} }
assertTrue("No image data written", buffer.size() > 0); assertTrue("No image data written", buffer.size() > 0);
} }
@Test
public void testWrite2() { public void testWrite2() {
// Note: There's a difference between new ImageOutputStreamImpl and // Note: There's a difference between new ImageOutputStreamImpl and
// ImageIO.createImageOutputStream... Make sure writers handle both // ImageIO.createImageOutputStream... Make sure writers handle both
// cases // cases
ImageWriter writer = createImageWriter(); ImageWriter writer = createImageWriter();
ByteArrayOutputStream buffer = new ByteArrayOutputStream(); ByteArrayOutputStream buffer = new ByteArrayOutputStream();
try { try {
writer.setOutput(ImageIO.createImageOutputStream(buffer)); writer.setOutput(ImageIO.createImageOutputStream(buffer));
writer.write(getTestData()); writer.write(getTestData());
@ -96,10 +107,12 @@ public abstract class ImageWriterAbstractTestCase extends MockObjectTestCase {
assertTrue("No image data written", buffer.size() > 0); assertTrue("No image data written", buffer.size() > 0);
} }
@Test
public void testWriteNull() throws IOException { public void testWriteNull() throws IOException {
ImageWriter writer = createImageWriter(); ImageWriter writer = createImageWriter();
ByteArrayOutputStream buffer = new ByteArrayOutputStream(); ByteArrayOutputStream buffer = new ByteArrayOutputStream();
writer.setOutput(ImageIO.createImageOutputStream(buffer)); writer.setOutput(ImageIO.createImageOutputStream(buffer));
try { try {
writer.write((RenderedImage) null); writer.write((RenderedImage) null);
} }
@ -108,11 +121,14 @@ public abstract class ImageWriterAbstractTestCase extends MockObjectTestCase {
catch (IOException e) { catch (IOException e) {
fail(e.getMessage()); fail(e.getMessage());
} }
assertTrue("Image data written", buffer.size() == 0); assertTrue("Image data written", buffer.size() == 0);
} }
@Test
public void testWriteNoOutput() { public void testWriteNoOutput() {
ImageWriter writer = createImageWriter(); ImageWriter writer = createImageWriter();
try { try {
writer.write(getTestData()); writer.write(getTestData());
} }
@ -123,6 +139,7 @@ public abstract class ImageWriterAbstractTestCase extends MockObjectTestCase {
} }
} }
@Test
public void testGetDefaultWriteParam() { public void testGetDefaultWriteParam() {
ImageWriter writer = createImageWriter(); ImageWriter writer = createImageWriter();
ImageWriteParam param = writer.getDefaultWriteParam(); ImageWriteParam param = writer.getDefaultWriteParam();
@ -132,29 +149,26 @@ public abstract class ImageWriterAbstractTestCase extends MockObjectTestCase {
// TODO: Test writing with params // TODO: Test writing with params
// TODO: Source region and subsampling at least // TODO: Source region and subsampling at least
@Test
public void testAddIIOWriteProgressListener() { public void testAddIIOWriteProgressListener() {
ImageWriter writer = createImageWriter(); ImageWriter writer = createImageWriter();
Mock mockListener = new Mock(IIOWriteProgressListener.class); writer.addIIOWriteProgressListener(mock(IIOWriteProgressListener.class));
writer.addIIOWriteProgressListener((IIOWriteProgressListener) mockListener.proxy());
} }
@Test
public void testAddIIOWriteProgressListenerNull() { public void testAddIIOWriteProgressListenerNull() {
ImageWriter writer = createImageWriter(); ImageWriter writer = createImageWriter();
writer.addIIOWriteProgressListener(null); writer.addIIOWriteProgressListener(null);
} }
@Test
public void testAddIIOWriteProgressListenerCallbacks() throws IOException { public void testAddIIOWriteProgressListenerCallbacks() throws IOException {
ImageWriter writer = createImageWriter(); ImageWriter writer = createImageWriter();
ByteArrayOutputStream buffer = new ByteArrayOutputStream(); ByteArrayOutputStream buffer = new ByteArrayOutputStream();
writer.setOutput(ImageIO.createImageOutputStream(buffer)); writer.setOutput(ImageIO.createImageOutputStream(buffer));
Mock mockListener = new Mock(IIOWriteProgressListener.class); IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class);
String started = "Started"; writer.addIIOWriteProgressListener(listener);
mockListener.expects(once()).method("imageStarted").withAnyArguments().id(started);
mockListener.stubs().method("imageProgress").withAnyArguments().after(started);
mockListener.expects(once()).method("imageComplete").withAnyArguments().after(started);
writer.addIIOWriteProgressListener((IIOWriteProgressListener) mockListener.proxy());
try { try {
writer.write(getTestData()); writer.write(getTestData());
@ -164,36 +178,25 @@ public abstract class ImageWriterAbstractTestCase extends MockObjectTestCase {
} }
// At least imageStarted and imageComplete, plus any number of imageProgress // At least imageStarted and imageComplete, plus any number of imageProgress
mockListener.verify(); InOrder ordered = inOrder(listener);
ordered.verify(listener).imageStarted(writer, 0);
ordered.verify(listener, atLeastOnce()).imageProgress(eq(writer), anyInt());
ordered.verify(listener).imageComplete(writer);
} }
@Test
public void testMultipleAddIIOWriteProgressListenerCallbacks() throws IOException { public void testMultipleAddIIOWriteProgressListenerCallbacks() throws IOException {
ImageWriter writer = createImageWriter(); ImageWriter writer = createImageWriter();
ByteArrayOutputStream buffer = new ByteArrayOutputStream(); ByteArrayOutputStream buffer = new ByteArrayOutputStream();
writer.setOutput(ImageIO.createImageOutputStream(buffer)); writer.setOutput(ImageIO.createImageOutputStream(buffer));
Mock mockListener = new Mock(IIOWriteProgressListener.class); IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class);
String started = "Started"; IIOWriteProgressListener listenerToo = mock(IIOWriteProgressListener.class);
mockListener.expects(once()).method("imageStarted").withAnyArguments().id(started); IIOWriteProgressListener listenerThree = mock(IIOWriteProgressListener.class);
mockListener.stubs().method("imageProgress").withAnyArguments().after(started);
mockListener.expects(once()).method("imageComplete").withAnyArguments().after(started);
Mock mockListenerToo = new Mock(IIOWriteProgressListener.class); writer.addIIOWriteProgressListener(listener);
String startedToo = "Started Two"; writer.addIIOWriteProgressListener(listenerToo);
mockListenerToo.expects(once()).method("imageStarted").withAnyArguments().id(startedToo); writer.addIIOWriteProgressListener(listenerThree);
mockListenerToo.stubs().method("imageProgress").withAnyArguments().after(startedToo);
mockListenerToo.expects(once()).method("imageComplete").withAnyArguments().after(startedToo);
Mock mockListenerThree = new Mock(IIOWriteProgressListener.class);
String startedThree = "Started Three";
mockListenerThree.expects(once()).method("imageStarted").withAnyArguments().id(startedThree);
mockListenerThree.stubs().method("imageProgress").withAnyArguments().after(startedThree);
mockListenerThree.expects(once()).method("imageComplete").withAnyArguments().after(startedThree);
writer.addIIOWriteProgressListener((IIOWriteProgressListener) mockListener.proxy());
writer.addIIOWriteProgressListener((IIOWriteProgressListener) mockListenerToo.proxy());
writer.addIIOWriteProgressListener((IIOWriteProgressListener) mockListenerThree.proxy());
try { try {
writer.write(getTestData()); writer.write(getTestData());
@ -203,30 +206,40 @@ public abstract class ImageWriterAbstractTestCase extends MockObjectTestCase {
} }
// At least imageStarted and imageComplete, plus any number of imageProgress // At least imageStarted and imageComplete, plus any number of imageProgress
mockListener.verify(); InOrder ordered = inOrder(listener, listenerToo, listenerThree);
mockListenerToo.verify();
mockListenerThree.verify(); ordered.verify(listener).imageStarted(writer, 0);
ordered.verify(listenerToo).imageStarted(writer, 0);
ordered.verify(listenerThree).imageStarted(writer, 0);
ordered.verify(listener, atLeastOnce()).imageProgress(eq(writer), anyInt());
ordered.verify(listenerToo, atLeastOnce()).imageProgress(eq(writer), anyInt());
ordered.verify(listenerThree, atLeastOnce()).imageProgress(eq(writer), anyInt());
ordered.verify(listener).imageComplete(writer);
ordered.verify(listenerToo).imageComplete(writer);
ordered.verify(listenerThree).imageComplete(writer);
} }
@Test
public void testRemoveIIOWriteProgressListenerNull() { public void testRemoveIIOWriteProgressListenerNull() {
ImageWriter writer = createImageWriter(); ImageWriter writer = createImageWriter();
writer.removeIIOWriteProgressListener(null); writer.removeIIOWriteProgressListener(null);
} }
@Test
public void testRemoveIIOWriteProgressListenerNone() { public void testRemoveIIOWriteProgressListenerNone() {
ImageWriter writer = createImageWriter(); ImageWriter writer = createImageWriter();
Mock mockListener = new Mock(IIOWriteProgressListener.class); writer.removeIIOWriteProgressListener(mock(IIOWriteProgressListener.class));
writer.removeIIOWriteProgressListener((IIOWriteProgressListener) mockListener.proxy());
} }
@Test
public void testRemoveIIOWriteProgressListener() throws IOException { public void testRemoveIIOWriteProgressListener() throws IOException {
ImageWriter writer = createImageWriter(); ImageWriter writer = createImageWriter();
ByteArrayOutputStream buffer = new ByteArrayOutputStream(); ByteArrayOutputStream buffer = new ByteArrayOutputStream();
writer.setOutput(ImageIO.createImageOutputStream(buffer)); writer.setOutput(ImageIO.createImageOutputStream(buffer));
Mock mockListener = new Mock(IIOWriteProgressListener.class); IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class);
IIOWriteProgressListener listener = (IIOWriteProgressListener) mockListener.proxy();
writer.addIIOWriteProgressListener(listener); writer.addIIOWriteProgressListener(listener);
writer.removeIIOWriteProgressListener(listener); writer.removeIIOWriteProgressListener(listener);
@ -238,25 +251,22 @@ public abstract class ImageWriterAbstractTestCase extends MockObjectTestCase {
} }
// Should not have called any methods... // Should not have called any methods...
mockListener.verify(); verifyZeroInteractions(listener);
} }
@Test
public void testRemoveIIOWriteProgressListenerMultiple() throws IOException { public void testRemoveIIOWriteProgressListenerMultiple() throws IOException {
ImageWriter writer = createImageWriter(); ImageWriter writer = createImageWriter();
ByteArrayOutputStream buffer = new ByteArrayOutputStream(); ByteArrayOutputStream buffer = new ByteArrayOutputStream();
writer.setOutput(ImageIO.createImageOutputStream(buffer)); writer.setOutput(ImageIO.createImageOutputStream(buffer));
IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class);
writer.addIIOWriteProgressListener(listener);
Mock mockListener = new Mock(IIOWriteProgressListener.class); IIOWriteProgressListener listenerToo = mock(IIOWriteProgressListener.class);
writer.addIIOWriteProgressListener((IIOWriteProgressListener) mockListener.proxy()); writer.addIIOWriteProgressListener(listenerToo);
Mock mockListenerToo = new Mock(IIOWriteProgressListener.class); writer.removeIIOWriteProgressListener(listener);
mockListenerToo.stubs().method("imageStarted").withAnyArguments();
mockListenerToo.stubs().method("imageProgress").withAnyArguments();
mockListenerToo.stubs().method("imageComplete").withAnyArguments();
writer.addIIOWriteProgressListener((IIOWriteProgressListener) mockListenerToo.proxy());
writer.removeIIOWriteProgressListener((IIOWriteProgressListener) mockListener.proxy());
try { try {
writer.write(getTestData()); writer.write(getTestData());
@ -266,19 +276,25 @@ public abstract class ImageWriterAbstractTestCase extends MockObjectTestCase {
} }
// Should not have called any methods... // Should not have called any methods...
mockListener.verify(); verifyZeroInteractions(listener);
mockListenerToo.verify();
// At least imageStarted and imageComplete, plus any number of imageProgress
InOrder ordered = inOrder(listenerToo);
ordered.verify(listenerToo).imageStarted(writer, 0);
ordered.verify(listenerToo, atLeastOnce()).imageProgress(eq(writer), anyInt());
ordered.verify(listenerToo).imageComplete(writer);
} }
@Test
public void testRemoveAllIIOWriteProgressListeners() throws IOException { public void testRemoveAllIIOWriteProgressListeners() throws IOException {
ImageWriter writer = createImageWriter(); ImageWriter writer = createImageWriter();
ByteArrayOutputStream buffer = new ByteArrayOutputStream(); ByteArrayOutputStream buffer = new ByteArrayOutputStream();
writer.setOutput(ImageIO.createImageOutputStream(buffer)); writer.setOutput(ImageIO.createImageOutputStream(buffer));
Mock mockListener = new Mock(IIOWriteProgressListener.class); IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class);
writer.addIIOWriteProgressListener((IIOWriteProgressListener) mockListener.proxy()); writer.addIIOWriteProgressListener(listener);
writer.removeAllIIOWriteProgressListeners(); writer.removeAllIIOWriteProgressListeners();
@ -290,20 +306,21 @@ public abstract class ImageWriterAbstractTestCase extends MockObjectTestCase {
} }
// Should not have called any methods... // Should not have called any methods...
mockListener.verify(); verifyZeroInteractions(listener);
} }
@Test
public void testRemoveAllIIOWriteProgressListenersMultiple() throws IOException { public void testRemoveAllIIOWriteProgressListenersMultiple() throws IOException {
ImageWriter writer = createImageWriter(); ImageWriter writer = createImageWriter();
ByteArrayOutputStream buffer = new ByteArrayOutputStream(); ByteArrayOutputStream buffer = new ByteArrayOutputStream();
writer.setOutput(ImageIO.createImageOutputStream(buffer)); writer.setOutput(ImageIO.createImageOutputStream(buffer));
Mock mockListener = new Mock(IIOWriteProgressListener.class); IIOWriteProgressListener listener = mock(IIOWriteProgressListener.class);
writer.addIIOWriteProgressListener((IIOWriteProgressListener) mockListener.proxy()); writer.addIIOWriteProgressListener(listener);
Mock mockListenerToo = new Mock(IIOWriteProgressListener.class); IIOWriteProgressListener listenerToo = mock(IIOWriteProgressListener.class);
writer.addIIOWriteProgressListener((IIOWriteProgressListener) mockListenerToo.proxy()); writer.addIIOWriteProgressListener(listenerToo);
writer.removeAllIIOWriteProgressListeners(); writer.removeAllIIOWriteProgressListeners();
@ -315,8 +332,7 @@ public abstract class ImageWriterAbstractTestCase extends MockObjectTestCase {
} }
// Should not have called any methods... // Should not have called any methods...
mockListener.verify(); verifyZeroInteractions(listener);
mockListenerToo.verify(); verifyZeroInteractions(listenerToo);
} }
} }

View File

@ -1,6 +1,7 @@
package com.twelvemonkeys.imageio.plugins.ico; package com.twelvemonkeys.imageio.plugins.ico;
import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase;
import org.junit.Test;
import javax.imageio.ImageReadParam; import javax.imageio.ImageReadParam;
import javax.imageio.spi.ImageReaderSpi; import javax.imageio.spi.ImageReaderSpi;
@ -10,6 +11,8 @@ import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import static org.junit.Assert.*;
/** /**
* CURImageReaderTestCase * CURImageReaderTestCase
* *
@ -74,19 +77,23 @@ public class CURImageReaderTestCase extends ImageReaderAbstractTestCase<CURImage
assertEquals(pExpected, reader.getHotSpot(0)); assertEquals(pExpected, reader.getHotSpot(0));
} }
@Test
public void testHandHotspot() throws IOException { public void testHandHotspot() throws IOException {
assertHotSpot(getTestData().get(0), null, new Point(15, 15)); assertHotSpot(getTestData().get(0), null, new Point(15, 15));
} }
@Test
public void testZoomHotspot() throws IOException { public void testZoomHotspot() throws IOException {
assertHotSpot(getTestData().get(1), null, new Point(13, 11)); assertHotSpot(getTestData().get(1), null, new Point(13, 11));
} }
@Test
public void testHandHotspotWithParam() throws IOException { public void testHandHotspotWithParam() throws IOException {
ImageReadParam param = new ImageReadParam(); ImageReadParam param = new ImageReadParam();
assertHotSpot(getTestData().get(0), param, new Point(15, 15)); assertHotSpot(getTestData().get(0), param, new Point(15, 15));
} }
@Test
public void testHandHotspotExplicitDestination() throws IOException { public void testHandHotspotExplicitDestination() throws IOException {
CURImageReader reader = createReader(); CURImageReader reader = createReader();
reader.setInput(getTestData().get(0).getInputStream()); reader.setInput(getTestData().get(0).getInputStream());

View File

@ -34,7 +34,7 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
public class BMPImageReaderTestCase extends JMagickImageReaderAbstractTestCase<BMPImageReader> { public class BMPImageReaderTestCase extends JMagickImageReaderAbstractTestCase<BMPImageReader> {
private BMPImageReaderSpi mProvider = new BMPImageReaderSpi(); private BMPImageReaderSpi provider = new BMPImageReaderSpi();
protected List<TestData> getTestData() { protected List<TestData> getTestData() {
return Arrays.asList( return Arrays.asList(
@ -63,7 +63,7 @@ public class BMPImageReaderTestCase extends JMagickImageReaderAbstractTestCase<B
} }
protected BMPImageReader createReader() { protected BMPImageReader createReader() {
return new BMPImageReader(mProvider); return new BMPImageReader(provider);
} }
protected ImageReaderSpi createProvider() { protected ImageReaderSpi createProvider() {

View File

@ -29,6 +29,10 @@
package com.twelvemonkeys.imageio.plugins.jmagick; package com.twelvemonkeys.imageio.plugins.jmagick;
import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase;
import org.junit.Rule;
import org.junit.rules.MethodRule;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.Statement;
import javax.imageio.ImageReader; import javax.imageio.ImageReader;
@ -40,14 +44,20 @@ import javax.imageio.ImageReader;
* @version $Id: JMagickImageReaderAbstractTestCase.java,v 1.0 Apr 1, 2008 2:59:05 PM haraldk Exp$ * @version $Id: JMagickImageReaderAbstractTestCase.java,v 1.0 Apr 1, 2008 2:59:05 PM haraldk Exp$
*/ */
public abstract class JMagickImageReaderAbstractTestCase<T extends ImageReader> extends ImageReaderAbstractTestCase<T> { public abstract class JMagickImageReaderAbstractTestCase<T extends ImageReader> extends ImageReaderAbstractTestCase<T> {
@Rule
@Override public MethodRule rule = new MethodRule() {
protected void runTest() throws Throwable { public Statement apply(final Statement base, final FrameworkMethod method, final Object target) {
if (JMagickImageReaderSpiSupport.AVAILABLE) { if (JMagickImageReaderSpiSupport.AVAILABLE) {
super.runTest(); return base;
}
return new Statement() {
@Override
public void evaluate() throws Throwable {
// TODO: Make this increase "skipped" count, rather than run/success
System.err.println("WARNING: JMagick not installed. Skipping test " + method.getName());
}
};
} }
else { };
System.err.println("WARNING: JMagick not installed. Skipping test " + getName());
}
}
} }

View File

@ -1,5 +1,5 @@
- These readers/writers could probably benefit alot from using JNI with nio - These readers/writers could probably benefit alot from using JNI with nio
bytechannel buffers... RFE to JMagick guys? bytechannel buffers... RFE to JMagick guys?
- Create stream providers and allow creatig a ImageInputStream from a - Create stream providers and allow creating an ImageInputStream from a
MagickImage? Does that even make sense? Or maybe create File based streams MagickImage? Does that even make sense? Or maybe create File based streams
that exposes the file name for JMagick to write directly. that exposes the file name for JMagick to write directly.

View File

@ -1,6 +1,7 @@
package com.twelvemonkeys.imageio.plugins.pict; package com.twelvemonkeys.imageio.plugins.pict;
import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase;
import org.junit.Test;
import javax.imageio.spi.ImageReaderSpi; import javax.imageio.spi.ImageReaderSpi;
import java.awt.*; import java.awt.*;
@ -8,6 +9,8 @@ import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import static org.junit.Assert.*;
/** /**
* ICOImageReaderTestCase * ICOImageReaderTestCase
* *
@ -59,11 +62,12 @@ public class PICTImageReaderTestCase extends ImageReaderAbstractTestCase<PICTIma
return Arrays.asList("image/pict", "image/x-pict"); return Arrays.asList("image/pict", "image/x-pict");
} }
@Test
public void testProviderNotMatchJPEG() throws IOException { public void testProviderNotMatchJPEG() throws IOException {
// This JPEG contains PICT magic bytes at locations a PICT would normally have them. // This JPEG contains PICT magic bytes at locations a PICT would normally have them.
// We should not claim to be able read it. // We should not claim to be able read it.
assertFalse(sProvider.canDecodeInput(new TestData( assertFalse(sProvider.canDecodeInput(
getClassLoaderResource("/jpeg/R-7439-1151526181.jpeg"), new TestData(getClassLoaderResource("/jpeg/R-7439-1151526181.jpeg"),
new Dimension(386, 396) new Dimension(386, 396)
))); )));
} }

View File

@ -16,6 +16,8 @@ import java.util.List;
import java.util.ArrayList; import java.util.ArrayList;
import java.io.IOException; import java.io.IOException;
import static org.junit.Assert.*;
/** /**
* PSDImageReaderTestCase * PSDImageReaderTestCase
* *

View File

@ -4,13 +4,14 @@ import com.sun.imageio.plugins.jpeg.JPEGImageReader;
import com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi; import com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi;
import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase;
import com.twelvemonkeys.lang.SystemUtil; import com.twelvemonkeys.lang.SystemUtil;
import org.junit.Test;
import javax.imageio.IIOException; import javax.imageio.IIOException;
import javax.imageio.spi.ImageReaderSpi; import javax.imageio.spi.ImageReaderSpi;
import java.util.Arrays;
import java.util.List;
import java.awt.*; import java.awt.*;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays;
import java.util.List;
/** /**
* JPEGImageReaderTestCase * JPEGImageReaderTestCase
@ -67,6 +68,7 @@ public class JPEGImageReaderTestCase extends ImageReaderAbstractTestCase<JPEGIma
return Arrays.asList(provider.getMIMETypes()); return Arrays.asList(provider.getMIMETypes());
} }
@Test
@Override @Override
public void testSetDestination() throws IOException { public void testSetDestination() throws IOException {
// Known bug in Sun JPEGImageReader before Java 6 // Known bug in Sun JPEGImageReader before Java 6
@ -78,6 +80,7 @@ public class JPEGImageReaderTestCase extends ImageReaderAbstractTestCase<JPEGIma
} }
} }
@Test
@Override @Override
public void testSetDestinationType() throws IOException { public void testSetDestinationType() throws IOException {
// Known bug in Sun JPEGImageReader before Java 6 // Known bug in Sun JPEGImageReader before Java 6
@ -89,6 +92,7 @@ public class JPEGImageReaderTestCase extends ImageReaderAbstractTestCase<JPEGIma
} }
} }
@Test
@Override @Override
public void testReadAsRenderedImageIndexOutOfBounds() throws IIOException { public void testReadAsRenderedImageIndexOutOfBounds() throws IIOException {
try { try {

View File

@ -3,6 +3,7 @@ package com.twelvemonkeys.imageio.reference;
import com.sun.imageio.plugins.png.PNGImageReader; import com.sun.imageio.plugins.png.PNGImageReader;
import com.sun.imageio.plugins.png.PNGImageReaderSpi; import com.sun.imageio.plugins.png.PNGImageReaderSpi;
import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase; import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase;
import org.junit.Test;
import javax.imageio.IIOException; import javax.imageio.IIOException;
import javax.imageio.spi.ImageReaderSpi; import javax.imageio.spi.ImageReaderSpi;
@ -64,6 +65,7 @@ public class PNGImageReaderTestCase extends ImageReaderAbstractTestCase<PNGImage
return Arrays.asList(provider.getMIMETypes()); return Arrays.asList(provider.getMIMETypes());
} }
@Test
@Override @Override
public void testSetDestinationTypeIllegal() throws IOException { public void testSetDestinationTypeIllegal() throws IOException {
try { try {

View File

@ -33,6 +33,7 @@ import com.twelvemonkeys.imageio.util.ImageReaderAbstractTestCase;
import com.twelvemonkeys.io.ole2.CompoundDocument; import com.twelvemonkeys.io.ole2.CompoundDocument;
import com.twelvemonkeys.io.ole2.Entry; import com.twelvemonkeys.io.ole2.Entry;
import com.twelvemonkeys.lang.SystemUtil; import com.twelvemonkeys.lang.SystemUtil;
import org.junit.Test;
import javax.imageio.spi.ImageReaderSpi; import javax.imageio.spi.ImageReaderSpi;
import javax.imageio.stream.ImageInputStream; import javax.imageio.stream.ImageInputStream;
@ -53,7 +54,7 @@ import java.util.List;
public class ThumbsDBImageReaderTestCase extends ImageReaderAbstractTestCase<ThumbsDBImageReader> { public class ThumbsDBImageReaderTestCase extends ImageReaderAbstractTestCase<ThumbsDBImageReader> {
private static final boolean IS_JAVA_6 = SystemUtil.isClassAvailable("java.util.Deque"); private static final boolean IS_JAVA_6 = SystemUtil.isClassAvailable("java.util.Deque");
private ThumbsDBImageReaderSpi mProvider = new ThumbsDBImageReaderSpi(); private ThumbsDBImageReaderSpi provider = new ThumbsDBImageReaderSpi();
protected List<TestData> getTestData() { protected List<TestData> getTestData() {
return Arrays.asList( return Arrays.asList(
@ -82,12 +83,12 @@ public class ThumbsDBImageReaderTestCase extends ImageReaderAbstractTestCase<Thu
} }
protected ImageReaderSpi createProvider() { protected ImageReaderSpi createProvider() {
return mProvider; return provider;
} }
@Override @Override
protected ThumbsDBImageReader createReader() { protected ThumbsDBImageReader createReader() {
return new ThumbsDBImageReader(mProvider); return new ThumbsDBImageReader(provider);
} }
protected Class<ThumbsDBImageReader> getReaderClass() { protected Class<ThumbsDBImageReader> getReaderClass() {
@ -106,6 +107,7 @@ public class ThumbsDBImageReaderTestCase extends ImageReaderAbstractTestCase<Thu
return Arrays.asList("image/x-thumbs-db"); return Arrays.asList("image/x-thumbs-db");
} }
@Test
public void testArrayIndexOutOfBoundsBufferedReadBug() throws IOException { public void testArrayIndexOutOfBoundsBufferedReadBug() throws IOException {
ImageInputStream input = new BufferedImageInputStream(new MemoryCacheImageInputStream(getClass().getResourceAsStream("/thumbsdb/Thumbs-camera.db"))); ImageInputStream input = new BufferedImageInputStream(new MemoryCacheImageInputStream(getClass().getResourceAsStream("/thumbsdb/Thumbs-camera.db")));
input.setByteOrder(ByteOrder.LITTLE_ENDIAN); input.setByteOrder(ByteOrder.LITTLE_ENDIAN);
@ -115,6 +117,7 @@ public class ThumbsDBImageReaderTestCase extends ImageReaderAbstractTestCase<Thu
child.getInputStream(); child.getInputStream();
} }
@Test
@Override @Override
public void testSetDestination() throws IOException { public void testSetDestination() throws IOException {
// Known bug in Sun JPEGImageReader before Java 6 // Known bug in Sun JPEGImageReader before Java 6
@ -126,6 +129,7 @@ public class ThumbsDBImageReaderTestCase extends ImageReaderAbstractTestCase<Thu
} }
} }
@Test
@Override @Override
public void testSetDestinationType() throws IOException { public void testSetDestinationType() throws IOException {
// Known bug in Sun JPEGImageReader before Java 6 // Known bug in Sun JPEGImageReader before Java 6

View File

@ -32,11 +32,6 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>jmock</groupId>
<artifactId>jmock-cglib</artifactId>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
<dependencyManagement> <dependencyManagement>
@ -102,14 +97,7 @@
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<version>4.3.1</version> <version>4.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>jmock</groupId>
<artifactId>jmock-cglib</artifactId>
<version>1.0.1</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@ -12,7 +12,7 @@
<packaging>jar</packaging> <packaging>jar</packaging>
<name>TwelveMonkeys :: Sandbox :: Common</name> <name>TwelveMonkeys :: Sandbox :: Common</name>
<description> <description>
The TwelveMonkeys Sandbox Common. Experimental stuff. The TwelveMonkeys Common Sandbox. Experimental stuff.
</description> </description>
<dependencies> <dependencies>
@ -28,6 +28,12 @@
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.twelvemonkeys.imageio</groupId>
<artifactId>imageio-core</artifactId>
<scope>compile</scope>
</dependency>
<dependency> <dependency>
<groupId>com.twelvemonkeys.common</groupId> <groupId>com.twelvemonkeys.common</groupId>
<artifactId>common-io</artifactId> <artifactId>common-io</artifactId>

View File

@ -12,7 +12,7 @@
<packaging>jar</packaging> <packaging>jar</packaging>
<name>TwelveMonkeys :: Sandbox :: Swing</name> <name>TwelveMonkeys :: Sandbox :: Swing</name>
<description> <description>
The TwelveMonkeys Sandbox Swing. Experimental stuff. The TwelveMonkeys Swing Sandbox. Experimental stuff.
</description> </description>
<properties> <properties>

View File

@ -81,17 +81,10 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>jmock</groupId>
<artifactId>jmock-cglib</artifactId>
<version>1.0.1</version>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.mockito</groupId> <groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId> <artifactId>mockito-all</artifactId>
<version>1.8.0</version> <version>1.8.5</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@ -115,17 +115,13 @@ public abstract class FilterAbstractTestCase extends ObjectAbstractTestCase {
} }
static class MockFilterConfig implements FilterConfig { static class MockFilterConfig implements FilterConfig {
private final Map mParams; private final Map<String, String> params;
MockFilterConfig() { MockFilterConfig(Map<String, String> pParams) {
this(new HashMap());
}
MockFilterConfig(Map pParams) {
if (pParams == null) { if (pParams == null) {
throw new IllegalArgumentException("params == null"); throw new IllegalArgumentException("params == null");
} }
mParams = pParams; params = pParams;
} }
public String getFilterName() { public String getFilterName() {
@ -133,11 +129,11 @@ public abstract class FilterAbstractTestCase extends ObjectAbstractTestCase {
} }
public String getInitParameter(String pName) { public String getInitParameter(String pName) {
return (String) mParams.get(pName); return params.get(pName);
} }
public Enumeration getInitParameterNames() { public Enumeration getInitParameterNames() {
return Collections.enumeration(mParams.keySet()); return Collections.enumeration(params.keySet());
} }
public ServletContext getServletContext() { public ServletContext getServletContext() {
@ -145,20 +141,20 @@ public abstract class FilterAbstractTestCase extends ObjectAbstractTestCase {
} }
private static class MockServletContext implements ServletContext { private static class MockServletContext implements ServletContext {
private final Map mAttributes; private final Map<String, Object> attributes;
private final Map mParams; private final Map<String, String> params;
MockServletContext() { MockServletContext() {
mAttributes = new HashMap(); attributes = new HashMap<String, Object>();
mParams = new HashMap(); params = new HashMap<String, String>();
} }
public Object getAttribute(String s) { public Object getAttribute(String s) {
return mAttributes.get(s); return attributes.get(s);
} }
public Enumeration getAttributeNames() { public Enumeration getAttributeNames() {
return Collections.enumeration(mAttributes.keySet()); return Collections.enumeration(attributes.keySet());
} }
public ServletContext getContext(String s) { public ServletContext getContext(String s) {
@ -166,11 +162,11 @@ public abstract class FilterAbstractTestCase extends ObjectAbstractTestCase {
} }
public String getInitParameter(String s) { public String getInitParameter(String s) {
return (String) mParams.get(s); return (String) params.get(s);
} }
public Enumeration getInitParameterNames() { public Enumeration getInitParameterNames() {
return Collections.enumeration(mParams.keySet()); return Collections.enumeration(params.keySet());
} }
public int getMajorVersion() { public int getMajorVersion() {
@ -230,40 +226,37 @@ public abstract class FilterAbstractTestCase extends ObjectAbstractTestCase {
} }
public void log(Exception exception, String s) { public void log(Exception exception, String s) {
// TODO: Implement
} }
public void log(String s) { public void log(String s) {
// TODO: Implement
} }
public void log(String s, Throwable throwable) { public void log(String s, Throwable throwable) {
// TODO: Implement
} }
public void removeAttribute(String s) { public void removeAttribute(String s) {
mAttributes.remove(s); attributes.remove(s);
} }
public void setAttribute(String s, Object obj) { public void setAttribute(String s, Object obj) {
mAttributes.put(s, obj); attributes.put(s, obj);
} }
} }
} }
static class MockServletRequest implements ServletRequest { static class MockServletRequest implements ServletRequest {
final private Map mAttributes; final private Map<String, Object> attributes;
public MockServletRequest() { public MockServletRequest() {
mAttributes = new HashMap(); attributes = new HashMap<String, Object>();
} }
public Object getAttribute(String pKey) { public Object getAttribute(String pKey) {
return mAttributes.get(pKey); return attributes.get(pKey);
} }
public Enumeration getAttributeNames() { public Enumeration getAttributeNames() {
return Collections.enumeration(mAttributes.keySet()); return Collections.enumeration(attributes.keySet());
} }
public String getCharacterEncoding() { public String getCharacterEncoding() {
@ -331,11 +324,11 @@ public abstract class FilterAbstractTestCase extends ObjectAbstractTestCase {
} }
public void setAttribute(String pKey, Object pValue) { public void setAttribute(String pKey, Object pValue) {
mAttributes.put(pKey, pValue); attributes.put(pKey, pValue);
} }
public void removeAttribute(String pKey) { public void removeAttribute(String pKey) {
mAttributes.remove(pKey); attributes.remove(pKey);
} }
public Locale getLocale() { public Locale getLocale() {

View File

@ -1,20 +1,21 @@
package com.twelvemonkeys.servlet; package com.twelvemonkeys.servlet;
import com.twelvemonkeys.util.MapAbstractTestCase; import com.twelvemonkeys.util.MapAbstractTestCase;
import org.jmock.Mock; import org.mockito.Mockito;
import org.jmock.core.Invocation; import org.mockito.invocation.InvocationOnMock;
import org.jmock.core.Stub; import org.mockito.stubbing.Answer;
import org.jmock.core.stub.CustomStub;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.*; import java.util.*;
import static org.mockito.Mockito.when;
/** /**
* ServletConfigMapAdapterTestCase * ServletConfigMapAdapterTestCase
* <p/> * <p/>
* *
* @author <a href="mailto:harald.kuhr@gmail.com">Harald Kuhr</a> * @author <a href="mailto:harald.kuhr@gmail.com">Harald Kuhr</a>
* @version $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-servlet/src/test/java/com/twelvemonkeys/servlet/ServletHeadersMapAdapterTestCase.java#1 $ * @version $Id: ServletHeadersMapAdapterTestCase.java#1 $
*/ */
public class ServletHeadersMapAdapterTestCase extends MapAbstractTestCase { public class ServletHeadersMapAdapterTestCase extends MapAbstractTestCase {
private static final List<String> HEADER_VALUE_ETAG = Arrays.asList("\"1234567890abcdef\""); private static final List<String> HEADER_VALUE_ETAG = Arrays.asList("\"1234567890abcdef\"");
@ -43,24 +44,21 @@ public class ServletHeadersMapAdapterTestCase extends MapAbstractTestCase {
} }
public Map makeEmptyMap() { public Map makeEmptyMap() {
Mock mockRequest = mock(HttpServletRequest.class); HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
mockRequest.stubs().method("getHeaderNames").will(returnValue(Collections.enumeration(Collections.emptyList()))); when(request.getHeaderNames()).thenAnswer(returnEnumeration(Collections.emptyList()));
mockRequest.stubs().method("getHeaders").will(returnValue(null));
return new ServletHeadersMapAdapter((HttpServletRequest) mockRequest.proxy()); return new ServletHeadersMapAdapter(request);
} }
@Override @Override
public Map makeFullMap() { public Map makeFullMap() {
Mock mockRequest = mock(HttpServletRequest.class); HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
when(request.getHeaderNames()).thenAnswer(returnEnumeration(Arrays.asList(getSampleKeys())));
when(request.getHeaders("Date")).thenAnswer(returnEnumeration(HEADER_VALUE_DATE));
when(request.getHeaders("ETag")).thenAnswer(returnEnumeration(HEADER_VALUE_ETAG));
when(request.getHeaders("X-Foo")).thenAnswer(returnEnumeration(HEADER_VALUE_FOO));
mockRequest.stubs().method("getHeaderNames").will(returnEnumeration("ETag", "Date", "X-Foo")); return new ServletHeadersMapAdapter(request);
mockRequest.stubs().method("getHeaders").with(eq("Date")).will(returnEnumeration(HEADER_VALUE_DATE));
mockRequest.stubs().method("getHeaders").with(eq("ETag")).will(returnEnumeration(HEADER_VALUE_ETAG));
mockRequest.stubs().method("getHeaders").with(eq("X-Foo")).will(returnEnumeration(HEADER_VALUE_FOO));
mockRequest.stubs().method("getHeaders").with(not(or(eq("Date"), or(eq("ETag"), eq("X-Foo"))))).will(returnValue(null));
return new ServletHeadersMapAdapter((HttpServletRequest) mockRequest.proxy());
} }
@Override @Override
@ -73,31 +71,25 @@ public class ServletHeadersMapAdapterTestCase extends MapAbstractTestCase {
return new Object[] {HEADER_VALUE_DATE, HEADER_VALUE_ETAG, HEADER_VALUE_FOO}; return new Object[] {HEADER_VALUE_DATE, HEADER_VALUE_ETAG, HEADER_VALUE_FOO};
} }
@Override @Override
public Object[] getNewSampleValues() { public Object[] getNewSampleValues() {
// Needs to be same length but different values // Needs to be same length but different values
return new Object[3]; return new Object[3];
} }
protected Stub returnEnumeration(final Object... pValues) { protected static <T> ReturnNewEnumeration<T> returnEnumeration(final Collection<T> collection) {
return new EnumerationStub(Arrays.asList(pValues)); return new ReturnNewEnumeration<T>(collection);
} }
protected Stub returnEnumeration(final List<?> pValues) { private static class ReturnNewEnumeration<T> implements Answer<Enumeration<T>> {
return new EnumerationStub(pValues); private final Collection<T> collection;
}
private static class EnumerationStub extends CustomStub { private ReturnNewEnumeration(final Collection<T> collection) {
private List<?> mValues; this.collection = collection;
public EnumerationStub(final List<?> pValues) {
super("Returns a new enumeration");
mValues = pValues;
} }
public Object invoke(Invocation invocation) throws Throwable { public Enumeration<T> answer(InvocationOnMock invocation) throws Throwable {
return Collections.enumeration(mValues); return Collections.enumeration(collection);
} }
} }
} }

View File

@ -1,14 +1,15 @@
package com.twelvemonkeys.servlet; package com.twelvemonkeys.servlet;
import com.twelvemonkeys.util.MapAbstractTestCase; import com.twelvemonkeys.util.MapAbstractTestCase;
import org.jmock.Mock; import org.mockito.Mockito;
import org.jmock.core.Invocation; import org.mockito.invocation.InvocationOnMock;
import org.jmock.core.Stub; import org.mockito.stubbing.Answer;
import org.jmock.core.stub.CustomStub;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.*; import java.util.*;
import static org.mockito.Mockito.when;
/** /**
* ServletConfigMapAdapterTestCase * ServletConfigMapAdapterTestCase
* <p/> * <p/>
@ -43,24 +44,22 @@ public class ServletParametersMapAdapterTestCase extends MapAbstractTestCase {
} }
public Map makeEmptyMap() { public Map makeEmptyMap() {
Mock mockRequest = mock(HttpServletRequest.class); HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
mockRequest.stubs().method("getParameterNames").will(returnValue(Collections.enumeration(Collections.emptyList()))); when(request.getParameterNames()).thenAnswer(returnEnumeration(Collections.emptyList()));
mockRequest.stubs().method("getParameterValues").will(returnValue(null));
return new ServletParametersMapAdapter((HttpServletRequest) mockRequest.proxy()); return new ServletParametersMapAdapter(request);
} }
@Override @Override
public Map makeFullMap() { public Map makeFullMap() {
Mock mockRequest = mock(HttpServletRequest.class); HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
mockRequest.stubs().method("getParameterNames").will(returnEnumeration("tag", "date", "foo")); when(request.getParameterNames()).thenAnswer(returnEnumeration(Arrays.asList("tag", "date", "foo")));
mockRequest.stubs().method("getParameterValues").with(eq("date")).will(returnValue(PARAM_VALUE_DATE.toArray(new String[PARAM_VALUE_DATE.size()]))); when(request.getParameterValues("date")).thenReturn(PARAM_VALUE_DATE.toArray(new String[PARAM_VALUE_DATE.size()]));
mockRequest.stubs().method("getParameterValues").with(eq("tag")).will(returnValue(PARAM_VALUE_ETAG.toArray(new String[PARAM_VALUE_ETAG.size()]))); when(request.getParameterValues("tag")).thenReturn(PARAM_VALUE_ETAG.toArray(new String[PARAM_VALUE_ETAG.size()]));
mockRequest.stubs().method("getParameterValues").with(eq("foo")).will(returnValue(PARAM_VALUE_FOO.toArray(new String[PARAM_VALUE_FOO.size()]))); when(request.getParameterValues("foo")).thenReturn(PARAM_VALUE_FOO.toArray(new String[PARAM_VALUE_FOO.size()]));
mockRequest.stubs().method("getParameterValues").with(not(or(eq("date"), or(eq("tag"), eq("foo"))))).will(returnValue(null));
return new ServletParametersMapAdapter((HttpServletRequest) mockRequest.proxy()); return new ServletParametersMapAdapter(request);
} }
@Override @Override
@ -79,24 +78,19 @@ public class ServletParametersMapAdapterTestCase extends MapAbstractTestCase {
return new Object[3]; return new Object[3];
} }
protected Stub returnEnumeration(final Object... pValues) { protected static <T> ReturnNewEnumeration<T> returnEnumeration(final Collection<T> collection) {
return new EnumerationStub(Arrays.asList(pValues)); return new ReturnNewEnumeration<T>(collection);
} }
protected Stub returnEnumeration(final List<?> pValues) { private static class ReturnNewEnumeration<T> implements Answer<Enumeration<T>> {
return new EnumerationStub(pValues); private final Collection<T> collection;
}
private static class EnumerationStub extends CustomStub { private ReturnNewEnumeration(final Collection<T> collection) {
private List<?> mValues; this.collection = collection;
public EnumerationStub(final List<?> pValues) {
super("Returns a new enumeration");
mValues = pValues;
} }
public Object invoke(Invocation invocation) throws Throwable { public Enumeration<T> answer(InvocationOnMock invocation) throws Throwable {
return Collections.enumeration(mValues); return Collections.enumeration(collection);
} }
} }
} }

File diff suppressed because it is too large Load Diff