From f8ec9418d12d2c653746a710207fc86f6e62c2d4 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Fri, 19 Jul 2013 16:08:36 +0200 Subject: [PATCH] Fixed bug in StringReplacer --- .../app/helpers/StringReplacer.java | 6 ++-- .../app/helpers/StringReplacerTest.java | 29 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 app/test/processing/app/helpers/StringReplacerTest.java diff --git a/app/src/processing/app/helpers/StringReplacer.java b/app/src/processing/app/helpers/StringReplacer.java index 2ab42896a..60445e063 100644 --- a/app/src/processing/app/helpers/StringReplacer.java +++ b/app/src/processing/app/helpers/StringReplacer.java @@ -57,8 +57,10 @@ public class StringReplacer { for (String i : src.split(" ")) { if (escapingChar == null) { // If the first char is not an escape char.. - String first = i.substring(0, 1); - if (!quoteChars.contains(first)) { + String first = null; + if (i.length() > 0) + first = i.substring(0, 1); + if (first == null || !quoteChars.contains(first)) { if (i.trim().length() != 0 || acceptEmptyArguments) res.add(i); continue; diff --git a/app/test/processing/app/helpers/StringReplacerTest.java b/app/test/processing/app/helpers/StringReplacerTest.java new file mode 100644 index 000000000..90ecd0144 --- /dev/null +++ b/app/test/processing/app/helpers/StringReplacerTest.java @@ -0,0 +1,29 @@ +package processing.app.helpers; + +import static org.junit.Assert.assertArrayEquals; + +import org.junit.Test; + +public class StringReplacerTest { + + @Test + public void quotingCheck() throws Exception { + String in = "a\"bc ab'c 'abc abc' "; + in += "\"abc abc\" '\"abc abc\"' "; + in += "\"'abc abc'\""; + String[] res = StringReplacer.quotedSplit(in, "\"'", false); + assertArrayEquals(res, new String[] { "a\"bc", "ab'c", "abc abc", + "abc abc", "\"abc abc\"", "'abc abc'" }); + } + + @Test + public void quotingCheckWithEmptyStringsAccepted() throws Exception { + String in = "a\"bc ab'c 'abc abc' "; + in += "\"abc abc\" '\"abc abc\"' "; + in += "\"'abc abc'\""; + String[] res = StringReplacer.quotedSplit(in, "\"'", true); + assertArrayEquals(res, new String[] { "a\"bc", "ab'c", "", "", "abc abc", + "abc abc", "\"abc abc\"", "'abc abc'" }); + } + +}