@@ -96,6 +96,7 @@ class TestNSString : XCTestCase {
96
96
( " test_reflection " , { _ in test_reflection } ) ,
97
97
( " test_replacingOccurrences " , test_replacingOccurrences) ,
98
98
( " test_getLineStart " , test_getLineStart) ,
99
+ ( " test_substringWithRange " , test_substringWithRange) ,
99
100
]
100
101
}
101
102
@@ -1063,6 +1064,43 @@ class TestNSString : XCTestCase {
1063
1064
XCTAssertTrue ( testString. hasPrefix ( " " ) )
1064
1065
XCTAssertTrue ( testString. hasSuffix ( " " ) )
1065
1066
}
1067
+
1068
+ func test_substringWithRange( ) {
1069
+ let trivial = NSString ( string: " swift.org " )
1070
+ XCTAssertEqual ( trivial. substring ( with: NSMakeRange ( 0 , 5 ) ) , " swift " )
1071
+
1072
+ let surrogatePairSuffix = NSString ( string: " Hurray🎉 " )
1073
+ XCTAssertEqual ( surrogatePairSuffix. substring ( with: NSMakeRange ( 0 , 7 ) ) , " Hurray� " )
1074
+
1075
+ let surrogatePairPrefix = NSString ( string: " 🐱Cat " )
1076
+ XCTAssertEqual ( surrogatePairPrefix. substring ( with: NSMakeRange ( 1 , 4 ) ) , " �Cat " )
1077
+
1078
+ let singleChar = NSString ( string: " 😹 " )
1079
+ XCTAssertEqual ( singleChar. substring ( with: NSMakeRange ( 0 , 1 ) ) , " � " )
1080
+
1081
+ let crlf = NSString ( string: " \r \n " )
1082
+ XCTAssertEqual ( crlf. substring ( with: NSMakeRange ( 0 , 1 ) ) , " \r " )
1083
+ XCTAssertEqual ( crlf. substring ( with: NSMakeRange ( 1 , 1 ) ) , " \n " )
1084
+ XCTAssertEqual ( crlf. substring ( with: NSMakeRange ( 1 , 0 ) ) , " " )
1085
+
1086
+ let bothEnds1 = NSString ( string: " 😺😺 " )
1087
+ XCTAssertEqual ( bothEnds1. substring ( with: NSMakeRange ( 1 , 2 ) ) , " �� " )
1088
+
1089
+ let s1 = NSString ( string: " 😺 \r \n " )
1090
+ XCTAssertEqual ( s1. substring ( with: NSMakeRange ( 1 , 2 ) ) , " � \r " )
1091
+
1092
+ let s2 = NSString ( string: " \r \n 😺 " )
1093
+ XCTAssertEqual ( s2. substring ( with: NSMakeRange ( 1 , 2 ) ) , " \n � " )
1094
+
1095
+ let s3 = NSString ( string: " 😺cats😺 " )
1096
+ XCTAssertEqual ( s3. substring ( with: NSMakeRange ( 1 , 6 ) ) , " �cats� " )
1097
+
1098
+ let s4 = NSString ( string: " 😺cats \r \n " )
1099
+ XCTAssertEqual ( s4. substring ( with: NSMakeRange ( 1 , 6 ) ) , " �cats \r " )
1100
+
1101
+ let s5 = NSString ( string: " \r \n cats😺 " )
1102
+ XCTAssertEqual ( s5. substring ( with: NSMakeRange ( 1 , 6 ) ) , " \n cats� " )
1103
+ }
1066
1104
}
1067
1105
1068
1106
struct ComparisonTest {
0 commit comments