3
3
4
4
using System ;
5
5
using System . Collections ;
6
+ using System . Collections . Generic ;
6
7
using Xunit ;
7
8
8
9
public static unsafe class StringTests
@@ -702,6 +703,13 @@ public static void TestJoin()
702
703
{
703
704
String s ;
704
705
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
+
705
713
s = String . Join ( "$$" , new String [ ] { "Foo" , "Bar" , "Baz" } , 0 , 3 ) ;
706
714
Assert . True ( s == "Foo$$Bar$$Baz" ) ;
707
715
@@ -711,13 +719,66 @@ public static void TestJoin()
711
719
s = String . Join ( "$$" , new String [ ] { "Foo" , "Bar" , "Baz" } , 1 , 1 ) ;
712
720
Assert . True ( s == "Bar" ) ;
713
721
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" ) ;
717
724
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" } ) ;
720
737
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 ) ) ;
721
782
}
722
783
723
784
[ Fact ]
0 commit comments