diff --git a/src/System.Runtime/ref/System.Runtime.cs b/src/System.Runtime/ref/System.Runtime.cs
index c0f6003eff9f..fff02e447d75 100644
--- a/src/System.Runtime/ref/System.Runtime.cs
+++ b/src/System.Runtime/ref/System.Runtime.cs
@@ -1937,6 +1937,12 @@ public void CopyTo(int sourceIndex, char[] destination, int destinationIndex, in
public string Remove(int startIndex, int count) { return default(string); }
public string Replace(char oldChar, char newChar) { return default(string); }
public string Replace(string oldValue, string newValue) { return default(string); }
+#if netcoreapp11
+ public string[] Split(char separator, System.StringSplitOptions options = System.StringSplitOptions.None) { return default(string[]); }
+ public string[] Split(char separator, int count, System.StringSplitOptions options = System.StringSplitOptions.None) { return default(string[]); }
+ public string[] Split(string separator, System.StringSplitOptions options = System.StringSplitOptions.None) { return default(string[]); }
+ public string[] Split(string separator, int count, System.StringSplitOptions options = System.StringSplitOptions.None) { return default(string[]); }
+#endif
public string[] Split(params char[] separator) { return default(string[]); }
public string[] Split(char[] separator, int count) { return default(string[]); }
public string[] Split(char[] separator, int count, System.StringSplitOptions options) { return default(string[]); }
diff --git a/src/System.Runtime/tests/Performance/Perf.String.cs b/src/System.Runtime/tests/Performance/Perf.String.cs
index 28c7cb4e194a..04f2a43a894a 100644
--- a/src/System.Runtime/tests/Performance/Perf.String.cs
+++ b/src/System.Runtime/tests/Performance/Perf.String.cs
@@ -185,10 +185,11 @@ public void Split(int size)
PerfUtils utils = new PerfUtils();
string testString = utils.CreateString(size);
string existingValue = testString.Substring(testString.Length / 2, 1);
+ string[] separator = new string[] { existingValue };
foreach (var iteration in Benchmark.Iterations)
using (iteration.StartMeasurement())
for (int i = 0; i < 10000; i++)
- testString.Split(existingValue);
+ testString.Split(separator, StringSplitOptions.None);
}
[Benchmark]
diff --git a/src/System.Runtime/tests/Performance/System.Runtime.Performance.Tests.csproj b/src/System.Runtime/tests/Performance/System.Runtime.Performance.Tests.csproj
index 89d63321ab31..41137536f8a7 100644
--- a/src/System.Runtime/tests/Performance/System.Runtime.Performance.Tests.csproj
+++ b/src/System.Runtime/tests/Performance/System.Runtime.Performance.Tests.csproj
@@ -27,7 +27,6 @@
-
Common\System\PerfUtils.cs
diff --git a/src/System.Runtime/tests/System.Runtime.Tests.csproj b/src/System.Runtime/tests/System.Runtime.Tests.csproj
index e5d64cd8f6f7..e7830a8cec2a 100644
--- a/src/System.Runtime/tests/System.Runtime.Tests.csproj
+++ b/src/System.Runtime/tests/System.Runtime.Tests.csproj
@@ -109,6 +109,9 @@
+
+
+
diff --git a/src/System.Runtime/tests/System/String.SplitTests.cs b/src/System.Runtime/tests/System/String.SplitTests.cs
index 1ff8c9aa1839..174b3c817e23 100644
--- a/src/System.Runtime/tests/System/String.SplitTests.cs
+++ b/src/System.Runtime/tests/System/String.SplitTests.cs
@@ -2,45 +2,10 @@
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
-using System;
using Xunit;
namespace System.Tests
{
- // TODO: Remove these extension methods when the actual methods are available on String in System.Runtime.dll
- internal static class TemporaryStringSplitExtensions
- {
- public static string[] Split(this string value, char separator)
- {
- return value.Split(new[] { separator });
- }
-
- public static string[] Split(this string value, char separator, StringSplitOptions options)
- {
- return value.Split(new[] { separator }, options);
- }
-
- public static string[] Split(this string value, char separator, int count, StringSplitOptions options)
- {
- return value.Split(new[] { separator }, count, options);
- }
-
- public static string[] Split(this string value, string separator)
- {
- return value.Split(new[] { separator }, StringSplitOptions.None);
- }
-
- public static string[] Split(this string value, string separator, StringSplitOptions options)
- {
- return value.Split(new[] { separator }, options);
- }
-
- public static string[] Split(this string value, string separator, int count, StringSplitOptions options)
- {
- return value.Split(new[] { separator }, count, options);
- }
- }
-
public static class StringSplitTests
{
[Fact]
@@ -50,11 +15,13 @@ public static void SplitInvalidCount()
const int count = -1;
const StringSplitOptions options = StringSplitOptions.None;
- Assert.Throws(() => value.Split(',', count, options));
- Assert.Throws(() => value.Split(new[] { ',' }, count));
- Assert.Throws(() => value.Split(new[] { ',' }, count, options));
- Assert.Throws(() => value.Split(",", count, options));
- Assert.Throws(() => value.Split(new[] { "," }, count, options));
+ Assert.Throws("count", () => value.Split(',', count));
+ Assert.Throws("count", () => value.Split(',', count, options));
+ Assert.Throws("count", () => value.Split(new[] { ',' }, count));
+ Assert.Throws("count", () => value.Split(new[] { ',' }, count, options));
+ Assert.Throws("count", () => value.Split(",", count));
+ Assert.Throws("count", () => value.Split(",", count, options));
+ Assert.Throws("count", () => value.Split(new[] { "," }, count, options));
}
[Fact]
@@ -92,9 +59,11 @@ public static void SplitZeroCountEmptyResult()
string[] expected = new string[0];
+ Assert.Equal(expected, value.Split(',', count));
Assert.Equal(expected, value.Split(',', count, options));
Assert.Equal(expected, value.Split(new[] { ',' }, count));
Assert.Equal(expected, value.Split(new[] { ',' }, count, options));
+ Assert.Equal(expected, value.Split(",", count));
Assert.Equal(expected, value.Split(",", count, options));
Assert.Equal(expected, value.Split(new[] { "," }, count, options));
}
@@ -127,9 +96,11 @@ public static void SplitOneCountSingleResult()
string[] expected = new[] { value };
+ Assert.Equal(expected, value.Split(',', count));
Assert.Equal(expected, value.Split(',', count, options));
Assert.Equal(expected, value.Split(new[] { ',' }, count));
Assert.Equal(expected, value.Split(new[] { ',' }, count, options));
+ Assert.Equal(expected, value.Split(",", count));
Assert.Equal(expected, value.Split(",", count, options));
Assert.Equal(expected, value.Split(new[] { "," }, count, options));
}
@@ -472,6 +443,15 @@ public static void SplitStringSeparator(string value, string separator, int coun
Assert.Equal(expected, value.Split(new[] { separator }, count, options));
}
+ [Fact]
+ public static void SplitNullCharArraySeparator_BindsToCharArrayOverload()
+ {
+ string value = "a b c";
+ string[] expected = new[] { "a", "b", "c" };
+ // Ensure Split(null) compiles successfully as a call to Split(char[])
+ Assert.Equal(expected, value.Split(null));
+ }
+
[Theory]
[InlineData("a b c", null, M, StringSplitOptions.None, new[] { "a", "b", "c" })]
[InlineData("a b c", new char[0], M, StringSplitOptions.None, new[] { "a", "b", "c" })]
diff --git a/src/System.Runtime/tests/System/StringSplitExtensions.cs b/src/System.Runtime/tests/System/StringSplitExtensions.cs
new file mode 100644
index 000000000000..ed3608c0059e
--- /dev/null
+++ b/src/System.Runtime/tests/System/StringSplitExtensions.cs
@@ -0,0 +1,22 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+namespace System.Tests
+{
+ // Allows the string.Split tests to run on targets that *do not* have the new string.Split overloads.
+ internal static class StringSplitExtensions
+ {
+ public static string[] Split(this string value, char separator, StringSplitOptions options = StringSplitOptions.None) =>
+ value.Split(new[] { separator }, options);
+
+ public static string[] Split(this string value, char separator, int count, StringSplitOptions options = StringSplitOptions.None) =>
+ value.Split(new[] { separator }, count, options);
+
+ public static string[] Split(this string value, string separator, StringSplitOptions options = StringSplitOptions.None) =>
+ value.Split(new[] { separator }, options);
+
+ public static string[] Split(this string value, string separator, int count, StringSplitOptions options = StringSplitOptions.None) =>
+ value.Split(new[] { separator }, count, options);
+ }
+}