Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit dc45820

Browse files
committed
Additional String.Join tests
1 parent cda0ae1 commit dc45820

File tree

1 file changed

+66
-5
lines changed

1 file changed

+66
-5
lines changed

src/System.Runtime/tests/System/String.cs

Lines changed: 66 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using System;
55
using System.Collections;
6+
using System.Collections.Generic;
67
using Xunit;
78

89
public static unsafe class StringTests
@@ -702,6 +703,13 @@ public static void TestJoin()
702703
{
703704
String s;
704705

706+
// String Array
707+
s = String.Join("$$", new String[] { null }, 0, 1);
708+
Assert.True(s == "");
709+
710+
s = String.Join("$$", new String[] { null, "Bar", null }, 0, 3);
711+
Assert.True(s == "$$Bar$$");
712+
705713
s = String.Join("$$", new String[] { "Foo", "Bar", "Baz" }, 0, 3);
706714
Assert.True(s == "Foo$$Bar$$Baz");
707715

@@ -711,13 +719,66 @@ public static void TestJoin()
711719
s = String.Join("$$", new String[] { "Foo", "Bar", "Baz" }, 1, 1);
712720
Assert.True(s == "Bar");
713721

714-
Object[] o = { "Red", "Green", "Blue" };
715-
s = String.Join("@@", o);
716-
Assert.True(s == "Red@@Green@@Blue");
722+
s = String.Join("$$", new String[] { "Red", "Green", "Blue" });
723+
Assert.True(s == "Red$$Green$$Blue");
717724

718-
String[] ss = { "Red", "Green", "Blue" };
719-
s = String.Join("@@", ss);
725+
Assert.Throws<ArgumentNullException>(() => s = String.Join("$$", (String[])null));
726+
Assert.Throws<ArgumentNullException>(() => s = String.Join("$$", (String[])null, 0, 0));
727+
Assert.Throws<ArgumentOutOfRangeException>(() => s = String.Join("$$", new String[] { "Foo" }, -1, 0));
728+
Assert.Throws<ArgumentOutOfRangeException>(() => s = String.Join("$$", new String[] { "Foo" }, 0, -1));
729+
Assert.Throws<ArgumentOutOfRangeException>(() => s = String.Join("$$", new String[] { "Foo" }, 0, 2));
730+
Assert.Throws<ArgumentOutOfRangeException>(() => s = String.Join("$$", new String[] { "Foo" }, 2, 1));
731+
732+
// Object Array
733+
s = String.Join("@@", new object[] { "Red" });
734+
Assert.True(s == "Red");
735+
736+
s = String.Join("@@", new object[] { "Red", "Green", "Blue" });
720737
Assert.True(s == "Red@@Green@@Blue");
738+
739+
s = String.Join("@@", new object[] { null, "Green", "Blue" }); // Feature of object[] overload to exit if [0] is null
740+
Assert.True(s == "");
741+
742+
s = String.Join("@@", new object[] { "Red", null, "Blue" });
743+
Assert.True(s == "Red@@@@Blue");
744+
745+
Assert.Throws<ArgumentNullException>(() => s = String.Join("@@", (Object[])null));
746+
747+
// IEnumerable<String>
748+
s = String.Join("|", new List<string>() { });
749+
Assert.True(s == "");
750+
751+
s = String.Join("|", new List<string>() { null });
752+
Assert.True(s == "");
753+
754+
s = String.Join("|", new List<string>() { "Red" });
755+
Assert.True(s == "Red");
756+
757+
s = String.Join("|", new List<string>() { "Red", "Green", "Blue" });
758+
Assert.True(s == "Red|Green|Blue");
759+
760+
s = String.Join("|", new List<string>() { null, "Green", null });
761+
Assert.True(s == "|Green|");
762+
763+
Assert.Throws<ArgumentNullException>(() => s = String.Join("|", (IEnumerable<String>)null));
764+
765+
// IEnumerable<Object>
766+
s = String.Join("--", new List<Object>() { });
767+
Assert.True(s == "");
768+
769+
s = String.Join("--", new List<Object>() { null });
770+
Assert.True(s == "");
771+
772+
s = String.Join("--", new List<Object>() { "Red" });
773+
Assert.True(s == "Red");
774+
775+
s = String.Join("--", new List<Object>() { "Red", "Green", "Blue" });
776+
Assert.True(s == "Red--Green--Blue");
777+
778+
s = String.Join("--", new List<Object>() { null, "Green", null });
779+
Assert.True(s == "--Green--");
780+
781+
Assert.Throws<ArgumentNullException>(() => s = String.Join("--", (IEnumerable<Object>)null));
721782
}
722783

723784
[Fact]

0 commit comments

Comments
 (0)