From 9e075bff4dd9e586f3e6257dc10f9cbe44c061e4 Mon Sep 17 00:00:00 2001 From: Niki Roo Date: Sun, 12 May 2019 14:03:42 +0200 Subject: [PATCH] serial: fix Importer, more tests --- src/be/nikiroo/utils/serial/Importer.java | 2 +- .../utils/streams/NextableInputStream.java | 6 +-- .../test_code/NextableInputStreamTest.java | 53 +++++++++++++++++++ .../nikiroo/utils/test_code/SerialTest.java | 27 ++++++++++ 4 files changed, 84 insertions(+), 4 deletions(-) diff --git a/src/be/nikiroo/utils/serial/Importer.java b/src/be/nikiroo/utils/serial/Importer.java index 2608db2..81814df 100644 --- a/src/be/nikiroo/utils/serial/Importer.java +++ b/src/be/nikiroo/utils/serial/Importer.java @@ -232,7 +232,7 @@ public class Importer { nameThenContent.next(); String fieldName = IOUtils.readSmallStream(nameThenContent); - if (nameThenContent.next() && !nameThenContent.eof()) { + if (nameThenContent.nextAll() && !nameThenContent.eof()) { // field value is direct or custom Object value = null; value = SerialUtils.decode(nameThenContent); diff --git a/src/be/nikiroo/utils/streams/NextableInputStream.java b/src/be/nikiroo/utils/streams/NextableInputStream.java index fb4d01b..dcab472 100644 --- a/src/be/nikiroo/utils/streams/NextableInputStream.java +++ b/src/be/nikiroo/utils/streams/NextableInputStream.java @@ -218,7 +218,7 @@ public class NextableInputStream extends BufferedInputStream { return true; } - // If started, must be stopped an no more data to continue + // If started, must be stopped and no more data to continue // i.e., sub-stream must be spent if (!stopped || hasMoreData()) { return false; @@ -265,8 +265,8 @@ public class NextableInputStream extends BufferedInputStream { data = new String(Arrays.copyOfRange(buffer, 0, stop), "UTF-8"); } catch (UnsupportedEncodingException e) { } - if (data.length() > 50) { - data = data.substring(0, 47) + "..."; + if (data.length() > 200) { + data = data.substring(0, 197) + "..."; } } String rep = String.format( diff --git a/src/be/nikiroo/utils/test_code/NextableInputStreamTest.java b/src/be/nikiroo/utils/test_code/NextableInputStreamTest.java index cfb205b..463a123 100644 --- a/src/be/nikiroo/utils/test_code/NextableInputStreamTest.java +++ b/src/be/nikiroo/utils/test_code/NextableInputStreamTest.java @@ -263,6 +263,59 @@ public class NextableInputStreamTest extends TestLauncher { in.close(); } }); + + addTest(new TestCase("Bytes NextAll test") { + @Override + public void test() throws Exception { + byte[] data = new byte[] { 42, 12, 0, 127, 12, 51, 11, 12 }; + NextableInputStream in = new NextableInputStream( + new ByteArrayInputStream(data), + new NextableInputStreamStep(12)); + + checkNext(this, "FIRST", in, new byte[] { 42 }); + checkNextAll(this, "SECOND", in, new byte[] { 0, 127, 12, 51, + 11, 12 }); + } + }); + + addTest(new TestCase("String NextAll test") { + @Override + public void test() throws Exception { + String d1 = "^java.lang.String"; + String d2 = "\"http://example.com/query.html\""; + String data = d1 + ":" + d2; + NextableInputStream in = new NextableInputStream( + new ByteArrayInputStream(data.getBytes("UTF-8")), + new NextableInputStreamStep(':')); + + checkNext(this, "FIRST", in, d1.getBytes("UTF-8")); + checkNextAll(this, "SECOND", in, d2.getBytes("UTF-8")); + } + }); + + addTest(new TestCase("NextAll in Next test") { + @Override + public void test() throws Exception { + String line1 = "première ligne"; + String d1 = "^java.lang.String"; + String d2 = "\"http://example.com/query.html\""; + String line3 = "end of lines"; + String data = line1 + "\n" + d1 + ":" + d2 + "\n" + line3; + + NextableInputStream inL = new NextableInputStream( + new ByteArrayInputStream(data.getBytes("UTF-8")), + new NextableInputStreamStep('\n')); + + checkNext(this, "Line 1", inL, line1.getBytes("UTF-8")); + inL.next(); + + NextableInputStream in = new NextableInputStream(inL, + new NextableInputStreamStep(':')); + + checkNext(this, "Line 2 FIRST", in, d1.getBytes("UTF-8")); + checkNextAll(this, "Line 2 SECOND", in, d2.getBytes("UTF-8")); + } + }); } static void checkNext(TestCase test, String prefix, NextableInputStream in, diff --git a/src/be/nikiroo/utils/test_code/SerialTest.java b/src/be/nikiroo/utils/test_code/SerialTest.java index 1581965..bf08f5c 100644 --- a/src/be/nikiroo/utils/test_code/SerialTest.java +++ b/src/be/nikiroo/utils/test_code/SerialTest.java @@ -157,6 +157,19 @@ class SerialTest extends TestLauncher { encodeRecodeTest(this, data); } }); + addTest(new TestCase("Import/Export String in object") { + @Override + public void test() throws Exception { + Data data = new DataString("fanfan"); + encodeRecodeTest(this, data); + data = new DataString("http://example.com/query.html"); + encodeRecodeTest(this, data); + data = new DataString("Test|Ché|http://|\"\\\"Pouch\\"); + encodeRecodeTest(this, data); + data = new DataString("Test|Ché\\n|\nhttp://|\"\\\"Pouch\\"); + encodeRecodeTest(this, data); + } + }); addTest(new TestCase("Import/Export with nested objects forming a loop") { @Override public void test() throws Exception { @@ -233,6 +246,20 @@ class SerialTest extends TestLauncher { } } + @SuppressWarnings("unused") + class DataString extends Data { + private String data; + + @SuppressWarnings("synthetic-access") + private DataString() { + } + + @SuppressWarnings("synthetic-access") + public DataString(String data) { + this.data = data; + } + } + @SuppressWarnings("unused") class DataLoop extends Data { public DataLoop next; -- 2.27.0