package net.sf.cotta.io; import net.sf.cotta.TIoException; import net.sf.cotta.TestCase; import org.jmock.Expectations; import org.jmock.Mockery; import java.io.ByteArrayOutputStream; import java.io.PrintWriter; import java.io.Writer; public class OutputFactoryTest extends TestCase { private Mockery context; public void beforeMethod() throws Exception { context = new Mockery(); } public void afterMethod() throws Exception { context.assertIsSatisfied(); } public void testCreateOutputStream() throws Exception { final ByteArrayOutputStream output = new ByteArrayOutputStream(); final OutputStreamFactory factory = mockFactoryForOutput(output); ensure.that(new OutputFactory(factory, null).outputStream()).sameAs(output); } private OutputStreamFactory mockFactoryForOutput(final ByteArrayOutputStream output) throws TIoException { final OutputStreamFactory factory = context.mock(OutputStreamFactory.class); context.checking(new Expectations() { { one(factory).outputStream(); will(returnValue(output)); } }); return factory; } public void testCreateWriter() throws Exception { final ByteArrayOutputStream output = new ByteArrayOutputStream(); final OutputStreamFactory OutputStreamFactory = mockFactoryForOutput(output); OutputFactory factory = new OutputFactory(OutputStreamFactory, null); Writer writer = factory.writer(); writer.write("content".toCharArray()); writer.close(); ensure.that(output.toString()).eq("content"); } public void testCreateWriterWithEncoding() throws Exception { final ByteArrayOutputStream output = new ByteArrayOutputStream(); final OutputStreamFactory OutputStreamFactory = mockFactoryForOutput(output); OutputFactory factory = new OutputFactory(OutputStreamFactory, null); Writer writer = factory.writer("utf-8"); writer.write("\u00c7\u00c9".toCharArray()); writer.close(); ensure.that(output.toString("utf-8")).eq("\u00c7\u00c9"); } public void testCreateWriterUsingDefaultEncoding() throws Exception { final ByteArrayOutputStream output = new ByteArrayOutputStream(); final OutputStreamFactory OutputStreamFactory = mockFactoryForOutput(output); OutputFactory factory = new OutputFactory(OutputStreamFactory, "utf-8"); Writer writer = factory.writer(); writer.write("\u00c7\u00c9".toCharArray()); writer.close(); ensure.that(output.toString("utf-8")).eq("\u00c7\u00c9"); } public void testCreatePrintWriter() throws Exception { final ByteArrayOutputStream output = new ByteArrayOutputStream(); final OutputStreamFactory OutputStreamFactory = mockFactoryForOutput(output); OutputFactory factory = new OutputFactory(OutputStreamFactory, null); PrintWriter printer = factory.printWriter(); printer.print("number"); printer.close(); ensure.that(output.toString()).eq("number"); context.assertIsSatisfied(); } }