From f4bba2b57f4d0e616010a2c25d92d5656bede036 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Tue, 12 Apr 2016 00:23:31 +0200 Subject: Rework log item caching, might work better or at least give a better understanding what goes wrong (closes #455) --- .../de/blinkt/openvpn/core/TestLogFileHandler.java | 81 ++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 main/src/test/java/de/blinkt/openvpn/core/TestLogFileHandler.java (limited to 'main/src/test') diff --git a/main/src/test/java/de/blinkt/openvpn/core/TestLogFileHandler.java b/main/src/test/java/de/blinkt/openvpn/core/TestLogFileHandler.java new file mode 100644 index 00000000..f86dbcdc --- /dev/null +++ b/main/src/test/java/de/blinkt/openvpn/core/TestLogFileHandler.java @@ -0,0 +1,81 @@ +package de.blinkt.openvpn.core; + +import android.annotation.SuppressLint; +import android.os.Looper; +import android.os.Message; +import android.util.Log; + +import junit.framework.Assert; + +import org.junit.Before; +import org.junit.Test; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.StringBufferInputStream; +import java.util.Arrays; + +public class TestLogFileHandler { + + byte[] testUnescaped = new byte[] {0x00, 0x55, -27, 0x00, 0x56, 0x10, -128, 0x55, 0x54}; + byte[] expectedEscaped = new byte[] {0x55, 0x00, 0x00, 0x00, 0x09, 0x00, 0x56, 0x00, -27, 0x00, 0x56, 0x01, 0x10, -128, 0x56, 0x00, 0x54}; + private TestingLogFileHandler lfh; + + + @Before + public void setup() + { + lfh = new TestingLogFileHandler(); + } + + @Test + public void testWriteByteArray() throws IOException { + + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + + lfh.setLogFile(byteArrayOutputStream); + + lfh.writeEscapedBytes(testUnescaped); + + byte[] result = byteArrayOutputStream.toByteArray(); + Assert.assertTrue(Arrays.equals(expectedEscaped, result)); + } + + @Test + public void readByteArray() throws IOException { + + ByteArrayInputStream in = new ByteArrayInputStream(expectedEscaped); + + lfh.readCacheContents(in); + + Assert.assertTrue(Arrays.equals(testUnescaped, lfh.mRestoredByteArray)); + + } + + @SuppressLint("HandlerLeak") + static class TestingLogFileHandler extends LogFileHandler { + + public byte[] mRestoredByteArray; + + public TestingLogFileHandler() { + super(null); + } + + public void setLogFile(OutputStream out) { + mLogFile = out; + } + + @Override + public void readCacheContents(InputStream in) throws IOException { + super.readCacheContents(in); + } + + @Override + protected void restoreLogItem(byte[] buf, int len) { + mRestoredByteArray = Arrays.copyOf(buf, len); + } + } +} \ No newline at end of file -- cgit v1.2.3