All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opencms.util.TestCmsStringUtil Maven / Gradle / Ivy

Go to download

OpenCms is an enterprise-ready, easy to use website content management system based on Java and XML technology. Offering a complete set of features, OpenCms helps content managers worldwide to create and maintain beautiful websites fast and efficiently.

There is a newer version: 18.0
Show newest version
/*
 * This library is part of OpenCms -
 * the Open Source Content Management System
 *
 * Copyright (c) Alkacon Software GmbH & Co. KG (http://www.alkacon.com)
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * For further information about Alkacon Software GmbH & Co. KG, please see the
 * company website: http://www.alkacon.com
 *
 * For further information about OpenCms, please see the
 * project website: http://www.opencms.org
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package org.opencms.util;

import org.opencms.i18n.CmsEncoder;
import org.opencms.test.OpenCmsTestCase;

import java.util.Arrays;
import java.util.List;

import com.google.common.base.Optional;

/**
 * Test cases for {@link org.opencms.util.CmsStringUtil}.

*/ public class TestCmsStringUtil extends OpenCmsTestCase { /** * Tests content replacement during import.

*/ public void testCmsContentReplacement() { String content, result, context, search, replace; content = "\n" + "See \n" + "http://www.opencms.org/opencms/opencms/opencms/index.html\n" + "or \n" + "/opencms/opencms/opencms/index.html\n" + "\n" + "\n" + "Some URL in the Text: http://www.thirdsite.org/opencms/opencms/some/url.html.\n" + "Another URL in the Text: /opencms/opencms/some/url.html.\n" + "\n"; result = "\n" + "See \n" + "http://www.opencms.org/opencms/opencms/opencms/index.html\n" + "or \n" + CmsStringUtil.MACRO_OPENCMS_CONTEXT + "/opencms/index.html\n" + "\n" + "\n" + "Some URL in the Text: http://www.thirdsite.org/opencms/opencms/some/url.html.\n" + "Another URL in the Text: " + CmsStringUtil.MACRO_OPENCMS_CONTEXT + "/some/url.html.\n" + "\n"; context = "/opencms/opencms/"; // search = "([>\"']\\s*)" + context; search = "([^\\w/])" + context; replace = "$1" + CmsStringUtil.escapePattern(CmsStringUtil.MACRO_OPENCMS_CONTEXT) + "/"; String test = CmsStringUtil.substitutePerl(content, search, replace, "g"); System.err.println(this.getClass().getName() + ".testCmsContentReplacement():"); System.err.println(test); assertEquals(test, result); test = CmsStringUtil.substituteContextPath(content, context); assertEquals(test, result); } /** * Combined tests.

*/ public void testCombined() { String test; String content = "

A paragraph with text...

\n"; String search = "/opencms/opencms/"; String replace = "${path}"; test = CmsStringUtil.substitute(content, search, replace); assertEquals( test, "

A paragraph with text...

\n
"); test = CmsStringUtil.substitute(test, replace, search); assertEquals( test, "

A paragraph with text...

\n
"); } /** * Tests for complext import patterns.

*/ public void testComplexPatternForImport() { String content = "/pics/test.gif script = '/pics/test.gif' /pics/othertest.gif \n" + "/mymodule/pics/test.gif script = '/mymodule/pics/test.gif' /mymodule/system/galleries/pics/othertest.gif "; String search = "([>\"']\\s*)/pics/"; String replace = "$1/system/galleries/pics/"; String test = CmsStringUtil.substitutePerl(content, search, replace, "g"); assertEquals( test, "/system/galleries/pics/test.gif script = '/system/galleries/pics/test.gif' /system/galleries/pics/othertest.gif \n" + "/mymodule/pics/test.gif script = '/mymodule/pics/test.gif' /mymodule/system/galleries/pics/othertest.gif "); } /** * Tests the parseDuration method.

*/ public void testDuration() { long second = 1000; long minute = 60 * second; long hour = 60 * minute; long day = 24 * hour; assertEquals(day + (5 * minute), CmsStringUtil.parseDuration(" 1d 5m ", 0)); assertEquals(hour + 5, CmsStringUtil.parseDuration("1h5ms", 0)); assertEquals(3 * hour, CmsStringUtil.parseDuration("4x3h5y", 0)); assertEquals((5 * second) + 16, CmsStringUtil.parseDuration("5s16ms", 0)); // check default value assertEquals(0, CmsStringUtil.parseDuration("0s", 10)); assertEquals(10, CmsStringUtil.parseDuration("4440", 10)); } /** * Tests for the escape patterns.

*/ public void testEscapePattern() { String test; test = CmsStringUtil.escapePattern("/opencms/opencms"); assertEquals(test, "\\/opencms\\/opencms"); test = CmsStringUtil.escapePattern("/opencms/$"); assertEquals(test, "\\/opencms\\/\\$"); } /** * Tests the body tag extraction.

*/ public void testExtractHtmlBody() { String content, result; String innerContent = "This is body content in the body\n

A headline

\nSome text in the body\n"; content = "" + innerContent + ""; result = CmsStringUtil.extractHtmlBody(content); assertEquals(result, innerContent); content = "" + innerContent + ""; result = CmsStringUtil.extractHtmlBody(content); assertEquals(result, innerContent); content = "\nTest\n" + innerContent + "\n"; result = CmsStringUtil.extractHtmlBody(content); assertEquals(result, innerContent); content = "< body style='css' background-color:#ffffff>" + innerContent + ""; result = CmsStringUtil.extractHtmlBody(content); assertEquals(result, innerContent); content = "" + innerContent + "somemoretext"; result = CmsStringUtil.extractHtmlBody(content); assertEquals(result, innerContent); content = innerContent + ""; result = CmsStringUtil.extractHtmlBody(content); assertEquals(result, innerContent); content = "" + innerContent; result = CmsStringUtil.extractHtmlBody(content); assertEquals(result, innerContent); content = innerContent; result = CmsStringUtil.extractHtmlBody(content); assertEquals(result, innerContent); } /** * Tests the xml encoding extraction.

*/ public void testExtractXmlEncoding() { String xml, result; xml = "\n" + "\n" + ""; result = CmsStringUtil.extractXmlEncoding(xml); assertEquals(result, CmsEncoder.ENCODING_UTF_8); xml = "\n" + ""; result = CmsStringUtil.extractXmlEncoding(xml); assertEquals(result, "ISO-8859-1"); } /** * Tests for the resource name formatting.

*/ public void testFormatResourceName() { String test; test = "/xmlcontentdemo/list.jsp"; assertEquals("/.../list.jsp", CmsStringUtil.formatResourceName(test, 10)); test = "/xmlcontentdemo/list.jsp"; assertEquals("/xmlcontentdemo/list.jsp", CmsStringUtil.formatResourceName(test, 25)); test = "/averylongresourcename.jsp"; assertEquals("/averylongresourcename.jsp", CmsStringUtil.formatResourceName(test, 25)); test = "/folder1/folder2/averylongresourcename.jsp"; assertEquals("/.../averylongresourcename.jsp", CmsStringUtil.formatResourceName(test, 25)); test = "/myfolder/subfolder/index.html"; assertEquals("/.../index.html", CmsStringUtil.formatResourceName(test, 21)); assertEquals("/myfolder/.../index.html", CmsStringUtil.formatResourceName(test, 25)); test = "/myfolder/subfolder/subsubfolder/index.html"; assertEquals("/myfolder/.../subsubfolder/index.html", CmsStringUtil.formatResourceName(test, 40)); assertEquals("/myfolder/.../index.html", CmsStringUtil.formatResourceName(test, 36)); assertEquals("/myfolder/.../index.html", CmsStringUtil.formatResourceName(test, 24)); assertEquals("/.../index.html", CmsStringUtil.formatResourceName(test, 21)); test = "/demopages/search-demo/example-documents/"; assertEquals("/demopages/.../example-documents/", CmsStringUtil.formatResourceName(test, 40)); assertEquals("/demopages/search-demo/example-documents/", CmsStringUtil.formatResourceName(test, 41)); } /** * Test for getting the common prefix of two paths. */ public void testGetCommonPrefixPath() { assertEquals("/", CmsStringUtil.getCommonPrefixPath("/foo", "/bar")); assertEquals("/foo", CmsStringUtil.getCommonPrefixPath("/foo/bar", "/foo/baz")); assertEquals("/foo", CmsStringUtil.getCommonPrefixPath("/foo/bar/", "/foo/baz")); assertEquals("/foo", CmsStringUtil.getCommonPrefixPath("/foo/bar/", "/foo/baz/")); assertEquals("/foo/bar", CmsStringUtil.getCommonPrefixPath("/foo/bar/baz/qux", "/foo/bar/xyzzy/narf")); assertEquals("/foo/bar", CmsStringUtil.getCommonPrefixPath("/foo/bar/baz/qux", "/foo/bar/")); assertEquals("/foo/bar", CmsStringUtil.getCommonPrefixPath("/foo/bar/baz/qux", "/foo/bar/xyzzy/narf/quop")); assertEquals("/foo/bar", CmsStringUtil.getCommonPrefixPath("/foo/bar/baz", "/foo/bar/baz1")); assertEquals("/", CmsStringUtil.getCommonPrefixPath("/foo/bar/baz/qux", "/qux/baz/bar/foo")); assertEquals("/", CmsStringUtil.getCommonPrefixPath("/foo/bar/baz/qux", "/")); } /** * Test for the getRelativeSubPath utility method.

* * @throws Exception in case the test fails */ public void testGetRelativeSubPath() throws Exception { assertEquals("/", CmsStringUtil.getRelativeSubPath("/foo", "/foo/")); assertEquals("/", CmsStringUtil.getRelativeSubPath("/foo", "/foo")); assertEquals("/foo", CmsStringUtil.getRelativeSubPath("/bar", "/bar/foo")); assertEquals("/foo", CmsStringUtil.getRelativeSubPath("/bar", "/bar/foo/")); assertEquals("/foo", CmsStringUtil.getRelativeSubPath("/bar/", "/bar/foo/")); assertEquals(null, CmsStringUtil.getRelativeSubPath("/foo", "/foo1")); assertEquals(null, CmsStringUtil.getRelativeSubPath("/foo", "/bar")); } /** * Test case for join path method-

*/ public void testJoinPath() { assertEquals("/system/", CmsStringUtil.joinPaths("/system/")); assertEquals("/system/", CmsStringUtil.joinPaths("/system", "/")); assertEquals("/system/", CmsStringUtil.joinPaths("/system", "")); assertEquals("/system/", CmsStringUtil.joinPaths("/system/", "/")); assertEquals("/system/", CmsStringUtil.joinPaths("/", "/system/", "/")); assertEquals("/system/", CmsStringUtil.joinPaths("/", "system", "/")); assertEquals("/system/", CmsStringUtil.joinPaths("", "/system/", "")); assertEquals("/system/", CmsStringUtil.joinPaths("/system/", "/", "/")); assertEquals("/system/", CmsStringUtil.joinPaths("/", "/", "/system/")); assertEquals("/system/", CmsStringUtil.joinPaths("", "", "/system/")); assertEquals("/foo/bar/baz", CmsStringUtil.joinPaths("/foo/", "/bar", "baz")); assertEquals("/foo/bar/baz", CmsStringUtil.joinPaths("/foo", "bar", "baz")); assertEquals("/foo/bar/baz", CmsStringUtil.joinPaths("/foo/", "/bar/", "/baz")); assertEquals("/foo/bar/baz", CmsStringUtil.joinPaths("/foo", "/bar/", "baz")); assertEquals("/foo/bar/baz", CmsStringUtil.joinPaths("/foo//bar/", "/baz")); assertEquals("/foo/bar/baz", CmsStringUtil.joinPaths("/foo/////////bar/", "/baz")); assertEquals("/foo/bar/baz", CmsStringUtil.joinPaths("//////////foo/////////bar/////", "//////baz")); } /** * Test case for {@link CmsStringUtil#lastIndexOf(String, char[])} method.

*/ public void testLastIndexOf() { int result; result = CmsStringUtil.lastIndexOf("This is a Text", CmsStringUtil.SENTENCE_ENDING_CHARS); assertEquals(-1, result); result = CmsStringUtil.lastIndexOf("This ! is ? a . Text", CmsStringUtil.SENTENCE_ENDING_CHARS); assertEquals(14, result); } /** * Further tests.

*/ public void testLine() { String content = "\"Homepage\"Homepage\n

Alkacon Software provides software development services for the digital business. We are specialized in web - based content management solutions build on open source Java Software.

\n

Alkacon Software is a major contributor to the OpenCms Project. OpenCms is an enterprise - ready content management platform build in Java from open source components. OpenCms can easily be deployed on almost any existing IT infrastructure and provides powerful features especially suited for large enterprise internet or intranet applications.

\n

Alkacon Software offers standard service and support packages for OpenCms, providing an optional layer of security and convenience often required for mission critical OpenCms installations.

\n\n

 

]]>"; String search = "/pics/"; String replace = "/system/galleries/pics/"; String test = CmsStringUtil.substitute(content, search, replace); assertEquals( test, "\"Homepage\"Homepage\n

Alkacon Software provides software development services for the digital business. We are specialized in web - based content management solutions build on open source Java Software.

\n

Alkacon Software is a major contributor to the OpenCms Project. OpenCms is an enterprise - ready content management platform build in Java from open source components. OpenCms can easily be deployed on almost any existing IT infrastructure and provides powerful features especially suited for large enterprise internet or intranet applications.

\n

Alkacon Software offers standard service and support packages for OpenCms, providing an optional layer of security and convenience often required for mission critical OpenCms installations.

\n\n

 

]]>
"); } /** * Tests {@link CmsStringUtil#replacePrefix(String, String, String, boolean)}.

*/ public void testReplacePrefix() { assertEquals(Optional.absent(), CmsStringUtil.replacePrefix("foo", "x", "y", false)); assertEquals(Optional.of("y-foo"), CmsStringUtil.replacePrefix("x-foo", "x", "y", false)); assertEquals(Optional.of("xxx-foo"), CmsStringUtil.replacePrefix("xx-foo", "x", "xx", false)); assertEquals(Optional.of("y-foo"), CmsStringUtil.replacePrefix("X-foo", "x", "y", true)); assertEquals(Optional.absent(), CmsStringUtil.replacePrefix("X-foo", "x", "y", false)); } /** * Tests {@link CmsStringUtil#splitAsArray(String, char)}.

*/ public void testSplitCharDelimiter() { String toSplit; char delimChar = '/'; String[] arrayResult; List listResult; // test usability for path-tokenization (e.g. admin tool of workplace) toSplit = "/system/workplace/admin/searchindex/"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); assertEquals(4, arrayResult.length); assertEquals("system", arrayResult[0]); assertEquals("workplace", arrayResult[1]); assertEquals("admin", arrayResult[2]); assertEquals("searchindex", arrayResult[3]); listResult = CmsStringUtil.splitAsList(toSplit, delimChar); assertEquals(Arrays.asList(arrayResult), listResult); // test an empty String: toSplit = ""; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); assertEquals(0, arrayResult.length); listResult = CmsStringUtil.splitAsList(toSplit, delimChar); assertEquals(Arrays.asList(arrayResult), listResult); // test a whitespace only String toSplit = " "; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); assertEquals(1, arrayResult.length); assertEquals(toSplit, arrayResult[0]); listResult = CmsStringUtil.splitAsList(toSplit, delimChar); assertEquals(Arrays.asList(arrayResult), listResult); // with truncation listResult = CmsStringUtil.splitAsList(toSplit, delimChar, true); assertEquals(1, listResult.size()); assertEquals("", listResult.get(0)); // test a 1 separator-only String toSplit = "/"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); assertEquals(0, arrayResult.length); listResult = CmsStringUtil.splitAsList(toSplit, delimChar); assertEquals(Arrays.asList(arrayResult), listResult); // test a 2 separator-only String toSplit = "//"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); assertEquals(1, arrayResult.length); assertEquals("", arrayResult[0]); listResult = CmsStringUtil.splitAsList(toSplit, delimChar); assertEquals(Arrays.asList(arrayResult), listResult); // test a single token String with starting delimiter toSplit = "/token"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); assertEquals(1, arrayResult.length); assertEquals("token", arrayResult[0]); listResult = CmsStringUtil.splitAsList(toSplit, delimChar); assertEquals(Arrays.asList(arrayResult), listResult); // test a single token String with ending delimiter toSplit = "token/"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); assertEquals(1, arrayResult.length); assertEquals("token", arrayResult[0]); listResult = CmsStringUtil.splitAsList(toSplit, delimChar); assertEquals(Arrays.asList(arrayResult), listResult); // test a 3 separator-only String toSplit = "///"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); assertEquals(2, arrayResult.length); assertEquals("", arrayResult[0]); assertEquals("", arrayResult[1]); listResult = CmsStringUtil.splitAsList(toSplit, delimChar); assertEquals(Arrays.asList(arrayResult), listResult); toSplit = "/a // b/ c /"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimChar); assertEquals(4, arrayResult.length); assertEquals("a ", arrayResult[0]); assertEquals("", arrayResult[1]); assertEquals(" b", arrayResult[2]); assertEquals(" c ", arrayResult[3]); listResult = CmsStringUtil.splitAsList(toSplit, delimChar); assertEquals(Arrays.asList(arrayResult), listResult); // with truncation listResult = CmsStringUtil.splitAsList(toSplit, delimChar, true); assertEquals(4, listResult.size()); assertEquals("a", listResult.get(0)); assertEquals("", listResult.get(1)); assertEquals("b", listResult.get(2)); assertEquals("c", listResult.get(3)); } /** * Tests {@link CmsStringUtil#splitAsArray(String, String)}.

*/ public void testSplitStringDelimiter() { String toSplit; String delimString = "/"; String[] arrayResult; List listResult; toSplit = "/system/workplace/admin/searchindex/"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(4, arrayResult.length); assertEquals("system", arrayResult[0]); assertEquals("workplace", arrayResult[1]); assertEquals("admin", arrayResult[2]); assertEquals("searchindex", arrayResult[3]); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); // test an empty String: toSplit = ""; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(0, arrayResult.length); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); // whitespace only String toSplit = " "; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(1, arrayResult.length); assertEquals(toSplit, arrayResult[0]); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); // with truncation listResult = CmsStringUtil.splitAsList(toSplit, delimString, true); assertEquals(1, listResult.size()); assertEquals("", listResult.get(0)); // test a 1 separator-only String toSplit = "/"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(0, arrayResult.length); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); // test a 2 separator-only String toSplit = "//"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(1, arrayResult.length); assertEquals("", arrayResult[0]); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); // test a single token String with starting delimiter toSplit = "/token"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(1, arrayResult.length); assertEquals("token", arrayResult[0]); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); // test a single token String with ending delimiter toSplit = "token/"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(1, arrayResult.length); assertEquals("token", arrayResult[0]); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); // test a 3 separator-only String toSplit = "///"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(2, arrayResult.length); assertEquals("", arrayResult[0]); assertEquals("", arrayResult[1]); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); toSplit = "/a // b/ c /"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(4, arrayResult.length); assertEquals("a ", arrayResult[0]); assertEquals("", arrayResult[1]); assertEquals(" b", arrayResult[2]); assertEquals(" c ", arrayResult[3]); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); // with truncation listResult = CmsStringUtil.splitAsList(toSplit, delimString, true); assertEquals(4, listResult.size()); assertEquals("a", listResult.get(0)); assertEquals("", listResult.get(1)); assertEquals("b", listResult.get(2)); assertEquals("c", listResult.get(3)); // some tests with a separator longer than 1 delimString = ",,"; toSplit = ",,system,,workplace,,admin,,searchindex,,"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(4, arrayResult.length); assertEquals("system", arrayResult[0]); assertEquals("workplace", arrayResult[1]); assertEquals("admin", arrayResult[2]); assertEquals("searchindex", arrayResult[3]); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); // test an empty String: toSplit = ""; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(0, arrayResult.length); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); // test a whitespace String with truncation: toSplit = " "; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(1, arrayResult.length); assertEquals(toSplit, arrayResult[0]); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); // test a 1 separator-only String toSplit = ",,"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(0, arrayResult.length); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); // test a 2 separator-only String toSplit = ",,,,"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(1, arrayResult.length); assertEquals("", arrayResult[0]); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); // test a single token String with starting delimiter toSplit = ",,token"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(1, arrayResult.length); assertEquals("token", arrayResult[0]); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); // test a single token String with ending delimiter toSplit = "token,,"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(1, arrayResult.length); assertEquals("token", arrayResult[0]); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); // test a 3 separator-only String toSplit = ",,,,,,"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(2, arrayResult.length); assertEquals("", arrayResult[0]); assertEquals("", arrayResult[1]); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); toSplit = ",,a, aber nicht b,,,,b, aber nicht c,,c, but not a,,"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(4, arrayResult.length); assertEquals("a, aber nicht b", arrayResult[0]); assertEquals("", arrayResult[1]); assertEquals("b, aber nicht c", arrayResult[2]); assertEquals("c, but not a", arrayResult[3]); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); delimString = "/delim/"; toSplit = "/delim fake at start/delim//not a delim//delim//delim//delim fake at end"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(4, arrayResult.length); assertEquals("/delim fake at start", arrayResult[0]); assertEquals("/not a delim/", arrayResult[1]); assertEquals("", arrayResult[2]); assertEquals("/delim fake at end", arrayResult[3]); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); toSplit = "/delim fake at start/delim//not a delim//delim//delim//delim"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(4, arrayResult.length); assertEquals("/delim fake at start", arrayResult[0]); assertEquals("/not a delim/", arrayResult[1]); assertEquals("", arrayResult[2]); assertEquals("/delim", arrayResult[3]); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); toSplit = "/delim//delim fake at start/delim//not a delim//delim//delim//delim fake at end/delim/"; arrayResult = CmsStringUtil.splitAsArray(toSplit, delimString); assertEquals(4, arrayResult.length); assertEquals("/delim fake at start", arrayResult[0]); assertEquals("/not a delim/", arrayResult[1]); assertEquals("", arrayResult[2]); assertEquals("/delim fake at end", arrayResult[3]); listResult = CmsStringUtil.splitAsList(toSplit, delimString); assertEquals(Arrays.asList(arrayResult), listResult); } /** * Tests the basic String substitution.

*/ public void testSubstitute() { String test, result; String content = ""; String search = "/opencms/opencms/"; String replace = "\\${path}"; test = CmsStringUtil.substitute(content, search, replace); System.out.println(test); assertEquals(test, ""); test = CmsStringUtil.substitute(test, replace, search); assertEquals(test, ""); content = "[0-9]$1/[^a]|/([}>\"'\\[]\\s*)/pics/"; result = "[0-9]$1/[^a]|/([}>\"'\\[]\\s*)/pucs/"; test = CmsStringUtil.substitute(content, "i", "u"); assertEquals(test, result); content = "/delim//delim fake at start/delim//not a delim//delim//delim//delim fake at end/delim/"; result = "REPLACED!/delim fake at startREPLACED!/not a delim/REPLACED!REPLACED!/delim fake at endREPLACED!"; test = CmsStringUtil.substitute(content, "/delim/", "REPLACED!"); assertEquals(test, result); } /** * Test case for {@link CmsStringUtil#trimToSize(String, int)} method.

*/ public void testTrimToSize() { String text, result, expected; text = "This is a short sentence."; expected = text; result = CmsStringUtil.trimToSize(text, 75); assertEquals(expected, result); text = "I am a short sentence."; expected = "I am a..."; result = CmsStringUtil.trimToSize(text, 10, "..."); assertEquals(expected, result); text = "I_am_a_short_sentence."; expected = "I_am_a_sh..."; result = CmsStringUtil.trimToSize(text, 12, "..."); assertEquals(expected, result); text = "I am a short sentence."; expected = "I am..."; result = CmsStringUtil.trimToSize(text, 8, "..."); assertEquals(expected, result); text = "I am a short sentence."; expected = "I..."; result = CmsStringUtil.trimToSize(text, 7, "..."); assertEquals(expected, result); text = "I am a short sentence."; expected = "I..."; result = CmsStringUtil.trimToSize(text, 6, "..."); assertEquals(expected, result); text = "I am a short sentence."; expected = "I..."; result = CmsStringUtil.trimToSize(text, 5, "..."); assertEquals(expected, result); text = "I am a short sentence."; expected = "I..."; result = CmsStringUtil.trimToSize(text, 4, "..."); assertEquals(expected, result); text = "I am a short sentence."; expected = "..."; result = CmsStringUtil.trimToSize(text, 3, "..."); assertEquals(expected, result); text = "I am a short sentence."; expected = ".."; result = CmsStringUtil.trimToSize(text, 2, "..."); assertEquals(expected, result); text = "I am a short sentence."; expected = "."; result = CmsStringUtil.trimToSize(text, 1, "..."); assertEquals(expected, result); text = null; expected = null; result = CmsStringUtil.trimToSize(text, 10); assertEquals(expected, result); } /** * Test case for {@link CmsStringUtil#trimToSize(String, int, int, String)}.

*/ public void testTrimToSizeText() { String text, result, expected; text = "This is a short sentence."; expected = text; result = CmsStringUtil.trimToSize(text, 75, 40, " ..."); assertEquals(expected, result); text = "This is a short sentence. This is a longer sentence at the end of the short sentence."; expected = "This is a short sentence. This is a longer sentence at the end of the ..."; result = CmsStringUtil.trimToSize(text, 75, 40, " ..."); assertEquals(expected, result); text = "This is a short sentence. This is a longer sentence at the end of the short sentence."; expected = "This is a short sentence. ..."; result = CmsStringUtil.trimToSize(text, 75, 75, " ..."); assertEquals(expected, result); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy