@@ -81,7 +81,11 @@ class TestNSString : XCTestCase {
81
81
( " test_resolvingSymlinksInPath " , test_resolvingSymlinksInPath) ,
82
82
( " test_expandingTildeInPath " , test_expandingTildeInPath) ,
83
83
( " test_standardizingPath " , test_standardizingPath) ,
84
- ( " test_removingPercentEncoding " , test_removingPercentEncoding) ,
84
+ ( " test_addingPercentEncoding " , test_addingPercentEncoding) ,
85
+ ( " test_removingPercentEncodingInLatin " , test_removingPercentEncodingInLatin) ,
86
+ ( " test_removingPercentEncodingInNonLatin " , test_removingPercentEncodingInNonLatin) ,
87
+ ( " test_removingPersentEncodingWithoutEncoding " , test_removingPersentEncodingWithoutEncoding) ,
88
+ ( " test_addingPercentEncodingAndBack " , test_addingPercentEncodingAndBack) ,
85
89
( " test_stringByAppendingPathExtension " , test_stringByAppendingPathExtension) ,
86
90
( " test_deletingPathExtension " , test_deletingPathExtension) ,
87
91
( " test_ExternalRepresentation " , test_ExternalRepresentation) ,
@@ -867,13 +871,66 @@ class TestNSString : XCTestCase {
867
871
}
868
872
}
869
873
870
- func test_removingPercentEncoding( ) {
874
+ func test_addingPercentEncoding( ) {
875
+ let s1 = " a b " . addingPercentEncoding ( withAllowedCharacters: . alphanumerics)
876
+ XCTAssertEqual ( s1, " a%20b " )
877
+
878
+ let s2 = " \u{0434} \u{043E} \u{043C} " . addingPercentEncoding ( withAllowedCharacters: . alphanumerics)
879
+ XCTAssertEqual ( s2, " %D0%B4%D0%BE%D0%BC " )
880
+ }
881
+
882
+ func test_removingPercentEncodingInLatin( ) {
871
883
let s1 = " a%20b " . removingPercentEncoding
872
884
XCTAssertEqual ( s1, " a b " )
873
885
let s2 = " a%1 b " . removingPercentEncoding
874
886
XCTAssertNil ( s2, " returns nil for a string with an invalid percent encoding " )
875
887
}
876
888
889
+ func test_removingPercentEncodingInNonLatin( ) {
890
+ let s1 = " \u{043C} \u{043E} \u{0439} %20 \u{0434} \u{043E} \u{043C} " . removingPercentEncoding
891
+ XCTAssertEqual ( s1, " \u{043C} \u{043E} \u{0439} \u{0434} \u{043E} \u{043C} " )
892
+
893
+ let s2 = " %D0%B4%D0%BE%D0%BC " . removingPercentEncoding
894
+ XCTAssertEqual ( s2, " \u{0434} \u{043E} \u{043C} " )
895
+
896
+ let s3 = " \u{00E0} a%1 b " . removingPercentEncoding
897
+ XCTAssertNil ( s3, " returns nil for a string with an invalid percent encoding " )
898
+ }
899
+
900
+ func test_removingPersentEncodingWithoutEncoding( ) {
901
+ let cyrillicString = " \u{0434} \u{043E} \u{043C} "
902
+ let cyrillicEscapedString = cyrillicString. removingPercentEncoding
903
+ XCTAssertEqual ( cyrillicString, cyrillicEscapedString)
904
+
905
+ let chineseString = " \u{623F} \u{5B50} "
906
+ let chineseEscapedString = chineseString. removingPercentEncoding
907
+ XCTAssertEqual ( chineseString, chineseEscapedString)
908
+
909
+ let arabicString = " \u{0645} \u{0646} \u{0632} \u{0644} "
910
+ let arabicEscapedString = arabicString. removingPercentEncoding
911
+ XCTAssertEqual ( arabicString, arabicEscapedString)
912
+
913
+ let randomString = " \u{00E0} \u{00E6} "
914
+ let randomEscapedString = randomString. removingPercentEncoding
915
+ XCTAssertEqual ( randomString, randomEscapedString)
916
+
917
+ let latinString = " home "
918
+ let latinEscapedString = latinString. removingPercentEncoding
919
+ XCTAssertEqual ( latinString, latinEscapedString)
920
+ }
921
+
922
+ func test_addingPercentEncodingAndBack( ) {
923
+ let latingString = " a b "
924
+ let escapedLatingString = latingString. addingPercentEncoding ( withAllowedCharacters: . alphanumerics)
925
+ let returnedLatingString = escapedLatingString? . removingPercentEncoding
926
+ XCTAssertEqual ( returnedLatingString, latingString)
927
+
928
+ let cyrillicString = " \u{0434} \u{043E} \u{043C} "
929
+ let escapedCyrillicString = cyrillicString. addingPercentEncoding ( withAllowedCharacters: . alphanumerics)
930
+ let returnedCyrillicString = escapedCyrillicString? . removingPercentEncoding
931
+ XCTAssertEqual ( returnedCyrillicString, cyrillicString)
932
+ }
933
+
877
934
func test_stringByAppendingPathExtension( ) {
878
935
let values = [
879
936
NSString ( string: " /tmp/scratch.old " ) : " /tmp/scratch.old.tiff " ,
0 commit comments