/* * $Id$ * This file is a part of the Arakhne Foundation Classes, http://www.arakhne.org/afc * * Copyright (c) 2000-2012 Stephane GALLAND. * Copyright (c) 2005-10, Multiagent Team, Laboratoire Systemes et Transports, * Universite de Technologie de Belfort-Montbeliard. * Copyright (c) 2013-2016 The original authors, and other authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.arakhne.afc.text; import static org.arakhne.afc.testtools.XbaseInlineTestUtil.assertInlineParameterUsage; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.List; import java.util.Map; import org.junit.Assert; import org.junit.Test; import org.arakhne.afc.testtools.AbstractTestCase; import org.arakhne.afc.vmutil.locale.Locale; @SuppressWarnings("all") public class TextUtilTest extends AbstractTestCase { @Test public void cutStringAsArray() throws Exception { String src; String[] res; String[] actual; src = Locale.getString("A_SOURCE"); //$NON-NLS-1$ res = Locale.getString("A_RESULT").split("\n"); //$NON-NLS-1$ //$NON-NLS-2$ actual = TextUtil.cutStringAsArray(src, 80); assertNotNull(actual); Assert.assertEquals(res.length, actual.length); for(int i=0; i<res.length; i++) { assertTrue("A:Line Size "+(i+1)+": "+actual[i]+" = "+actual[i].length(), actual[i].length()<=80); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ Assert.assertEquals("A:Line "+(i+1), res[i], actual[i]); //$NON-NLS-1$ } src = Locale.getString("B_SOURCE"); //$NON-NLS-1$ res = Locale.getString("B_RESULT").split("\n"); //$NON-NLS-1$ //$NON-NLS-2$ actual = TextUtil.cutStringAsArray(src, 80); assertNotNull(actual); Assert.assertEquals(res.length, actual.length); for(int i=0; i<res.length; i++) { assertTrue("B:Line Size "+(i+1)+": "+actual[i]+" = "+actual[i].length(), actual[i].length()<=80); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ Assert.assertEquals("B:Line "+(i+1), res[i], actual[i]); //$NON-NLS-1$ } src = Locale.getString("C_SOURCE"); //$NON-NLS-1$ res = Locale.getString("C_RESULT").split("\n"); //$NON-NLS-1$ //$NON-NLS-2$ actual = TextUtil.cutStringAsArray(src, 80); assertNotNull(actual); Assert.assertEquals(res.length, actual.length); for(int i=0; i<res.length; i++) { assertTrue("C:Line Size "+(i+1)+": "+actual[i]+" = "+actual[i].length(), actual[i].length()<=80); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ Assert.assertEquals("C:Line "+(i+1), res[i], actual[i]); //$NON-NLS-1$ } src = Locale.getString("D_SOURCE"); //$NON-NLS-1$ res = Locale.getString("D_RESULT").split("\n"); //$NON-NLS-1$ //$NON-NLS-2$ actual = TextUtil.cutStringAsArray(src, 80); assertNotNull(actual); Assert.assertEquals(res.length, actual.length); for(int i=0; i<res.length; i++) { assertTrue("D:Line Size "+(i+1)+": "+actual[i]+" = "+actual[i].length(), actual[i].length()<=80); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ Assert.assertEquals("D:Line "+(i+1), res[i], actual[i]); //$NON-NLS-1$ } } @Test public void cutString() throws Exception { String src, res, actual; src = Locale.getString("A_SOURCE"); //$NON-NLS-1$ res = Locale.getString("A_RESULT"); //$NON-NLS-1$ actual = TextUtil.cutString(src, 80); assertNotNull(actual); Assert.assertEquals("A:", res, actual); //$NON-NLS-1$ src = Locale.getString("B_SOURCE"); //$NON-NLS-1$ res = Locale.getString("B_RESULT"); //$NON-NLS-1$ actual = TextUtil.cutString(src, 80); assertNotNull(actual); Assert.assertEquals("B:", res, actual); //$NON-NLS-1$ src = Locale.getString("C_SOURCE"); //$NON-NLS-1$ res = Locale.getString("C_RESULT"); //$NON-NLS-1$ actual = TextUtil.cutString(src, 80); assertNotNull(actual); Assert.assertEquals("C:", res, actual); //$NON-NLS-1$ src = Locale.getString("D_SOURCE"); //$NON-NLS-1$ res = Locale.getString("D_RESULT"); //$NON-NLS-1$ actual = TextUtil.cutString(src, 80); assertNotNull(actual); Assert.assertEquals("D:", res, actual); //$NON-NLS-1$ } @Test public void splitBrackets() throws Exception { String[] tab; tab = TextUtil.splitBrackets("{a}{b}{c}{d}"); //$NON-NLS-1$ assertArrayEquals(new String[]{ "a", //$NON-NLS-1$ "b", //$NON-NLS-1$ "c", //$NON-NLS-1$ "d", //$NON-NLS-1$ }, tab); tab = TextUtil.splitBrackets("start {a}bbb {b eee}{c}{d}zzz end"); //$NON-NLS-1$ assertArrayEquals(new String[]{ "start", //$NON-NLS-1$ "a", //$NON-NLS-1$ "bbb", //$NON-NLS-1$ "b eee", //$NON-NLS-1$ "c", //$NON-NLS-1$ "d", //$NON-NLS-1$ "zzz end", //$NON-NLS-1$ }, tab); tab = TextUtil.splitBrackets("start {a}bbb {b {eee}}{c}{d}zzz end"); //$NON-NLS-1$ assertArrayEquals(new String[]{ "start", //$NON-NLS-1$ "a", //$NON-NLS-1$ "bbb", //$NON-NLS-1$ "b {eee}", //$NON-NLS-1$ "c", //$NON-NLS-1$ "d", //$NON-NLS-1$ "zzz end", //$NON-NLS-1$ }, tab); tab = TextUtil.splitBrackets("start {a}bbb {b {e{e{e}f}}}{c}{d}zzz end"); //$NON-NLS-1$ assertArrayEquals(new String[]{ "start", //$NON-NLS-1$ "a", //$NON-NLS-1$ "bbb", //$NON-NLS-1$ "b {e{e{e}f}}", //$NON-NLS-1$ "c", //$NON-NLS-1$ "d", //$NON-NLS-1$ "zzz end", //$NON-NLS-1$ }, tab); tab = TextUtil.splitBrackets("start {a}bbb {b {e{e{e}f}}}{}{d}zzz end"); //$NON-NLS-1$ assertArrayEquals(new String[]{ "start", //$NON-NLS-1$ "a", //$NON-NLS-1$ "bbb", //$NON-NLS-1$ "b {e{e{e}f}}", //$NON-NLS-1$ "", //$NON-NLS-1$ "d", //$NON-NLS-1$ "zzz end", //$NON-NLS-1$ }, tab); } @Test public void splitCharCharStr() throws Exception { String[] tab; tab = TextUtil.split('(',']',"(a](b](c](d]"); //$NON-NLS-1$ assertArrayEquals(new String[]{ "a", //$NON-NLS-1$ "b", //$NON-NLS-1$ "c", //$NON-NLS-1$ "d", //$NON-NLS-1$ }, tab); tab = TextUtil.split('(',']',"start (a]bbb (b eee](c](d]zzz end"); //$NON-NLS-1$ assertArrayEquals(new String[]{ "start", //$NON-NLS-1$ "a", //$NON-NLS-1$ "bbb", //$NON-NLS-1$ "b eee", //$NON-NLS-1$ "c", //$NON-NLS-1$ "d", //$NON-NLS-1$ "zzz end", //$NON-NLS-1$ }, tab); tab = TextUtil.split('(',']',"start (a]bbb (b (eee]](c](d]zzz end"); //$NON-NLS-1$ assertArrayEquals(new String[]{ "start", //$NON-NLS-1$ "a", //$NON-NLS-1$ "bbb", //$NON-NLS-1$ "b (eee]", //$NON-NLS-1$ "c", //$NON-NLS-1$ "d", //$NON-NLS-1$ "zzz end", //$NON-NLS-1$ }, tab); tab = TextUtil.split('(',']',"start (a]bbb (b (e(e(e]f]]](c](d]zzz end"); //$NON-NLS-1$ assertArrayEquals(new String[]{ "start", //$NON-NLS-1$ "a", //$NON-NLS-1$ "bbb", //$NON-NLS-1$ "b (e(e(e]f]]", //$NON-NLS-1$ "c", //$NON-NLS-1$ "d", //$NON-NLS-1$ "zzz end", //$NON-NLS-1$ }, tab); tab = TextUtil.split('(',']',"start (a]bbb (b (e(e(e]f]]](](d]zzz end"); //$NON-NLS-1$ assertArrayEquals(new String[]{ "start", //$NON-NLS-1$ "a", //$NON-NLS-1$ "bbb", //$NON-NLS-1$ "b (e(e(e]f]]", //$NON-NLS-1$ "", //$NON-NLS-1$ "d", //$NON-NLS-1$ "zzz end", //$NON-NLS-1$ }, tab); } @Test public void splitBracketsAsList() throws Exception { List<String> tab; tab = TextUtil.splitBracketsAsList("{a}{b}{c}{d}"); //$NON-NLS-1$ assertCollectionEquals(Arrays.asList( "a", //$NON-NLS-1$ "b", //$NON-NLS-1$ "c", //$NON-NLS-1$ "d" //$NON-NLS-1$ ), tab); tab = TextUtil.splitBracketsAsList("start {a}bbb {b eee}{c}{d}zzz end"); //$NON-NLS-1$ assertCollectionEquals(Arrays.asList( "start", //$NON-NLS-1$ "a", //$NON-NLS-1$ "bbb", //$NON-NLS-1$ "b eee", //$NON-NLS-1$ "c", //$NON-NLS-1$ "d", //$NON-NLS-1$ "zzz end" //$NON-NLS-1$ ), tab); tab = TextUtil.splitBracketsAsList("start {a}bbb {b {eee}}{c}{d}zzz end"); //$NON-NLS-1$ assertCollectionEquals(Arrays.asList( "start", //$NON-NLS-1$ "a", //$NON-NLS-1$ "bbb", //$NON-NLS-1$ "b {eee}", //$NON-NLS-1$ "c", //$NON-NLS-1$ "d", //$NON-NLS-1$ "zzz end" //$NON-NLS-1$ ), tab); tab = TextUtil.splitBracketsAsList("start {a}bbb {b {e{e{e}f}}}{c}{d}zzz end"); //$NON-NLS-1$ assertCollectionEquals(Arrays.asList( "start", //$NON-NLS-1$ "a", //$NON-NLS-1$ "bbb", //$NON-NLS-1$ "b {e{e{e}f}}", //$NON-NLS-1$ "c", //$NON-NLS-1$ "d", //$NON-NLS-1$ "zzz end" //$NON-NLS-1$ ), tab); tab = TextUtil.splitBracketsAsList("start {a}bbb {b {e{e{e}f}}}{}{d}zzz end"); //$NON-NLS-1$ assertCollectionEquals(Arrays.asList( "start", //$NON-NLS-1$ "a", //$NON-NLS-1$ "bbb", //$NON-NLS-1$ "b {e{e{e}f}}", //$NON-NLS-1$ "", //$NON-NLS-1$ "d", //$NON-NLS-1$ "zzz end" //$NON-NLS-1$ ), tab); } @Test public void splitAsListCharCharStr() throws Exception { List<String> tab; tab = TextUtil.splitAsList('|','=',"|a=|b=|c=|d="); //$NON-NLS-1$ assertCollectionEquals(Arrays.asList( "a", //$NON-NLS-1$ "b", //$NON-NLS-1$ "c", //$NON-NLS-1$ "d" //$NON-NLS-1$ ), tab); tab = TextUtil.splitAsList('|','=',"start |a=bbb |b eee=|c=|d=zzz end"); //$NON-NLS-1$ assertCollectionEquals(Arrays.asList( "start", //$NON-NLS-1$ "a", //$NON-NLS-1$ "bbb", //$NON-NLS-1$ "b eee", //$NON-NLS-1$ "c", //$NON-NLS-1$ "d", //$NON-NLS-1$ "zzz end" //$NON-NLS-1$ ), tab); tab = TextUtil.splitAsList('|','=',"start |a=bbb |b |eee==|c=|d=zzz end"); //$NON-NLS-1$ assertCollectionEquals(Arrays.asList( "start", //$NON-NLS-1$ "a", //$NON-NLS-1$ "bbb", //$NON-NLS-1$ "b |eee=", //$NON-NLS-1$ "c", //$NON-NLS-1$ "d", //$NON-NLS-1$ "zzz end" //$NON-NLS-1$ ), tab); tab = TextUtil.splitAsList('|','=',"start |a=bbb |b |e|e|e=f===|c=|d=zzz end"); //$NON-NLS-1$ assertCollectionEquals(Arrays.asList( "start", //$NON-NLS-1$ "a", //$NON-NLS-1$ "bbb", //$NON-NLS-1$ "b |e|e|e=f==", //$NON-NLS-1$ "c", //$NON-NLS-1$ "d", //$NON-NLS-1$ "zzz end" //$NON-NLS-1$ ), tab); tab = TextUtil.splitAsList('|','=',"start |a=bbb |b |e|e|e=f===|=|d=zzz end"); //$NON-NLS-1$ assertCollectionEquals(Arrays.asList( "start", //$NON-NLS-1$ "a", //$NON-NLS-1$ "bbb", //$NON-NLS-1$ "b |e|e|e=f==", //$NON-NLS-1$ "", //$NON-NLS-1$ "d", //$NON-NLS-1$ "zzz end" //$NON-NLS-1$ ), tab); } @Test public void parseHTML() { String source, expected, actual; source = Locale.getString("HTML_JAVA_SOURCE"); //$NON-NLS-1$ expected = Locale.getString("HTML_JAVA_EXPECTED"); //$NON-NLS-1$ assertNull(TextUtil.parseHTML(null)); actual = TextUtil.parseHTML(source); Assert.assertEquals(expected, actual); } @Test public void toHTML() { String source, expected, actual; source = Locale.getString("JAVA_HTML_SOURCE"); //$NON-NLS-1$ expected = Locale.getString("JAVA_HTML_EXPECTED"); //$NON-NLS-1$ assertNull(TextUtil.toHTML(null)); actual = TextUtil.toHTML(source); Assert.assertEquals(expected, actual); } @Test public void equalsIgnoreAccentsStringStringMap() { assertInlineParameterUsage(TextUtil.class, "equalsIgnoreAccents", String.class, String.class, Map.class); //$NON-NLS-1$ } @Test public void equalsIgnoreCaseAccentsStringStringMap() { assertInlineParameterUsage(TextUtil.class, "equalsIgnoreCaseAccents", String.class, String.class, Map.class); //$NON-NLS-1$ } @Test public void joinStringBooleanArray() { assertInlineParameterUsage(TextUtil.class, "join", String.class, boolean[].class); //$NON-NLS-1$ } @Test public void joinStringByteArray() { assertInlineParameterUsage(TextUtil.class, "join", String.class, byte[].class); //$NON-NLS-1$ } @Test public void joinStringCharArray() { assertInlineParameterUsage(TextUtil.class, "join", String.class, char[].class); //$NON-NLS-1$ } @Test public void joinStringShortArray() { assertInlineParameterUsage(TextUtil.class, "join", String.class, short[].class); //$NON-NLS-1$ } @Test public void joinStringDoubleArray() { assertInlineParameterUsage(TextUtil.class, "join", String.class, double[].class); //$NON-NLS-1$ } @Test public void joinStringFloatArray() { assertInlineParameterUsage(TextUtil.class, "join", String.class, float[].class); //$NON-NLS-1$ } @Test public void joinStringIntArray() { assertInlineParameterUsage(TextUtil.class, "join", String.class, int[].class); //$NON-NLS-1$ } @Test public void joinStringLongArray() { assertInlineParameterUsage(TextUtil.class, "join", String.class, long[].class); //$NON-NLS-1$ } @Test public void joinStringIterable() { assertInlineParameterUsage(TextUtil.class, "join", String.class, Iterable.class); //$NON-NLS-1$ } @Test public void joinStringStringStringObjectArray() { assertInlineParameterUsage(TextUtil.class, "join", String.class, String.class, String.class, Object[].class); //$NON-NLS-1$ } @Test public void joinStringObjectArray() { assertInlineParameterUsage(TextUtil.class, "join", String.class, Object[].class); //$NON-NLS-1$ } @Test public void mergeBracketsIterable() { assertInlineParameterUsage(TextUtil.class, "mergeBrackets", Iterable.class); //$NON-NLS-1$ } @Test public void mergeBracketsObjectArray() { assertInlineParameterUsage(TextUtil.class, "mergeBrackets", Object[].class); //$NON-NLS-1$ } @Test public void splitBracketsString() { assertInlineParameterUsage(TextUtil.class, "splitBrackets", String.class); //$NON-NLS-1$ } @Test public void splitBracketsAsListString() { assertInlineParameterUsage(TextUtil.class, "splitBracketsAsList", String.class); //$NON-NLS-1$ } @Test public void splitBracketsAsUUIDsString() { assertInlineParameterUsage(TextUtil.class, "splitBracketsAsUUIDs", String.class); //$NON-NLS-1$ } @Test public void getLevenshteinDistance() { assertEquals(0, TextUtil.getLevenshteinDistance(null, null)); assertEquals(0, TextUtil.getLevenshteinDistance(null, "")); //$NON-NLS-1$ assertEquals(0, TextUtil.getLevenshteinDistance("", null)); //$NON-NLS-1$ assertEquals(0, TextUtil.getLevenshteinDistance("", "")); //$NON-NLS-1$ //$NON-NLS-2$ assertEquals(1, TextUtil.getLevenshteinDistance("", "a")); //$NON-NLS-1$ //$NON-NLS-2$ assertEquals(3, TextUtil.getLevenshteinDistance("a", "abcd")); //$NON-NLS-1$ //$NON-NLS-2$ } }