Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24cd2617 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Filter out empty entry from more keys CSV

Change-Id: I9a26aaa58f0f502b3bfef9de422370d2b0add8d8
parent 909b2940
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -325,7 +325,7 @@ public class KeySpecParser {
            return null;
        }
        if (Utils.codePointCount(text) == 1) {
            return new String[] { text };
            return text.codePointAt(0) == COMMA ? null : new String[] { text };
        }

        ArrayList<String> list = null;
@@ -333,10 +333,13 @@ public class KeySpecParser {
        for (int pos = 0; pos < size; pos++) {
            final char c = text.charAt(pos);
            if (c == COMMA) {
                // Skip empty entry.
                if (pos - start > 0) {
                    if (list == null) {
                        list = new ArrayList<String>();
                    }
                    list.add(text.substring(start, pos));
                }
                // Skip comma
                start = pos + 1;
            } else if (c == ESCAPE_CHAR) {
@@ -344,10 +347,13 @@ public class KeySpecParser {
                pos++;
            }
        }
        final String remain = (size - start > 0) ? text.substring(start) : null;
        if (list == null) {
            return new String[] { text.substring(start) };
            return remain != null ? new String[] { remain } : null;
        } else {
            list.add(text.substring(start));
            if (remain != null) {
                list.add(remain);
            }
            return list.toArray(new String[list.size()]);
        }
    }
+8 −2
Original line number Diff line number Diff line
@@ -42,7 +42,8 @@ public class KeySpecParserCsvTests extends AndroidTestCase {
        final String actual[] = KeySpecParser.parseCsvString(value, mTestResources,
                R.string.empty_string);
        if (expected.length == 0) {
            assertNull(message, actual);
            assertNull(message + ": expected=null actual=" + Arrays.toString(actual),
                    actual);
            return;
        }
        assertEquals(message + ": expected=" + Arrays.toString(expected)
@@ -74,6 +75,11 @@ public class KeySpecParserCsvTests extends AndroidTestCase {

    public void testParseCsvTextZero() {
        assertTextArray("Empty string", "");
        assertTextArray("Empty entry", ",");
        assertTextArray("Empty entry at beginning", ",a", "a");
        assertTextArray("Empty entry at end", "a,", "a");
        assertTextArray("Empty entry at middle", "a,,b", "a", "b");
        assertTextArray("Empty entries with escape", ",a,b\\,c,,d,", "a", "b\\,c", "d");
    }

    public void testParseCsvTextSingle() {
@@ -82,7 +88,7 @@ public class KeySpecParserCsvTests extends AndroidTestCase {
        assertTextArray("Single escape", "\\", "\\");
        assertTextArray("Space", " ", " ");
        assertTextArray("Single label", "abc", "abc");
        assertTextArray("Single srrogate pairs label", SURROGATE2, SURROGATE2);
        assertTextArray("Single surrogate pairs label", SURROGATE2, SURROGATE2);
        assertTextArray("Spaces", "   ", "   ");
        assertTextArray("Spaces in label", "a b c", "a b c");
        assertTextArray("Spaces at beginning of label", " abc", " abc");