/** * This test really pushes the boundaries of what we support. In general the splitter's behaviour * is not well defined if the char sequence it's splitting is mutated during iteration. */ private void assertSplitterIterableIsLazy(Splitter splitter) { StringBuilder builder = new StringBuilder(); Iterator<String> iterator = splitter.split(builder).iterator(); builder.append("A,"); assertEquals("A", iterator.next()); builder.append("B,"); assertEquals("B", iterator.next()); builder.append("C"); assertEquals("C", iterator.next()); assertFalse(iterator.hasNext()); }
public void testSplitterIterableIsUnmodifiable_char() { assertIteratorIsUnmodifiable(COMMA_SPLITTER.split("a,b").iterator()); }
public void testSplitterIterableIsLazy_char() { assertSplitterIterableIsLazy(COMMA_SPLITTER); }
public void testStringSplitWithEmptyString() { try { Splitter.on(""); fail(); } catch (IllegalArgumentException expected) { } }
@GwtIncompatible // java.util.regex.Pattern public void testPatternSplitOnOnlyDelimitersOmitEmptyStrings() { Iterable<String> empty = Splitter.on(literalDotPattern()).omitEmptyStrings().split("..."); assertThat(empty).isEmpty(); }
public void testToString() { assertEquals("[]", COMMA_SPLITTER.split("").toString()); assertEquals("[a, b, c]", COMMA_SPLITTER.split("a,b,c").toString()); assertEquals("[yam, bam, jam, ham]", Splitter.on(", ").split("yam, bam, jam, ham").toString()); }
public void testSplitNullString() { try { COMMA_SPLITTER.split(null); fail(); } catch (NullPointerException expected) { } }
@GwtIncompatible // java.util.regex.Pattern public void testPatternSplitWithDoubleDelimiterOmitEmptyStrings() { String doubled = "a..b.c"; Iterable<String> letters = Splitter.on(literalDotPattern()).omitEmptyStrings().split(doubled); assertThat(letters).containsExactly("a", "b", "c").inOrder(); }
public void testToString() { assertEquals("[]", COMMA_SPLITTER.split("").toString()); assertEquals("[a, b, c]", COMMA_SPLITTER.split("a,b,c").toString()); assertEquals("[yam, bam, jam, ham]", Splitter.on(", ").split("yam, bam, jam, ham").toString()); }
private void assertIteratorIsUnmodifiable(Iterator<?> iterator) { iterator.next(); try { iterator.remove(); fail(); } catch (UnsupportedOperationException expected) { } }
@GwtIncompatible // java.util.regex.Pattern public void testPatternSplitEmptyToken() { String emptyToken = "a. .c"; Iterable<String> letters = Splitter.on(literalDotPattern()).trimResults().split(emptyToken); assertThat(letters).containsExactly("a", "", "c").inOrder(); }
/** * This test really pushes the boundaries of what we support. In general the splitter's behaviour * is not well defined if the char sequence it's splitting is mutated during iteration. */ private void assertSplitterIterableIsLazy(Splitter splitter) { StringBuilder builder = new StringBuilder(); Iterator<String> iterator = splitter.split(builder).iterator(); builder.append("A,"); assertEquals("A", iterator.next()); builder.append("B,"); assertEquals("B", iterator.next()); builder.append("C"); assertEquals("C", iterator.next()); assertFalse(iterator.hasNext()); }
public void testSplitterIterableIsLazy_string() { assertSplitterIterableIsLazy(Splitter.on(",")); }
public void testSplitterIterableIsUnmodifiable_string() { assertIteratorIsUnmodifiable(Splitter.on(",").split("a,b").iterator()); }
public void testInvalidZeroLimit() { try { COMMA_SPLITTER.limit(0); fail(); } catch (IllegalArgumentException expected) { } }
@GwtIncompatible // java.util.regex.Pattern public void testPatternSplitEmptyTokenOmitEmptyStrings() { String emptyToken = "a. .c"; Iterable<String> letters = Splitter.on(literalDotPattern()).omitEmptyStrings().trimResults().split(emptyToken); assertThat(letters).containsExactly("a", "c").inOrder(); }
@GwtIncompatible // java.util.regex.Pattern @AndroidIncompatible // not clear that j.u.r.Matcher promises to handle mutations during use public void testSplitterIterableIsLazy_pattern() { if (!CommonPattern.isPcreLike()) { return; } assertSplitterIterableIsLazy(Splitter.onPattern(",")); }
@GwtIncompatible // java.util.regex.Pattern public void testSplitterIterableIsUnmodifiable_pattern() { assertIteratorIsUnmodifiable(Splitter.on(Pattern.compile(",")).split("a,b").iterator()); }
public void testMapSplitter_emptySeparator() { try { COMMA_SPLITTER.withKeyValueSeparator(""); fail(); } catch (IllegalArgumentException expected) { } }
@GwtIncompatible // java.util.regex.Pattern public void testPatternSplitOnOnlyDelimiter() { Iterable<String> blankblank = Splitter.on(literalDotPattern()).split("."); assertThat(blankblank).containsExactly("", "").inOrder(); }