Package com.mockobjects.io
Class MockWriter
- java.lang.Object
-
- java.io.Writer
-
- com.mockobjects.io.MockWriter
-
- All Implemented Interfaces:
Verifiable
,java.io.Closeable
,java.io.Flushable
,java.lang.Appendable
,java.lang.AutoCloseable
public class MockWriter extends java.io.Writer implements Verifiable
A mockWriter
.Example usage
You may use the
MockWriter
like this:public void testSomething() throws IOException { MockWriter out = new MockWriter(); out.setExpectedSegment("some string"); out.setExpectedFlushCalls(1); out.setExpectedCloseCalls(1); ObjectUnderTest testee = new ObjectUnderTest(out); out.verify(); // If we get here, the mock's flush() and close() methods were // called exactly once each (order cannot be determined) and // the write() method was called with the string "some string" in it. }
- Author:
- Francois Beausoleil, fbos@users.sourceforge.net
-
-
Constructor Summary
Constructors Constructor Description MockWriter()
Instantiates a new mock writer which will act as a data sink.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Increments the close counter and asserts that this method was not called too many times.void
flush()
This method will also throw anIOException
if asked to do so by callingsetFlushShouldThrowException()
.void
setCloseShouldThrowException()
Sets the mock's behavior when closing.void
setExpectedCloseCalls(int calls)
Sets the expected number of times that theclose()
method will be called.void
setExpectedFlushCalls(int calls)
Sets the expected number of times that theflush()
method will be called.void
setExpectedSegment(java.lang.String aString)
Sets the value of the expected string segment.void
setFlushShouldThrowException()
Sets the mock's behavior when flushing.void
setWriteShouldThrowException()
Sets the mock's behavior when writing.void
verify()
Throw an AssertionFailedException if any expectations have not been met.void
write(char[] cbuf, int off, int len)
Either throws an exception or asserts a string segment for equality.
-
-
-
Method Detail
-
setWriteShouldThrowException
public void setWriteShouldThrowException()
Sets the mock's behavior when writing. If this method has been called, thenwrite(char[], int, int)
will throw anIOException
.
-
setFlushShouldThrowException
public void setFlushShouldThrowException()
Sets the mock's behavior when flushing. If this method has been called, thenflush()
will throw anIOException
.
-
setCloseShouldThrowException
public void setCloseShouldThrowException()
Sets the mock's behavior when closing. If this method has been called, thenclose()
will throw anIOException
.
-
setExpectedFlushCalls
public void setExpectedFlushCalls(int calls)
Sets the expected number of times that theflush()
method will be called.- See Also:
flush()
-
setExpectedCloseCalls
public void setExpectedCloseCalls(int calls)
Sets the expected number of times that theclose()
method will be called.- See Also:
close()
-
setExpectedSegment
public void setExpectedSegment(java.lang.String aString)
Sets the value of the expected string segment. When thewrite(char[], int, int)
method is called, a string is instantiated with the passed array and compared to theaString
parameter of this method. If the two strings differ, anAssertionFailedError
will be thrown.- See Also:
ExpectationSegment
,write(char[], int, int)
-
write
public void write(char[] cbuf, int off, int len) throws java.io.IOException
Either throws an exception or asserts a string segment for equality.- Specified by:
write
in classjava.io.Writer
- Throws:
java.io.IOException
- See Also:
ExpectationSegment
,#setWriteShouldThrowException(boolean)
-
flush
public void flush() throws java.io.IOException
This method will also throw anIOException
if asked to do so by callingsetFlushShouldThrowException()
. Please note that the call count will be incremented before the check for the exception is done.- Specified by:
flush
in interfacejava.io.Flushable
- Specified by:
flush
in classjava.io.Writer
- Throws:
java.io.IOException
- See Also:
setExpectedFlushCalls(int)
,setFlushShouldThrowException()
-
close
public void close() throws java.io.IOException
Increments the close counter and asserts that this method was not called too many times. This method will also throw anIOException
if asked to do so by callingsetCloseShouldThrowException()
. Please note that the call count will be incremented before the check for the exception is done.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Specified by:
close
in classjava.io.Writer
- Throws:
java.io.IOException
- See Also:
setExpectedCloseCalls(int)
,setCloseShouldThrowException()
-
verify
public void verify()
Description copied from interface:Verifiable
Throw an AssertionFailedException if any expectations have not been met.- Specified by:
verify
in interfaceVerifiable
-
-