Author: ningjiang Date: Tue Jan 19 02:22:32 2010 New Revision: 900649 URL: http://svn.apache.org/viewvc?rev=900649&view=rev Log: CAMEL-2330 applied patch with thanks to Pavel
Modified: camel/trunk/components/camel-jaxb/pom.xml camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/FilteringXmlStreamWriterTest.java camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/JaxbDataFormatTest.java camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/NonXmlCharFiltererTest.java camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/NonXmlFilterReaderTest.java camel/trunk/parent/pom.xml Modified: camel/trunk/components/camel-jaxb/pom.xml URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jaxb/pom.xml?rev=900649&r1=900648&r2=900649&view=diff ============================================================================== --- camel/trunk/components/camel-jaxb/pom.xml (original) +++ camel/trunk/components/camel-jaxb/pom.xml Tue Jan 19 02:22:32 2010 @@ -100,8 +100,8 @@ <scope>test</scope> </dependency> <dependency> - <groupId>org.easymock</groupId> - <artifactId>easymockclassextension</artifactId> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> <scope>test</scope> </dependency> </dependencies> Modified: camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java?rev=900649&r1=900648&r2=900649&view=diff ============================================================================== --- camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java (original) +++ camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbDataFormat.java Tue Jan 19 02:22:32 2010 @@ -96,7 +96,7 @@ } } - public Object unmarshal(Exchange exchange, InputStream stream) throws IOException, ClassNotFoundException { + public Object unmarshal(Exchange exchange, InputStream stream) throws IOException { try { // must create a new instance of unmarshaller as its not thread safe Object answer; Modified: camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/FilteringXmlStreamWriterTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/FilteringXmlStreamWriterTest.java?rev=900649&r1=900648&r2=900649&view=diff ============================================================================== --- camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/FilteringXmlStreamWriterTest.java (original) +++ camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/FilteringXmlStreamWriterTest.java Tue Jan 19 02:22:32 2010 @@ -19,98 +19,77 @@ import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; -import org.easymock.classextension.EasyMockSupport; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; + +import static org.mockito.Matchers.eq; +import static org.mockito.Matchers.same; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; -import static org.easymock.EasyMock.eq; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.same; - -public class FilteringXmlStreamWriterTest extends EasyMockSupport { +...@runwith(MockitoJUnitRunner.class) +public class FilteringXmlStreamWriterTest { private FilteringXmlStreamWriter filteringXmlStreamWriter; + @Mock private NonXmlCharFilterer nonXmlCharFiltererMock; + @Mock private XMLStreamWriter xmlStreamWriterMock; // only testing non-generated methods, those that do apply filtering @Before public void setUp() { - xmlStreamWriterMock = createStrictMock(XMLStreamWriter.class); - nonXmlCharFiltererMock = createStrictMock(NonXmlCharFilterer.class); filteringXmlStreamWriter = new FilteringXmlStreamWriter(xmlStreamWriterMock); filteringXmlStreamWriter.nonXmlCharFilterer = nonXmlCharFiltererMock; + + when(nonXmlCharFiltererMock.filter("value")).thenReturn("filteredValue"); } @Test public void testWriteAttribute2Args() throws XMLStreamException { - expect(nonXmlCharFiltererMock.filter("value")).andReturn("filteredValue"); - xmlStreamWriterMock.writeAttribute("localName", "filteredValue"); - replayAll(); - filteringXmlStreamWriter.writeAttribute("localName", "value"); - verifyAll(); + verify(xmlStreamWriterMock).writeAttribute("localName", "filteredValue"); } @Test public void testWriteAttribute3Args() throws XMLStreamException { - expect(nonXmlCharFiltererMock.filter("value")).andReturn("filteredValue"); - xmlStreamWriterMock.writeAttribute("namespaceURI", "localName", "filteredValue"); - replayAll(); - filteringXmlStreamWriter.writeAttribute("namespaceURI", "localName", "value"); - verifyAll(); + verify(xmlStreamWriterMock).writeAttribute("namespaceURI", "localName", "filteredValue"); } @Test public void testWriteAttribute4Args() throws XMLStreamException { - expect(nonXmlCharFiltererMock.filter("value")).andReturn("filteredValue"); - xmlStreamWriterMock.writeAttribute("prefix", "namespaceURI", "localName", "filteredValue"); - replayAll(); - filteringXmlStreamWriter.writeAttribute("prefix", "namespaceURI", "localName", "value"); - verifyAll(); + verify(xmlStreamWriterMock).writeAttribute("prefix", "namespaceURI", "localName", "filteredValue"); } @Test public void testWriteCData() throws XMLStreamException { - expect(nonXmlCharFiltererMock.filter("value")).andReturn("filteredValue"); - xmlStreamWriterMock.writeCData("filteredValue"); - replayAll(); - filteringXmlStreamWriter.writeCData("value"); - verifyAll(); + verify(xmlStreamWriterMock).writeCData("filteredValue"); } @Test public void testWriteCharacters1Arg() throws XMLStreamException { - expect(nonXmlCharFiltererMock.filter("value")).andReturn("filteredValue"); - xmlStreamWriterMock.writeCharacters("filteredValue"); - replayAll(); - filteringXmlStreamWriter.writeCharacters("value"); - verifyAll(); + verify(xmlStreamWriterMock).writeCharacters("filteredValue"); } @Test public void testWriteComment() throws XMLStreamException { - expect(nonXmlCharFiltererMock.filter("value")).andReturn("filteredValue"); - xmlStreamWriterMock.writeComment("filteredValue"); - replayAll(); - filteringXmlStreamWriter.writeComment("value"); - verifyAll(); + verify(xmlStreamWriterMock).writeComment("filteredValue"); } @Test public void testWriteCharacters3Args() throws XMLStreamException { char[] buffer = new char[] {'a', 'b', 'c'}; - expect(nonXmlCharFiltererMock.filter(same(buffer), eq(2), eq(3))).andReturn(true); - xmlStreamWriterMock.writeCharacters(same(buffer), eq(2), eq(3)); - replayAll(); - filteringXmlStreamWriter.writeCharacters(buffer, 2, 3); - verifyAll(); + verify(nonXmlCharFiltererMock).filter(same(buffer), eq(2), eq(3)); + verify(xmlStreamWriterMock).writeCharacters(same(buffer), eq(2), eq(3)); } } Modified: camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/JaxbDataFormatTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/JaxbDataFormatTest.java?rev=900649&r1=900648&r2=900649&view=diff ============================================================================== --- camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/JaxbDataFormatTest.java (original) +++ camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/JaxbDataFormatTest.java Tue Jan 19 02:22:32 2010 @@ -16,105 +16,157 @@ */ package org.apache.camel.converter.jaxb; +import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; import java.io.OutputStream; +import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; import javax.xml.stream.XMLStreamException; import org.apache.camel.Exchange; -import org.easymock.classextension.EasyMockSupport; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.isA; -import static org.easymock.EasyMock.same; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyObject; +import static org.mockito.Matchers.anyString; +import static org.mockito.Matchers.argThat; +import static org.mockito.Matchers.isA; +import static org.mockito.Matchers.same; +import static org.mockito.Mockito.doCallRealMethod; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; -public class JaxbDataFormatTest extends EasyMockSupport { +...@runwith(MockitoJUnitRunner.class) +public class JaxbDataFormatTest { private JaxbDataFormat jaxbDataFormat; + @Mock private Exchange exchangeMock; + @Mock private Marshaller marshallerMock; + @Mock + private JaxbDataFormat jaxbDataFormatMock; + @Mock + private JAXBContext jaxbContextMock; + @Mock + private Unmarshaller unmarshallerMock; + @Before public void setUp() { jaxbDataFormat = new JaxbDataFormat(); - marshallerMock = createStrictMock(Marshaller.class); - exchangeMock = createStrictMock(Exchange.class); } + @SuppressWarnings("unchecked") @Test - public void testNeedFiltering() { + public void testNeedFilteringDisabledFiltering() { // tests combinations of data format option and exchange property - expect( - exchangeMock.getProperty(Exchange.FILTER_NON_XML_CHARS, false, - Boolean.class)).andReturn(false); - replayAll(); - - assertFalse("Not expected filtering here", jaxbDataFormat.needFiltering(exchangeMock)); - verifyAll(); - resetAll(); - - expect( - exchangeMock.getProperty(Exchange.FILTER_NON_XML_CHARS, false, - Boolean.class)).andReturn(true); - replayAll(); - - assertTrue("Expected filtering here", jaxbDataFormat.needFiltering(exchangeMock)); - verifyAll(); - resetAll(); + when(exchangeMock.getProperty(anyString(), anyObject(), any(Class.class))) + .thenReturn(false); + + jaxbDataFormat.needFiltering(exchangeMock); + verify(exchangeMock).getProperty(Exchange.FILTER_NON_XML_CHARS, false, Boolean.class); + } + @SuppressWarnings("unchecked") + @Test + public void testNeedFilteringEnabledFiltering() { + when(exchangeMock.getProperty(anyString(), anyObject(), any(Class.class))).thenReturn(true); jaxbDataFormat.setFilterNonXmlChars(true); - expect( - exchangeMock.getProperty(Exchange.FILTER_NON_XML_CHARS, true, - Boolean.class)).andReturn(false); - replayAll(); + jaxbDataFormat.needFiltering(exchangeMock); + verify(exchangeMock).getProperty(Exchange.FILTER_NON_XML_CHARS, true, Boolean.class); + } + + @SuppressWarnings("unchecked") + @Test + public void testNeedFilteringTruePropagates() { + // tests combinations of data format option and exchange property + when(exchangeMock.getProperty(anyString(), anyObject(), any(Class.class))) + .thenReturn(true); - assertFalse("Not expected filtering here", jaxbDataFormat.needFiltering(exchangeMock)); - verifyAll(); - resetAll(); + assertTrue("Expecting filtering here", jaxbDataFormat.needFiltering(exchangeMock)); + } - expect( - exchangeMock.getProperty(Exchange.FILTER_NON_XML_CHARS, true, - Boolean.class)).andReturn(true); - replayAll(); + @SuppressWarnings("unchecked") + @Test + public void testNeedFilteringFalsePropagates() { + // tests combinations of data format option and exchange property + when(exchangeMock.getProperty(anyString(), anyObject(), any(Class.class))) + .thenReturn(false); - assertTrue("Expected filtering here", jaxbDataFormat.needFiltering(exchangeMock)); - verifyAll(); - resetAll(); + assertFalse("Not expecting filtering here", jaxbDataFormat.needFiltering(exchangeMock)); } @Test - public void testMarshalFilteringDisabled() throws XMLStreamException, JAXBException { - JaxbDataFormat jaxbDataFormatMock = createMockBuilder(JaxbDataFormat.class) - .addMockedMethod("needFiltering").createStrictMock(); + public void testMarshalFilteringDisabled() throws IOException, XMLStreamException, JAXBException { + doCallRealMethod().when(jaxbDataFormatMock).marshal(any(Exchange.class), anyObject(), + any(OutputStream.class), any(Marshaller.class)); + when(jaxbDataFormatMock.needFiltering(exchangeMock)).thenReturn(false); + Object graph = new Object(); OutputStream stream = new ByteArrayOutputStream(); - expect(jaxbDataFormatMock.needFiltering(exchangeMock)).andReturn(false); - marshallerMock.marshal(same(graph), same(stream)); - replayAll(); - jaxbDataFormatMock.marshal(exchangeMock, graph, stream, marshallerMock); - verifyAll(); + verify(marshallerMock).marshal(same(graph), same(stream)); } @Test public void testMarshalFilteringEnabled() throws XMLStreamException, JAXBException { - JaxbDataFormat jaxbDataFormatMock = createMockBuilder(JaxbDataFormat.class) - .addMockedMethod("needFiltering").createStrictMock(); + doCallRealMethod().when(jaxbDataFormatMock).marshal(any(Exchange.class), anyObject(), + any(OutputStream.class), any(Marshaller.class)); + when(jaxbDataFormatMock.needFiltering(exchangeMock)).thenReturn(true); Object graph = new Object(); OutputStream stream = new ByteArrayOutputStream(); - expect(jaxbDataFormatMock.needFiltering(exchangeMock)).andReturn(true); - marshallerMock.marshal(same(graph), isA(FilteringXmlStreamWriter.class)); - replayAll(); - jaxbDataFormatMock.marshal(exchangeMock, graph, stream, marshallerMock); - verifyAll(); + verify(marshallerMock).marshal(same(graph), isA(FilteringXmlStreamWriter.class)); + } + + @Test + public void testUnmarshalFilteringDisabled() throws IOException, JAXBException { + doCallRealMethod().when(jaxbDataFormatMock).unmarshal(any(Exchange.class), + any(InputStream.class)); + + when(jaxbDataFormatMock.getContext()).thenReturn(jaxbContextMock); + when(jaxbContextMock.createUnmarshaller()).thenReturn(unmarshallerMock); + + when(jaxbDataFormatMock.needFiltering(exchangeMock)).thenReturn(false); + + InputStream stream = new ByteArrayInputStream(new byte[] {}); + + jaxbDataFormatMock.unmarshal(exchangeMock, stream); + verify(unmarshallerMock).unmarshal((InputStream) argThat(not(instanceOf(NonXmlFilterReader.class)))); + } + + @Test + public void testUnmarshalFilteringEnabled() throws IOException, JAXBException { + doCallRealMethod().when(jaxbDataFormatMock).unmarshal(any(Exchange.class), + any(InputStream.class)); + + when(jaxbDataFormatMock.getContext()).thenReturn(jaxbContextMock); + when(jaxbContextMock.createUnmarshaller()).thenReturn(unmarshallerMock); + + when(jaxbDataFormatMock.needFiltering(exchangeMock)).thenReturn(true); + + InputStream stream = new ByteArrayInputStream(new byte[] {}); + + jaxbDataFormatMock.unmarshal(exchangeMock, stream); + verify(unmarshallerMock).unmarshal(any(NonXmlFilterReader.class)); + } + } Modified: camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/NonXmlCharFiltererTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/NonXmlCharFiltererTest.java?rev=900649&r1=900648&r2=900649&view=diff ============================================================================== --- camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/NonXmlCharFiltererTest.java (original) +++ camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/NonXmlCharFiltererTest.java Tue Jan 19 02:22:32 2010 @@ -17,24 +17,32 @@ package org.apache.camel.converter.jaxb; -import org.easymock.Capture; -import org.easymock.IAnswer; -import org.easymock.classextension.EasyMockSupport; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.stubbing.Answer; -import static org.easymock.EasyMock.and; -import static org.easymock.EasyMock.aryEq; -import static org.easymock.EasyMock.capture; -import static org.easymock.EasyMock.eq; -import static org.easymock.EasyMock.expect; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertSame; import static org.junit.Assert.fail; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyChar; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.anyString; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; -public class NonXmlCharFiltererTest extends EasyMockSupport { +...@runwith(MockitoJUnitRunner.class) +public class NonXmlCharFiltererTest { private NonXmlCharFilterer nonXmlCharFilterer; + @Mock + private NonXmlCharFilterer nonXmlCharFiltererMock; @Before public void setUp() { @@ -71,65 +79,53 @@ @Test public void testFilter1ArgNonFiltered() { - NonXmlCharFilterer nonXmlCharFiltererMock = createMockBuilder(NonXmlCharFilterer.class) - .addMockedMethod("filter", char[].class, int.class, int.class).createStrictMock(); - String string = "abc"; - - expect(nonXmlCharFiltererMock.filter(aryEq(new char[] {'a', 'b', 'c'}), eq(0), eq(3))) - .andReturn(false); - replayAll(); + when(nonXmlCharFiltererMock.filter(anyString())).thenCallRealMethod(); + when(nonXmlCharFiltererMock.filter(any(char[].class), anyInt(), anyInt())).thenReturn(false); + String string = "abc"; String result = nonXmlCharFiltererMock.filter(string); - verifyAll(); + + verify(nonXmlCharFiltererMock).filter(new char[] {'a', 'b', 'c'}, 0, 3); assertSame("Should have returned the same string if nothing was filtered", string, result); } - //@Test - //"This test can't be build with JDK 1.5" - /* + @Test public void testFilter1ArgFiltered() { - NonXmlCharFilterer nonXmlCharFiltererMock = createMockBuilder(NonXmlCharFilterer.class) - .addMockedMethod("filter", char[].class, int.class, int.class).createStrictMock(); - final Capture<char[]> bufferCapture = new Capture<char[]>(); - - expect( - nonXmlCharFiltererMock.filter(and(capture(bufferCapture), aryEq(new char[] {'a', 'b', 'c'})), - eq(0), eq(3))).andAnswer(new IAnswer<Boolean>() { - public Boolean answer() throws Throwable { - char[] buffer = bufferCapture.getValue(); + when(nonXmlCharFiltererMock.filter(anyString())).thenCallRealMethod(); + when(nonXmlCharFiltererMock.filter(eq(new char[] {'a', 'b', 'c'}), anyInt(), anyInt())).thenAnswer(new Answer<Boolean>() { + + public Boolean answer(InvocationOnMock invocation) throws Throwable { + char[] buffer = (char[]) invocation.getArguments()[0]; buffer[0] = 'i'; buffer[1] = 'o'; return true; } }); - replayAll(); String result = nonXmlCharFiltererMock.filter("abc"); - verifyAll(); - + verify(nonXmlCharFiltererMock).filter(any(char[].class), eq(0), eq(3)); assertEquals("Should have returned filtered string", "ioc", result); - }*/ + } @Test public void testFilter1ArgNullArg() { - NonXmlCharFilterer nonXmlCharFiltererMock = createStrictMock(NonXmlCharFilterer.class); + when(nonXmlCharFiltererMock.filter(anyString())).thenCallRealMethod(); nonXmlCharFiltererMock.filter(null); + verify(nonXmlCharFiltererMock, never()).filter(any(char[].class), anyInt(), anyInt()); } @Test public void testFilter3Args() { - NonXmlCharFilterer nonXmlCharFiltererMock = createMockBuilder(NonXmlCharFilterer.class) - .addMockedMethod("isFiltered").createStrictMock(); - char[] buffer = new char[] {'1', '2', '3', '4', '5', '6'}; - - expect(nonXmlCharFiltererMock.isFiltered('3')).andReturn(true); - expect(nonXmlCharFiltererMock.isFiltered('4')).andReturn(false); - expect(nonXmlCharFiltererMock.isFiltered('5')).andReturn(true); - replayAll(); + when(nonXmlCharFiltererMock.filter(any(char[].class), anyInt(), anyInt())).thenCallRealMethod(); + when(nonXmlCharFiltererMock.isFiltered(anyChar())).thenReturn(true, false, true); + char[] buffer = new char[] {'1', '2', '3', '4', '5', '6'}; nonXmlCharFiltererMock.filter(buffer, 2, 3); - verifyAll(); + + verify(nonXmlCharFiltererMock).isFiltered('3'); + verify(nonXmlCharFiltererMock).isFiltered('4'); + verify(nonXmlCharFiltererMock).isFiltered('5'); assertArrayEquals("Unexpected buffer contents", new char[] {'1', '2', ' ', '4', ' ', '6'}, buffer); @@ -137,8 +133,7 @@ @Test public void testFilter3ArgsNullArg() { - NonXmlCharFilterer nonXmlCharFiltererMock = createStrictMock(NonXmlCharFilterer.class); - nonXmlCharFiltererMock.filter(null, 2, 3); + nonXmlCharFilterer.filter(null, 2, 3); } private void checkSingleValid(int charCode) { Modified: camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/NonXmlFilterReaderTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/NonXmlFilterReaderTest.java?rev=900649&r1=900648&r2=900649&view=diff ============================================================================== --- camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/NonXmlFilterReaderTest.java (original) +++ camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/NonXmlFilterReaderTest.java Tue Jan 19 02:22:32 2010 @@ -19,27 +19,33 @@ import java.io.IOException; import java.io.Reader; -import org.easymock.classextension.EasyMockSupport; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.stubbing.Answer; -import static org.easymock.EasyMock.anyInt; -import static org.easymock.EasyMock.eq; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.notNull; -import static org.easymock.EasyMock.same; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.eq; +import static org.mockito.Matchers.same; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; -public class NonXmlFilterReaderTest extends EasyMockSupport { +...@runwith(MockitoJUnitRunner.class) +public class NonXmlFilterReaderTest { private NonXmlFilterReader nonXmlFilterReader; + @Mock private NonXmlCharFilterer nonXmlCharFiltererMock; + @Mock private Reader readerMock; @Before public void setUp() { - readerMock = createStrictMock(Reader.class); - nonXmlCharFiltererMock = createStrictMock(NonXmlCharFilterer.class); nonXmlFilterReader = new NonXmlFilterReader(readerMock); nonXmlFilterReader.nonXmlCharFilterer = nonXmlCharFiltererMock; } @@ -48,13 +54,19 @@ public void testRead() throws IOException { char[] buffer = new char[10]; - expect(readerMock.read(same(buffer), eq(3), eq(5))).andDelegateTo( - new ConstantReader(new char[] {'a', 'b', 'c'})); - expect(nonXmlCharFiltererMock.filter(same(buffer), eq(3), eq(3))).andReturn(false); + when(readerMock.read(same(buffer), eq(3), eq(5))).thenAnswer(new Answer<Integer>() { + + public Integer answer(InvocationOnMock invocation) throws Throwable { + ConstantReader reader = new ConstantReader(new char[] {'a', 'b', 'c'}); + Object[] args = invocation.getArguments(); + return reader.read((char[]) args[0], (Integer) args[1], (Integer)args[2]); + } + }); - replayAll(); int result = nonXmlFilterReader.read(buffer, 3, 5); - verifyAll(); + + verify(readerMock).read(same(buffer), eq(3), eq(5)); + verify(nonXmlCharFiltererMock).filter(same(buffer), eq(3), eq(3)); assertEquals("Unexpected number of chars read", 3, result); assertArrayEquals("Wrong buffer contents", new char[] {0, 0, 0, 'a', 'b', 'c', 0, 0, 0, 0}, @@ -65,16 +77,13 @@ public void testReadEOS() throws IOException { char[] buffer = new char[10]; - expect(readerMock.read((char[]) notNull(), anyInt(), anyInt())).andReturn(-1); + when(readerMock.read(any(char[].class), anyInt(), anyInt())).thenReturn(-1); - replayAll(); int result = nonXmlFilterReader.read(buffer, 3, 5); - verifyAll(); assertEquals("Unexpected number of chars read", -1, result); assertArrayEquals("Buffer should not have been affected", new char[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, buffer); - } static class ConstantReader extends Reader { Modified: camel/trunk/parent/pom.xml URL: http://svn.apache.org/viewvc/camel/trunk/parent/pom.xml?rev=900649&r1=900648&r2=900649&view=diff ============================================================================== --- camel/trunk/parent/pom.xml (original) +++ camel/trunk/parent/pom.xml Tue Jan 19 02:22:32 2010 @@ -74,6 +74,7 @@ <commons-dbcp-version>1.2.2</commons-dbcp-version> <derby-version>10.4.2.0</derby-version> <easymock-version>2.5.2</easymock-version> + <mockito-version>1.8.2</mockito-version> <flatpack-version>3.1.1</flatpack-version> <freemarker-version>2.3.15</freemarker-version> <hamcrest-version>1.2-dev1</hamcrest-version> @@ -970,6 +971,11 @@ <artifactId>easymockclassextension</artifactId> <version>${easymock-version}</version> </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <version>${mockito-version}</version> + </dependency> <dependency> <groupId>httpunit</groupId> <artifactId>httpunit</artifactId>