| /*=============================================================================# |
| # 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) ); |
| } |
| |
| } |