blob: a4f2e25c03f39c67530aa7ee5bc9a08e36fdf2bc [file] [log] [blame]
/*=============================================================================#
# Copyright (c) 2021 Stephan Wahlbrink and others.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
# which is available at https://www.apache.org/licenses/LICENSE-2.0.
#
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
#
# Contributors:
# Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
#=============================================================================*/
package org.eclipse.statet.jcommons.util;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.eclipse.statet.jcommons.collections.ImCollections.emptyList;
import static org.eclipse.statet.jcommons.collections.ImCollections.newList;
import org.junit.jupiter.api.Test;
import org.eclipse.statet.jcommons.lang.NonNullByDefault;
@NonNullByDefault
public class StringUtilsTest {
@Test
public void formatCodePoint() {
assertEquals("U+0000", StringUtils.formatCodePoint(0)); // MIN
assertEquals("U+0001", StringUtils.formatCodePoint(1));
assertEquals("U+0041", StringUtils.formatCodePoint('A'));
assertEquals("U+FFFF", StringUtils.formatCodePoint(0xFFFF));
assertEquals("U+010000", StringUtils.formatCodePoint(0x10000));
assertEquals("U+10FFFF", StringUtils.formatCodePoint(0x10FFFF)); // MAX
assertEquals("U+FFFFFFFF", StringUtils.formatCodePoint(0xFFFFFFFF)); // <invalid>
}
@Test
public void firstIndexOfNonTrim_StringFromToIndex() {
assertEquals(0, StringUtils.firstIndexOfNonTrim("", 0, 0));
assertEquals(1, StringUtils.firstIndexOfNonTrim(" ", 0, 1));
assertEquals(2, StringUtils.firstIndexOfNonTrim(" \t", 0, 2));
assertEquals(4, StringUtils.firstIndexOfNonTrim(" \n\t ", 0, 4));
assertEquals(1, StringUtils.firstIndexOfNonTrim("\n", 0, 1));
assertEquals(0, StringUtils.firstIndexOfNonTrim("abc", 0, 1));
assertEquals(3, StringUtils.firstIndexOfNonTrim(" \n\ta ", 0, 5));
assertEquals(1, StringUtils.firstIndexOfNonTrim(" ", 1, 1));
assertEquals(2, StringUtils.firstIndexOfNonTrim(" \t", 1, 2));
assertEquals(4, StringUtils.firstIndexOfNonTrim(" \n\t ", 2, 4));
assertEquals(1, StringUtils.firstIndexOfNonTrim("abc", 1, 2));
assertEquals(3, StringUtils.firstIndexOfNonTrim(" \n\ta ", 2, 5));
assertEquals(0, StringUtils.firstIndexOfNonTrim(" ", 0, 0));
assertEquals(1, StringUtils.firstIndexOfNonTrim(" \t", 0, 1));
assertEquals(2, StringUtils.firstIndexOfNonTrim(" \n\t ", 0, 2));
assertEquals(1, StringUtils.firstIndexOfNonTrim("abc", 1, 2));
assertEquals(2, StringUtils.firstIndexOfNonTrim(" \na\t ", 1, 3));
}
@Test
@SuppressWarnings("null")
public void firstIndexOfNonTrim_StringFromToIndex_argCheck() {
assertThrows(NullPointerException.class, () ->
StringUtils.firstIndexOfNonTrim(null, 0, 4) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstIndexOfNonTrim(null, 0, 0) );
assertThrows(StringIndexOutOfBoundsException.class, () ->
StringUtils.firstIndexOfNonTrim("abc", -1, 0) );
assertThrows(StringIndexOutOfBoundsException.class, () ->
StringUtils.firstIndexOfNonTrim("abc", 0, 4) );
}
@Test
public void firstIndexOfNonTrim_String() {
assertEquals(0, StringUtils.firstIndexOfNonTrim(""));
assertEquals(1, StringUtils.firstIndexOfNonTrim(" "));
assertEquals(2, StringUtils.firstIndexOfNonTrim(" \t"));
assertEquals(4, StringUtils.firstIndexOfNonTrim(" \n\t "));
assertEquals(1, StringUtils.firstIndexOfNonTrim("\n"));
assertEquals(0, StringUtils.firstIndexOfNonTrim("abc"));
assertEquals(3, StringUtils.firstIndexOfNonTrim(" \n\ta "));
}
@Test
@SuppressWarnings("null")
public void firstIndexOfNonTrim_String_argCheck() {
assertThrows(NullPointerException.class, () ->
StringUtils.firstIndexOfNonTrim(null) );
}
@Test
public void lastIndexOfNonTrim_StringFromToIndex() {
assertEquals(0, StringUtils.lastIndexOfNonTrim("", 0, 0));
assertEquals(0, StringUtils.lastIndexOfNonTrim(" ", 0, 1));
assertEquals(0, StringUtils.lastIndexOfNonTrim(" \t", 0, 2));
assertEquals(0, StringUtils.lastIndexOfNonTrim(" \n\t ", 0, 4));
assertEquals(0, StringUtils.lastIndexOfNonTrim("\n", 0, 1));
assertEquals(1, StringUtils.lastIndexOfNonTrim("abc", 0, 1));
assertEquals(4, StringUtils.lastIndexOfNonTrim(" \n\ta ", 0, 5));
assertEquals(1, StringUtils.lastIndexOfNonTrim(" ", 1, 1));
assertEquals(1, StringUtils.lastIndexOfNonTrim(" \t", 1, 2));
assertEquals(2, StringUtils.lastIndexOfNonTrim(" \n\t ", 2, 4));
assertEquals(2, StringUtils.lastIndexOfNonTrim("abc", 1, 2));
assertEquals(4, StringUtils.lastIndexOfNonTrim(" \n\ta ", 2, 5));
assertEquals(0, StringUtils.lastIndexOfNonTrim(" ", 0, 0));
assertEquals(0, StringUtils.lastIndexOfNonTrim(" \t", 0, 1));
assertEquals(0, StringUtils.lastIndexOfNonTrim(" \n\t ", 0, 2));
assertEquals(2, StringUtils.lastIndexOfNonTrim("abc", 1, 2));
assertEquals(3, StringUtils.lastIndexOfNonTrim(" \na\t ", 1, 3));
}
@Test
@SuppressWarnings("null")
public void lastIndexOfNonTrim_StringFromToIndex_argCheck() {
assertThrows(NullPointerException.class, () ->
StringUtils.lastIndexOfNonTrim(null, 0, 4) );
assertThrows(NullPointerException.class, () ->
StringUtils.lastIndexOfNonTrim(null, 0, 0) );
assertThrows(StringIndexOutOfBoundsException.class, () ->
StringUtils.lastIndexOfNonTrim("abc", -1, 0) );
assertThrows(StringIndexOutOfBoundsException.class, () ->
StringUtils.lastIndexOfNonTrim("abc", 0, 4) );
}
@Test
public void lastIndexOfNonTrim_String() {
assertEquals(0, StringUtils.lastIndexOfNonTrim(""));
assertEquals(0, StringUtils.lastIndexOfNonTrim(" "));
assertEquals(0, StringUtils.lastIndexOfNonTrim(" \t"));
assertEquals(0, StringUtils.lastIndexOfNonTrim(" \n\t "));
assertEquals(0, StringUtils.lastIndexOfNonTrim("\n"));
assertEquals(3, StringUtils.lastIndexOfNonTrim("abc"));
assertEquals(4, StringUtils.lastIndexOfNonTrim(" \n\ta "));
}
@Test
@SuppressWarnings("null")
public void lastIndexOfNonTrim_String_argCheck() {
assertThrows(NullPointerException.class, () ->
StringUtils.lastIndexOfNonTrim(null) );
}
@Test
public void trim_StringFromToIndex() {
assertEquals("", StringUtils.trim("", 0, 0));
assertEquals("", StringUtils.trim(" ", 0, 1));
assertEquals("", StringUtils.trim(" \t", 0, 2));
assertEquals("", StringUtils.trim(" \n\t ", 0, 4));
assertEquals("", StringUtils.trim("\n", 0, 1));
assertEquals("a", StringUtils.trim("abc", 0, 1));
assertEquals("a", StringUtils.trim(" \n\ta ", 0, 5));
assertEquals("", StringUtils.trim(" ", 1, 1));
assertEquals("", StringUtils.trim(" \t", 1, 2));
assertEquals("", StringUtils.trim(" \n\t ", 2, 4));
assertEquals("b", StringUtils.trim("abc", 1, 2));
assertEquals("a", StringUtils.trim(" \n\ta ", 2, 5));
assertEquals("", StringUtils.trim(" ", 0, 0));
assertEquals("", StringUtils.trim(" \t", 0, 1));
assertEquals("", StringUtils.trim(" \n\t ", 0, 2));
assertEquals("b", StringUtils.trim("abc", 1, 2));
assertEquals("a", StringUtils.trim(" \na\t ", 1, 3));
assertEquals("", StringUtils.trim(" \na\t ", 1, 2));
}
@Test
public void isTrimEmpty_StringFromToIndex() {
assertTrue(StringUtils.isTrimEmpty("", 0, 0));
assertTrue(StringUtils.isTrimEmpty(" ", 0, 1));
assertTrue(StringUtils.isTrimEmpty(" \t", 0, 2));
assertTrue(StringUtils.isTrimEmpty(" \n\t ", 0, 4));
assertTrue(StringUtils.isTrimEmpty("\n", 0, 1));
assertFalse(StringUtils.isTrimEmpty("abc", 0, 1));
assertFalse(StringUtils.isTrimEmpty(" \n\ta ", 0, 5));
assertTrue(StringUtils.isTrimEmpty(" ", 1, 1));
assertTrue(StringUtils.isTrimEmpty(" \t", 1, 2));
assertTrue(StringUtils.isTrimEmpty(" \n\t ", 2, 4));
assertFalse(StringUtils.isTrimEmpty("abc", 1, 2));
assertFalse(StringUtils.isTrimEmpty(" \n\ta ", 2, 5));
assertTrue(StringUtils.isTrimEmpty(" ", 0, 0));
assertTrue(StringUtils.isTrimEmpty(" \t", 0, 1));
assertTrue(StringUtils.isTrimEmpty(" \n\t ", 0, 2));
assertFalse(StringUtils.isTrimEmpty("abc", 1, 2));
assertFalse(StringUtils.isTrimEmpty(" \na\t ", 1, 3));
assertTrue(StringUtils.isTrimEmpty(" \na\t ", 1, 2));
}
@Test
@SuppressWarnings("null")
public void isTrimEmpty_StringFromToIndex_argCheck() {
assertThrows(NullPointerException.class, () ->
StringUtils.isTrimEmpty(null, 0, 4) );
assertThrows(NullPointerException.class, () ->
StringUtils.isTrimEmpty(null, 0, 0) );
}
@Test
public void isTrimEmpty_String() {
assertTrue(StringUtils.isTrimEmpty(""));
assertTrue(StringUtils.isTrimEmpty(" "));
assertTrue(StringUtils.isTrimEmpty(" \t"));
assertTrue(StringUtils.isTrimEmpty(" \n\t "));
assertTrue(StringUtils.isTrimEmpty("\n"));
assertFalse(StringUtils.isTrimEmpty("a"));
assertFalse(StringUtils.isTrimEmpty(" \n\ta "));
}
@Test
@SuppressWarnings("null")
public void isTrimEmpty_String_argCheck() {
assertThrows(NullPointerException.class, () ->
StringUtils.isTrimEmpty(null) );
}
@Test
public void containsAny_String() {
boolean match;
match= StringUtils.containsAny("xxxxxxxxxx", emptyList());
assertFalse(match);
match= StringUtils.containsAny("xxxxxxxxxx", newList("a", "ab", "abc"));
assertFalse(match);
match= StringUtils.containsAny("foobarabcd", newList("a", "ab", "abc"));
assertTrue(match);
match= StringUtils.containsAny("foobarabcd", newList("ab", "abc"));
assertTrue(match);
match= StringUtils.containsAny("foobarabcd", newList("ab", "ab"));
assertTrue(match);
match= StringUtils.containsAny("foobarabcd", newList("", "ab", "abc"));
assertTrue(match);
}
@Test
@SuppressWarnings("null")
public void containsAny_String_argCheck() {
assertThrows(NullPointerException.class, () ->
StringUtils.containsAny((String)null, newList("abc")) );
assertThrows(NullPointerException.class, () ->
StringUtils.containsAny("foobarabcd", null) );
// assertThrows(NullPointerException.class, () ->
// StringUtils.containsAny("foobarabcd", newList("abc", null)) );
}
@Test
public void containsAny_StringBuilder() {
boolean match;
match= StringUtils.containsAny(new StringBuilder("xxxxxxxxxx"), emptyList());
assertFalse(match);
match= StringUtils.containsAny(new StringBuilder("xxxxxxxxxx"), newList("a", "ab", "abc"));
assertFalse(match);
match= StringUtils.containsAny(new StringBuilder("foobarabcd"), newList("a", "ab", "abc"));
assertTrue(match);
match= StringUtils.containsAny(new StringBuilder("foobarabcd"), newList("ab", "abc"));
assertTrue(match);
match= StringUtils.containsAny(new StringBuilder("foobarabcd"), newList("ab", "ab"));
assertTrue(match);
match= StringUtils.containsAny(new StringBuilder("foobarabcd"), newList("", "ab", "abc"));
assertTrue(match);
}
@Test
@SuppressWarnings("null")
public void containsAny_StringBuilder_argCheck() {
assertThrows(NullPointerException.class, () ->
StringUtils.containsAny((StringBuilder)null, newList("abc")) );
assertThrows(NullPointerException.class, () ->
StringUtils.containsAny(new StringBuilder("foobarabcd"), null) );
// assertThrows(NullPointerException.class, () ->
// StringUtils.containsAny(new StringBuilder("foobarabcd"), newList("abc", null)) );
}
@Test
public void firstIndexOfAny_StringFromIndex() {
int match;
match= StringUtils.firstIndexOfAny("xxxxxxxxxx", emptyList(), 0);
assertEquals(-1, match);
match= StringUtils.firstIndexOfAny("xxxxxxxxxx", newList("a", "ab", "abc"), 0);
assertEquals(-1, match);
match= StringUtils.firstIndexOfAny("foobarabcd", newList("a", "ab", "abc"), 0);
assertEquals(4, match);
match= StringUtils.firstIndexOfAny("foobarabcd", newList("ab", "ab"), 0);
assertEquals(6, match);
match= StringUtils.firstIndexOfAny("foobarabcd", newList("", "ab", "abc"), 0);
assertEquals(0, match);
match= StringUtils.firstIndexOfAny("xxxxxxxxxx", emptyList(), 5);
assertEquals(-1, match);
match= StringUtils.firstIndexOfAny("xaxxabcxxx", newList("a", "ab", "abc"), 5);
assertEquals(-1, match);
match= StringUtils.firstIndexOfAny("foobarabcd", newList("a", "ab", "abc"), 5);
assertEquals(6, match);
match= StringUtils.firstIndexOfAny("foobarabcd", newList("", "ab", "abc"), 5);
assertEquals(5, match);
match= StringUtils.firstIndexOfAny("foobarabcd", newList("a", "ab", "abc"), "foobarabcd".length());
assertEquals(-1, match);
}
@Test
@SuppressWarnings("null")
public void firstIndexOfAny_StringFromIndex_argCheck() {
assertThrows(StringIndexOutOfBoundsException.class, () ->
StringUtils.firstIndexOfAny("foobarabcd", newList("abc"), -5) );
assertThrows(StringIndexOutOfBoundsException.class, () ->
StringUtils.firstIndexOfAny("foobarabcd", newList("abc"), 20) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstIndexOfAny((String)null, newList("abc"), 5) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstIndexOfAny("foobarabcd", null, 5) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstIndexOfAny("foobarabcd", newList("abc", null), 5) );
}
@Test
public void firstIndexOfAny_String() {
int match;
match= StringUtils.firstIndexOfAny("xxxxxxxxxx", emptyList());
assertEquals(-1, match);
match= StringUtils.firstIndexOfAny("xxxxxxxxxx", newList("a", "ab", "abc"));
assertEquals(-1, match);
match= StringUtils.firstIndexOfAny("foobarabcd", newList("a", "ab", "abc"));
assertEquals(4, match);
match= StringUtils.firstIndexOfAny("foobarabcd", newList("ab", "abc"));
assertEquals(6, match);
match= StringUtils.firstIndexOfAny("foobarabcd", newList("ab", "ab"));
assertEquals(6, match);
match= StringUtils.firstIndexOfAny("foobarabcd", newList("", "ab", "abc"));
assertEquals(0, match);
}
@Test
@SuppressWarnings("null")
public void firstIndexOfAny_String_argCheck() {
assertThrows(NullPointerException.class, () ->
StringUtils.firstIndexOfAny((String)null, newList("abc")) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstIndexOfAny("foobarabcd", null) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstIndexOfAny("foobarabcd", newList("abc", null)) );
}
@Test
public void firstIndexOfAny_StringBuilderFromIndex() {
int match;
match= StringUtils.firstIndexOfAny(new StringBuilder("xxxxxxxxxx"), emptyList(), 0);
assertEquals(-1, match);
match= StringUtils.firstIndexOfAny(new StringBuilder("xxxxxxxxxx"), newList("a", "ab", "abc"), 0);
assertEquals(-1, match);
match= StringUtils.firstIndexOfAny(new StringBuilder("foobarabcd"), newList("a", "ab", "abc"), 0);
assertEquals(4, match);
match= StringUtils.firstIndexOfAny(new StringBuilder("foobarabcd"), newList("ab", "ab"), 0);
assertEquals(6, match);
match= StringUtils.firstIndexOfAny(new StringBuilder("foobarabcd"), newList("", "ab", "abc"), 0);
assertEquals(0, match);
match= StringUtils.firstIndexOfAny(new StringBuilder("xxxxxxxxxx"), emptyList(), 5);
assertEquals(-1, match);
match= StringUtils.firstIndexOfAny(new StringBuilder("xaxxabcxxx"), newList("a", "ab", "abc"), 5);
assertEquals(-1, match);
match= StringUtils.firstIndexOfAny(new StringBuilder("foobarabcd"), newList("a", "ab", "abc"), 5);
assertEquals(6, match);
match= StringUtils.firstIndexOfAny(new StringBuilder("foobarabcd"), newList("", "ab", "abc"), 5);
assertEquals(5, match);
match= StringUtils.firstIndexOfAny(new StringBuilder("foobarabcd"), newList("a", "ab", "abc"), "foobarabcd".length());
assertEquals(-1, match);
}
@Test
@SuppressWarnings("null")
public void firstIndexOfAny_StringBuilderFromIndex_argCheck() {
assertThrows(StringIndexOutOfBoundsException.class, () ->
StringUtils.firstIndexOfAny(new StringBuilder("foobarabcd"), newList("abc"), -5) );
assertThrows(StringIndexOutOfBoundsException.class, () ->
StringUtils.firstIndexOfAny(new StringBuilder("foobarabcd"), newList("abc"), 20) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstIndexOfAny((StringBuilder)null, newList("abc"), 5) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstIndexOfAny(new StringBuilder("foobarabcd"), null, 5) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstIndexOfAny(new StringBuilder("foobarabcd"), newList("abc", null), 5) );
}
@Test
public void firstIndexOfAny_StringBuilder() {
int match;
match= StringUtils.firstIndexOfAny(new StringBuilder("xxxxxxxxxx"), emptyList());
assertEquals(-1, match);
match= StringUtils.firstIndexOfAny(new StringBuilder("xxxxxxxxxx"), newList("a", "ab", "abc"));
assertEquals(-1, match);
match= StringUtils.firstIndexOfAny(new StringBuilder("foobarabcd"), newList("a", "ab", "abc"));
assertEquals(4, match);
match= StringUtils.firstIndexOfAny(new StringBuilder("foobarabcd"), newList("ab", "abc"));
assertEquals(6, match);
match= StringUtils.firstIndexOfAny(new StringBuilder("foobarabcd"), newList("ab", "ab"));
assertEquals(6, match);
match= StringUtils.firstIndexOfAny(new StringBuilder("foobarabcd"), newList("", "ab", "abc"));
assertEquals(0, match);
}
@Test
@SuppressWarnings("null")
public void firstIndexOfAny_StringBuilder_argCheck() {
assertThrows(NullPointerException.class, () ->
StringUtils.firstIndexOfAny((StringBuilder)null, newList("abc")) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstIndexOfAny(new StringBuilder("foobarabcd"), null) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstIndexOfAny(new StringBuilder("foobarabcd"), newList("abc", null)) );
}
@Test
public void Match() {
StringUtils.Match match;
match= new StringUtils.Match("abc", 2);
assertEquals("abc", match.getString());
assertEquals(2, match.getStartIndex());
assertEquals(2 + 3, match.getEndIndex());
assertEquals(3, match.getLength());
}
@Test
@SuppressWarnings("null")
public void Match_argCheck() {
assertThrows(NullPointerException.class, () ->
new StringUtils.Match(null, 2) );
}
@Test
public void firstMatchOfAny_StringFromIndex() {
StringUtils.Match match;
match= StringUtils.firstMatchOfAny("xxxxxxxxxx", emptyList(), 0);
assertNull(match);
match= StringUtils.firstMatchOfAny("xxxxxxxxxx", newList("a", "ab", "abc"), 0);
assertNull(match);
match= StringUtils.firstMatchOfAny("foobarabcd", newList("a", "ab", "abc"), 0);
assertNotNull(match);
assertEquals("a", match.getString());
assertEquals(4, match.getStartIndex());
match= StringUtils.firstMatchOfAny("foobarabcd", newList("ab", "ab"), 0);
assertNotNull(match);
assertEquals("ab", match.getString());
assertEquals(6, match.getStartIndex());
match= StringUtils.firstMatchOfAny("foobarabcd", newList("", "ab", "abc"), 0);
assertNotNull(match);
assertEquals("", match.getString());
assertEquals(0, match.getStartIndex());
match= StringUtils.firstMatchOfAny("xxxxxxxxxx", emptyList(), 5);
assertNull(match);
match= StringUtils.firstMatchOfAny("xaxxabcxxx", newList("a", "ab", "abc"), 5);
assertNull(match);
match= StringUtils.firstMatchOfAny("foobarabcd", newList("a", "ab", "abc"), 5);
assertNotNull(match);
assertEquals("abc", match.getString());
assertEquals(6, match.getStartIndex());
match= StringUtils.firstMatchOfAny("foobarabcd", newList("", "ab", "abc"), 5);
assertNotNull(match);
assertEquals("", match.getString());
assertEquals(5, match.getStartIndex());
match= StringUtils.firstMatchOfAny("foobarabcd", newList("a", "ab", "abc"), "foobarabcd".length());
assertNull(match);
}
@Test
@SuppressWarnings("null")
public void firstMatchOfAny_StringFromIndex_argCheck() {
assertThrows(StringIndexOutOfBoundsException.class, () ->
StringUtils.firstMatchOfAny("foobarabcd", newList("abc"), -5) );
assertThrows(StringIndexOutOfBoundsException.class, () ->
StringUtils.firstMatchOfAny("foobarabcd", newList("abc"), 20) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstMatchOfAny((String)null, newList("abc"), 5) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstMatchOfAny("foobarabcd", null, 5) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstMatchOfAny("foobarabcd", newList("abc", null), 5) );
}
@Test
public void firstMatchOfAny_String() {
StringUtils.Match match;
match= StringUtils.firstMatchOfAny("xxxxxxxxxx", emptyList());
assertNull(match);
match= StringUtils.firstMatchOfAny("xxxxxxxxxx", newList("a", "ab", "abc"));
assertNull(match);
match= StringUtils.firstMatchOfAny("foobarabcd", newList("a", "ab", "abc"));
assertNotNull(match);
assertEquals("a", match.getString());
assertEquals(4, match.getStartIndex());
match= StringUtils.firstMatchOfAny("foobarabcd", newList("ab", "abc"));
assertNotNull(match);
assertEquals("abc", match.getString());
assertEquals(6, match.getStartIndex());
match= StringUtils.firstMatchOfAny("foobarabcd", newList("ab", "ab"));
assertNotNull(match);
assertEquals("ab", match.getString());
assertEquals(6, match.getStartIndex());
match= StringUtils.firstMatchOfAny("foobarabcd", newList("", "ab", "abc"));
assertNotNull(match);
assertEquals("", match.getString());
assertEquals(0, match.getStartIndex());
}
@Test
@SuppressWarnings("null")
public void firstMatchOfAny_String_argCheck() {
assertThrows(NullPointerException.class, () ->
StringUtils.firstMatchOfAny((String)null, newList("abc")) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstMatchOfAny("foobarabcd", null) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstMatchOfAny("foobarabcd", newList("abc", null)) );
}
@Test
public void firstMatchOfAny_StringBuilderFromIndex() {
StringUtils.Match match;
match= StringUtils.firstMatchOfAny(new StringBuilder("xxxxxxxxxx"), emptyList(), 0);
assertNull(match);
match= StringUtils.firstMatchOfAny(new StringBuilder("xxxxxxxxxx"), newList("a", "ab", "abc"), 0);
assertNull(match);
match= StringUtils.firstMatchOfAny(new StringBuilder("foobarabcd"), newList("a", "ab", "abc"), 0);
assertNotNull(match);
assertEquals("a", match.getString());
assertEquals(4, match.getStartIndex());
match= StringUtils.firstMatchOfAny(new StringBuilder("foobarabcd"), newList("ab", "ab"), 0);
assertNotNull(match);
assertEquals("ab", match.getString());
assertEquals(6, match.getStartIndex());
match= StringUtils.firstMatchOfAny(new StringBuilder("foobarabcd"), newList("", "ab", "abc"), 0);
assertNotNull(match);
assertEquals("", match.getString());
assertEquals(0, match.getStartIndex());
match= StringUtils.firstMatchOfAny(new StringBuilder("xxxxxxxxxx"), emptyList(), 5);
assertNull(match);
match= StringUtils.firstMatchOfAny(new StringBuilder("xaxxabcxxx"), newList("a", "ab", "abc"), 5);
assertNull(match);
match= StringUtils.firstMatchOfAny(new StringBuilder("foobarabcd"), newList("a", "ab", "abc"), 5);
assertNotNull(match);
assertEquals("abc", match.getString());
assertEquals(6, match.getStartIndex());
match= StringUtils.firstMatchOfAny(new StringBuilder("foobarabcd"), newList("", "ab", "abc"), 5);
assertNotNull(match);
assertEquals("", match.getString());
assertEquals(5, match.getStartIndex());
match= StringUtils.firstMatchOfAny(new StringBuilder("foobarabcd"), newList("a", "ab", "abc"), "foobarabcd".length());
assertNull(match);
}
@Test
@SuppressWarnings("null")
public void firstMatchOfAny_StringBuilderFromIndex_argCheck() {
assertThrows(StringIndexOutOfBoundsException.class, () ->
StringUtils.firstMatchOfAny(new StringBuilder("foobarabcd"), newList("abc"), -5) );
assertThrows(StringIndexOutOfBoundsException.class, () ->
StringUtils.firstMatchOfAny(new StringBuilder("foobarabcd"), newList("abc"), 20) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstMatchOfAny((StringBuilder)null, newList("abc"), 5) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstMatchOfAny(new StringBuilder("foobarabcd"), null, 5) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstMatchOfAny(new StringBuilder("foobarabcd"), newList("abc", null), 5) );
}
@Test
public void firstMatchOfAny_StringBuilder() {
StringUtils.Match match;
match= StringUtils.firstMatchOfAny(new StringBuilder("xxxxxxxxxx"), emptyList());
assertNull(match);
match= StringUtils.firstMatchOfAny(new StringBuilder("xxxxxxxxxx"), newList("a", "ab", "abc"));
assertNull(match);
match= StringUtils.firstMatchOfAny(new StringBuilder("foobarabcd"), newList("a", "ab", "abc"));
assertNotNull(match);
assertEquals("a", match.getString());
assertEquals(4, match.getStartIndex());
match= StringUtils.firstMatchOfAny(new StringBuilder("foobarabcd"), newList("ab", "abc"));
assertNotNull(match);
assertEquals("abc", match.getString());
assertEquals(6, match.getStartIndex());
match= StringUtils.firstMatchOfAny(new StringBuilder("foobarabcd"), newList("ab", "ab"));
assertNotNull(match);
assertEquals("ab", match.getString());
assertEquals(6, match.getStartIndex());
match= StringUtils.firstMatchOfAny(new StringBuilder("foobarabcd"), newList("", "ab", "abc"));
assertNotNull(match);
assertEquals("", match.getString());
assertEquals(0, match.getStartIndex());
}
@Test
@SuppressWarnings("null")
public void firstMatchOfAny_StringBuilder_argCheck() {
assertThrows(NullPointerException.class, () ->
StringUtils.firstMatchOfAny((StringBuilder)null, newList("abc")) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstMatchOfAny(new StringBuilder("foobarabcd"), null) );
assertThrows(NullPointerException.class, () ->
StringUtils.firstMatchOfAny(new StringBuilder("foobarabcd"), newList("abc", null)) );
}
@Test
public void toSimpleSingleLine() {
assertEquals("foobarabcd",
StringUtils.toSimpleSingleLine("foobarabcd") );
assertEquals("",
StringUtils.toSimpleSingleLine("") );
assertEquals("foobarabcd",
StringUtils.toSimpleSingleLine("foobarabcd\n") );
assertEquals("foobar abcd",
StringUtils.toSimpleSingleLine("foobar\tabcd") );
assertEquals("foobar \u2014 abcd",
StringUtils.toSimpleSingleLine("foobar\nabcd") );
assertEquals("foobar",
StringUtils.toSimpleSingleLine("foobar\fabcd") );
assertEquals("foobarabcd",
StringUtils.toSimpleSingleLine("foobar\u0000abcd") );
assertEquals("foo barabcd",
StringUtils.toSimpleSingleLine("foo\tbar\u0000\u0000abcd\n") );
}
@Test
@SuppressWarnings("null")
public void toSimpleSingleLine_argCheck() {
assertThrows(NullPointerException.class, () ->
StringUtils.toSimpleSingleLine((String)null) );
}
}