8016846: Pattern.splitAsStream tests required
Reviewed-by: alanb, psandoz
This commit is contained in:
parent
629de57fe8
commit
c9443a8346
147
jdk/test/java/util/regex/PatternTest.java
Normal file
147
jdk/test/java/util/regex/PatternTest.java
Normal file
@ -0,0 +1,147 @@
|
||||
/*
|
||||
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code 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 General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @summary Unit tests for wrapping classes should delegate to default methods
|
||||
* @library ../stream/bootlib
|
||||
* @build java.util.stream.OpTestCase
|
||||
* @run testng/othervm PatternTest
|
||||
*/
|
||||
|
||||
import org.testng.annotations.DataProvider;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.LambdaTestHelpers;
|
||||
import java.util.stream.OpTestCase;
|
||||
import java.util.stream.Stream;
|
||||
import java.util.stream.TestData;
|
||||
|
||||
@Test
|
||||
public class PatternTest extends OpTestCase {
|
||||
|
||||
@DataProvider(name = "Stream<String>")
|
||||
public static Object[][] makeStreamTestData() {
|
||||
List<Object[]> data = new ArrayList<>();
|
||||
|
||||
String description = "";
|
||||
String input = "awgqwefg1fefw4vssv1vvv1";
|
||||
Pattern pattern = Pattern.compile("4");
|
||||
List<String> expected = new ArrayList<>();
|
||||
expected.add("awgqwefg1fefw");
|
||||
expected.add("vssv1vvv1");
|
||||
|
||||
// Must match the type signature of the consumer of this data, testStrings
|
||||
// String, String, Pattern, List<String>
|
||||
data.add(new Object[]{description, input, pattern, expected});
|
||||
|
||||
input = "afbfq\u00a3abgwgb\u00a3awngnwggw\u00a3a\u00a3ahjrnhneerh";
|
||||
pattern = Pattern.compile("\u00a3a");
|
||||
expected = new ArrayList<>();
|
||||
expected.add("afbfq");
|
||||
expected.add("bgwgb");
|
||||
expected.add("wngnwggw");
|
||||
expected.add("");
|
||||
expected.add("hjrnhneerh");
|
||||
|
||||
data.add(new Object[]{description, input, pattern, expected});
|
||||
|
||||
|
||||
input = "awgqwefg1fefw4vssv1vvv1";
|
||||
pattern = Pattern.compile("1");
|
||||
expected = new ArrayList<>();
|
||||
expected.add("awgqwefg");
|
||||
expected.add("fefw4vssv");
|
||||
expected.add("vvv");
|
||||
|
||||
data.add(new Object[]{description, input, pattern, expected});
|
||||
|
||||
|
||||
input = "a\u4ebafg1fefw\u4eba4\u9f9cvssv\u9f9c1v\u672c\u672cvv";
|
||||
pattern = Pattern.compile("1");
|
||||
expected = new ArrayList<>();
|
||||
expected.add("a\u4ebafg");
|
||||
expected.add("fefw\u4eba4\u9f9cvssv\u9f9c");
|
||||
expected.add("v\u672c\u672cvv");
|
||||
|
||||
data.add(new Object[]{description, input, pattern, expected});
|
||||
|
||||
|
||||
input = "1\u56da23\u56da456\u56da7890";
|
||||
pattern = Pattern.compile("\u56da");
|
||||
expected = new ArrayList<>();
|
||||
expected.add("1");
|
||||
expected.add("23");
|
||||
expected.add("456");
|
||||
expected.add("7890");
|
||||
|
||||
data.add(new Object[]{description, input, pattern, expected});
|
||||
|
||||
|
||||
input = "1\u56da23\u9f9c\u672c\u672c\u56da456\u56da\u9f9c\u672c7890";
|
||||
pattern = Pattern.compile("\u56da");
|
||||
expected = new ArrayList<>();
|
||||
expected.add("1");
|
||||
expected.add("23\u9f9c\u672c\u672c");
|
||||
expected.add("456");
|
||||
expected.add("\u9f9c\u672c7890");
|
||||
|
||||
data.add(new Object[]{description, input, pattern, expected});
|
||||
|
||||
|
||||
input = "";
|
||||
pattern = Pattern.compile("\u56da");
|
||||
expected = new ArrayList<>();
|
||||
|
||||
data.add(new Object[]{description, input, pattern, expected});
|
||||
|
||||
|
||||
description = "Multiple separators";
|
||||
input = "This is,testing: with\tdifferent separators.";
|
||||
pattern = Pattern.compile("[ \t,:.]");
|
||||
expected = new ArrayList<>();
|
||||
expected.add("This");
|
||||
expected.add("is");
|
||||
expected.add("testing");
|
||||
expected.add("");
|
||||
expected.add("with");
|
||||
expected.add("different");
|
||||
expected.add("separators");
|
||||
|
||||
data.add(new Object[] {description, input, pattern, expected});
|
||||
return data.toArray(new Object[0][]);
|
||||
}
|
||||
|
||||
@Test(dataProvider = "Stream<String>")
|
||||
public void testStrings(String description, String input, Pattern pattern, List<String> expected) {
|
||||
Supplier<Stream<String>> ss = () -> pattern.splitAsStream(input);
|
||||
withData(TestData.Factory.ofSupplier(description, ss))
|
||||
.stream(LambdaTestHelpers.identity())
|
||||
.expectedResult(expected)
|
||||
.exercise();
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user