X-Git-Url: http://git.nikiroo.be/?p=fanfix.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Ftest_code%2FReplaceOutputStreamTest.java;fp=src%2Fbe%2Fnikiroo%2Futils%2Ftest_code%2FReplaceOutputStreamTest.java;h=1db3397af9a09b4d32eb91eec99f83e70989c29c;hp=0000000000000000000000000000000000000000;hb=d46b7b96f94e88a776bcd2dfd756549ffb300cc9;hpb=c9994f27667bc421bcd448d39e55774fddf5c431 diff --git a/src/be/nikiroo/utils/test_code/ReplaceOutputStreamTest.java b/src/be/nikiroo/utils/test_code/ReplaceOutputStreamTest.java new file mode 100644 index 0000000..1db3397 --- /dev/null +++ b/src/be/nikiroo/utils/test_code/ReplaceOutputStreamTest.java @@ -0,0 +1,168 @@ +package be.nikiroo.utils.test_code; + +import java.io.ByteArrayOutputStream; + +import be.nikiroo.utils.streams.ReplaceOutputStream; +import be.nikiroo.utils.test.TestCase; +import be.nikiroo.utils.test.TestLauncher; + +class ReplaceOutputStreamTest extends TestLauncher { + public ReplaceOutputStreamTest(String[] args) { + super("ReplaceOutputStream test", args); + + addTest(new TestCase("Single write, empty bytes replaces") { + @Override + public void test() throws Exception { + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + ReplaceOutputStream out = new ReplaceOutputStream(bout, + new byte[0], new byte[0]); + + byte[] data = new byte[] { 42, 12, 0, 127 }; + + out.write(data); + out.close(); + + checkArrays(this, "FIRST", bout, data); + } + }); + + addTest(new TestCase("Multiple writes, empty Strings replaces") { + @Override + public void test() throws Exception { + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + ReplaceOutputStream out = new ReplaceOutputStream(bout, "", ""); + + byte[] data1 = new byte[] { 42, 12, 0, 127 }; + byte[] data2 = new byte[] { 15, 55 }; + byte[] data3 = new byte[] {}; + + byte[] dataAll = new byte[] { 42, 12, 0, 127, 15, 55 }; + + out.write(data1); + out.write(data2); + out.write(data3); + out.close(); + + checkArrays(this, "FIRST", bout, dataAll); + } + }); + + addTest(new TestCase("Single write, bytes replaces") { + @Override + public void test() throws Exception { + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + ReplaceOutputStream out = new ReplaceOutputStream(bout, + new byte[] { 12 }, new byte[] { 55 }); + + byte[] data = new byte[] { 42, 12, 0, 127 }; + + out.write(data); + out.close(); + + checkArrays(this, "FIRST", bout, new byte[] { 42, 55, 0, 127 }); + } + }); + + addTest(new TestCase("Multiple writes, Strings replaces") { + @Override + public void test() throws Exception { + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + ReplaceOutputStream out = new ReplaceOutputStream(bout, "(-)", + "(.)"); + + byte[] data1 = "un mot ".getBytes("UTF-8"); + byte[] data2 = "(-) of twee ".getBytes("UTF-8"); + byte[] data3 = "(-) makes the difference".getBytes("UTF-8"); + + out.write(data1); + out.write(data2); + out.write(data3); + out.close(); + + checkArrays(this, "FIRST", bout, + "un mot (.) of twee (.) makes the difference" + .getBytes("UTF-8")); + } + }); + + addTest(new TestCase("Single write, longer bytes replaces") { + @Override + public void test() throws Exception { + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + ReplaceOutputStream out = new ReplaceOutputStream(bout, + new byte[] { 12 }, new byte[] { 55, 55, 66 }); + + byte[] data = new byte[] { 42, 12, 0, 127 }; + + out.write(data); + out.close(); + + checkArrays(this, "FIRST", bout, new byte[] { 42, 55, 55, 66, + 0, 127 }); + } + }); + + addTest(new TestCase("Single write, shorter bytes replaces") { + @Override + public void test() throws Exception { + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + ReplaceOutputStream out = new ReplaceOutputStream(bout, + new byte[] { 12, 0 }, new byte[] { 55 }); + + byte[] data = new byte[] { 42, 12, 0, 127 }; + + out.write(data); + out.close(); + + checkArrays(this, "FIRST", bout, new byte[] { 42, 55, 127 }); + } + }); + + addTest(new TestCase("Single write, remove bytes replaces") { + @Override + public void test() throws Exception { + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + ReplaceOutputStream out = new ReplaceOutputStream(bout, + new byte[] { 12 }, new byte[] {}); + + byte[] data = new byte[] { 42, 12, 0, 127 }; + + out.write(data); + out.close(); + + checkArrays(this, "FIRST", bout, new byte[] { 42, 0, 127 }); + } + }); + } + + static void checkArrays(TestCase test, String prefix, + ByteArrayOutputStream bout, byte[] expected) throws Exception { + byte[] actual = bout.toByteArray(); + + if (false) { + System.out.print("\nExpected data: [ "); + for (int i = 0; i < expected.length; i++) { + if (i > 0) + System.out.print(", "); + System.out.print(expected[i]); + } + System.out.println(" ]"); + + System.out.print("Actual data : [ "); + for (int i = 0; i < actual.length; i++) { + if (i > 0) + System.out.print(", "); + System.out.print(actual[i]); + } + System.out.println(" ]"); + } + + test.assertEquals("The " + prefix + + " resulting array has not the correct number of items", + expected.length, actual.length); + for (int i = 0; i < actual.length; i++) { + test.assertEquals(prefix + ": item " + i + + " (0-based) is not the same", expected[i], actual[i]); + } + } +}