Path: blob/master/test/jdk/java/lang/String/CompactString/Split.java
41152 views
/*1* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223import java.util.Arrays;2425import org.testng.annotations.DataProvider;26import org.testng.annotations.Test;2728import static org.testng.Assert.assertTrue;2930/*31* @test32* @bug 807755933* @summary Tests Compact String. This one is for String.split.34* @run testng/othervm -XX:+CompactStrings Split35* @run testng/othervm -XX:-CompactStrings Split36*/3738public class Split extends CompactString {3940@DataProvider41public Object[][] provider() {42return new Object[][] {43new Object[] { STRING_L1, "", 0, new String[] { "A" } },44new Object[] { STRING_L1, "", 1, new String[] { "A" } },45new Object[] { STRING_L1, "", 2, new String[] { "A", "" } },46new Object[] { STRING_L1, "A", 0, new String[] {} },47new Object[] { STRING_L2, "A", 0, new String[] { "", "B" } },48new Object[] { STRING_L2, "B", 0, new String[] { "A" } },49new Object[] { STRING_LLONG, "D", 0,50new String[] { "ABC", "EFGH" } },51new Object[] { STRING_LLONG, "[D]", 0,52new String[] { "ABC", "EFGH" } },53new Object[] { STRING_LLONG, "CD", 0,54new String[] { "AB", "EFGH" } },55new Object[] { STRING_LLONG, "DC", 0,56new String[] { "ABCDEFGH" } },57new Object[] { STRING_LLONG, "[CF]", 0,58new String[] { "AB", "DE", "GH" } },59new Object[] { STRING_LLONG, "[CF]", 1,60new String[] { "ABCDEFGH" } },61new Object[] { STRING_LLONG, "[CF]", 2,62new String[] { "AB", "DEFGH" } },63new Object[] { STRING_LLONG, "[FC]", 0,64new String[] { "AB", "DE", "GH" } },65new Object[] { STRING_LLONG, "[FC]", 1,66new String[] { "ABCDEFGH" } },67new Object[] { STRING_LLONG, "[FC]", 2,68new String[] { "AB", "DEFGH" } },69new Object[] { STRING_U1, "", 0, new String[] { "\uFF21" } },70new Object[] { STRING_U1, "", 1, new String[] { "\uFF21" } },71new Object[] { STRING_U1, "", 2, new String[] { "\uFF21", "" } },72new Object[] { STRING_U1, "\uFF21", 0, new String[] {} },73new Object[] { STRING_M12, "\uFF21", 0,74new String[] { "", "A" } },75new Object[] { STRING_M12, "A", 0, new String[] { "\uFF21" } },76new Object[] {77STRING_UDUPLICATE,78"\uFF21",790,80new String[] { "", "\uFF22", "\uFF22", "\uFF22",81"\uFF22", "\uFF22" } },82new Object[] {83STRING_UDUPLICATE,84"\uFF21",852,86new String[] { "",87"\uFF22\uFF21\uFF22\uFF21\uFF22\uFF21\uFF22\uFF21\uFF22" } },88new Object[] {89STRING_UDUPLICATE,90"\uFF21",914,92new String[] { "", "\uFF22", "\uFF22",93"\uFF22\uFF21\uFF22\uFF21\uFF22" } },94new Object[] {95STRING_UDUPLICATE,96"\uFF22",970,98new String[] { "\uFF21", "\uFF21", "\uFF21", "\uFF21",99"\uFF21" } },100new Object[] {101STRING_UDUPLICATE,102"\uFF22",1033,104new String[] { "\uFF21", "\uFF21",105"\uFF21\uFF22\uFF21\uFF22\uFF21\uFF22" } },106107new Object[] { STRING_MDUPLICATE1, "\uFF21", 0,108new String[] { "", "A", "A", "A", "A", "A" } },109new Object[] { STRING_MDUPLICATE1, "\uFF21", 3,110new String[] { "", "A", "A\uFF21A\uFF21A\uFF21A" } },111new Object[] {112STRING_MDUPLICATE1,113"A",1140,115new String[] { "\uFF21", "\uFF21", "\uFF21", "\uFF21",116"\uFF21" } },117new Object[] {118STRING_MDUPLICATE1,119"A",1204,121new String[] { "\uFF21", "\uFF21", "\uFF21",122"\uFF21A\uFF21A" } },123new Object[] { STRING_SUPPLEMENTARY, "\uD801\uDC01", 0,124new String[] { "\uD801\uDC00", "\uFF21A" } },125new Object[] { STRING_SUPPLEMENTARY, "\uDC01", 0,126new String[] { "\uD801\uDC00\uD801\uDC01\uFF21A" } },127new Object[] { STRING_SUPPLEMENTARY, "\uD801\uDC01", 0,128new String[] { "\uD801\uDC00", "\uFF21A" } },129new Object[] { STRING_SUPPLEMENTARY, "[\uD801\uDC01\uFF21]", 0,130new String[] { "\uD801\uDC00", "", "A" } },131new Object[] { STRING_SUPPLEMENTARY, "[\uD801\uDC01\uFF21]", 1,132new String[] { "\uD801\uDC00\uD801\uDC01\uFF21A" } },133new Object[] { STRING_SUPPLEMENTARY, "[\uD801\uDC01\uFF21]", 2,134new String[] { "\uD801\uDC00", "\uFF21A" } },135new Object[] { STRING_SUPPLEMENTARY, "[\uFF21\uD801\uDC01]", 0,136new String[] { "\uD801\uDC00", "", "A" } },137new Object[] { STRING_SUPPLEMENTARY, "[\uFF21\uD801\uDC01]", 1,138new String[] { "\uD801\uDC00\uD801\uDC01\uFF21A" } },139new Object[] { STRING_SUPPLEMENTARY, "[\uFF21\uD801\uDC01]", 2,140new String[] { "\uD801\uDC00", "\uFF21A" } },141new Object[] { STRING_SUPPLEMENTARY_LOWERCASE, "\uDC01", 0,142new String[] { "\uD801\uDC28\uD801\uDC29\uFF41a" } },143new Object[] { STRING_SUPPLEMENTARY_LOWERCASE, "\uD801\uDC29",1440, new String[] { "\uD801\uDC28", "\uFF41a" } },145new Object[] { STRING_SUPPLEMENTARY_LOWERCASE,146"[\uD801\uDC29\uFF41]", 0,147new String[] { "\uD801\uDC28", "", "a" } },148new Object[] { STRING_SUPPLEMENTARY_LOWERCASE,149"[\uD801\uDC29\uFF41]", 1,150new String[] { "\uD801\uDC28\uD801\uDC29\uFF41a" } },151new Object[] { STRING_SUPPLEMENTARY_LOWERCASE,152"[\uD801\uDC29\uFF41]", 2,153new String[] { "\uD801\uDC28", "\uFF41a" } },154new Object[] { STRING_SUPPLEMENTARY_LOWERCASE,155"[\uFF41\uD801\uDC29]", 0,156new String[] { "\uD801\uDC28", "", "a" } },157new Object[] { STRING_SUPPLEMENTARY_LOWERCASE,158"[\uFF41\uD801\uDC29]", 1,159new String[] { "\uD801\uDC28\uD801\uDC29\uFF41a" } },160new Object[] { STRING_SUPPLEMENTARY_LOWERCASE,161"[\uFF41\uD801\uDC29]", 2,162new String[] { "\uD801\uDC28", "\uFF41a" } }, };163}164165@Test(dataProvider = "provider")166public void testSplit(String str, String regex, int limit, String[] expected) {167map.get(str)168.forEach(169(source, data) -> {170assertTrue(171Arrays.equals(data.split(regex, limit),172expected),173String.format(174"testing String(%s).split(%s, %d), source : %s, ",175escapeNonASCIIs(data),176escapeNonASCIIs(regex), limit,177source));178});179}180}181182183