/* See LICENSE for licensing and NOTICE for copyright. */ package org.cryptacular.io; import java.io.ByteArrayOutputStream; import java.io.File; import org.bouncycastle.util.io.Streams; import org.cryptacular.FailListener; import org.cryptacular.util.ByteUtil; import org.cryptacular.util.StreamUtil; import org.testng.annotations.DataProvider; import org.testng.annotations.Listeners; import org.testng.annotations.Test; import static org.testng.Assert.assertEquals; /** * Unit test for {@link EncodingOutputStream} class. * * @author Middleware Services */ @Listeners(FailListener.class) public class EncodingOutputStreamTest { @DataProvider(name = "plaintext-files") public Object[][] getPlaintextFiles() { return new Object[][] { new Object[] {"src/test/resources/plaintexts/lorem-1200.txt"}, new Object[] {"src/test/resources/plaintexts/lorem-5000.txt"}, }; } @Test(dataProvider = "plaintext-files") public void testEncode(final String path) throws Exception { final File file = new File(path); String expectedPath = path + ".b64"; if ("\r\n".equals(System.lineSeparator())) { expectedPath += ".crlf"; } final String expected = new String(StreamUtil.readAll(expectedPath)); final ByteArrayOutputStream bufOut = new ByteArrayOutputStream((int) file.length() * 4 / 3); final EncodingOutputStream output = EncodingOutputStream.base64(bufOut, 64); try { Streams.pipeAll(StreamUtil.makeStream(file), output); } finally { StreamUtil.closeStream(output); } assertEquals(ByteUtil.toString(bufOut.toByteArray()), expected); } }