1010//
1111//===----------------------------------------------------------------------===//
1212
13- // RUN: %target-run-stdlib-swift -enable-experimental-feature LifetimeDependence
13+ // RUN: %target-run-stdlib-swift
1414
1515// REQUIRES: executable_test
1616// REQUIRES: objc_interop
17- // REQUIRES: swift_feature_LifetimeDependence
1817
1918import StdlibUnittest
2019
@@ -25,6 +24,7 @@ defer { runAllTests() }
2524
2625let strings = [
2726 " Hello, World! " ,
27+ " 123456789 " ,
2828 " A long ASCII string exceeding 16 code units. " ,
2929 " 🇯🇵 " ,
3030 " 🏂☃❅❆❄︎⛄️❄️ " ,
@@ -37,13 +37,12 @@ strings.forEach { expected in
3737 . require ( . stdlib_6_2) . code {
3838 guard #available( SwiftStdlib 6 . 2 , * ) else { return }
3939
40- let string = NSString ( utf8String: expected)
41- guard let string else { expectNotNil ( string) ; return }
40+ guard let nss = expectNotNil ( NSString ( utf8String: expected) ) else { return }
4241
43- let bridged = String ( string ) . utf8
42+ let bridged = String ( nss ) . utf8
4443 var p : ObjectIdentifier ? = nil
4544 for (i, j) in zip ( 0 ..< 3 , bridged. indices) {
46- let span = bridged. span
45+ guard let span = expectNotNil ( bridged. _span ) else { continue }
4746 let c = span. withUnsafeBufferPointer {
4847 let o = unsafeBitCast ( $0. baseAddress, to: ObjectIdentifier . self)
4948 if p == nil {
@@ -63,34 +62,65 @@ strings.forEach { expected in
6362 . require ( . stdlib_6_2) . code {
6463 guard #available( SwiftStdlib 6 . 2 , * ) else { return }
6564
66- let string = NSString ( utf8String: expected)
67- guard let string else { expectNotNil ( string) ; return }
65+ guard let nss = expectNotNil ( NSString ( utf8String: expected) ) else { return }
6866
69- let bridged = String ( string )
67+ let bridged = String ( nss )
7068 let utf8 = bridged. utf8
71- let span = utf8. span
69+ guard let span = expectNotNil ( utf8. _span ) else { return }
7270 expectEqual ( span. count, expected. utf8. count)
7371 for (i, j) in zip ( span. indices, expected. utf8. indices) {
7472 expectEqual ( span [ i] , expected. utf8 [ j] )
7573 }
7674 }
7775}
7876
77+ strings. forEach { expected in
78+ suite. test ( " UTF8Span from Bridged String: \( expected) " )
79+ . require ( . stdlib_6_2) . code {
80+ guard #available( SwiftStdlib 6 . 2 , * ) else { return }
81+
82+ guard let nss = expectNotNil ( NSString ( utf8String: expected) ) else { return }
83+
84+ let bridged = String ( nss)
85+ guard let utf8 = expectNotNil ( bridged. _utf8Span) else { return }
86+ expectEqual ( utf8. count, expected. utf8. count)
87+ for (i, j) in zip ( utf8. span. indices, expected. utf8. indices) {
88+ expectEqual ( utf8. span [ i] , expected. utf8 [ j] )
89+ }
90+ }
91+ }
92+
7993strings. forEach { expected in
8094 suite. test ( " Span from Bridged String Substring: \( expected) " )
8195 . require ( . stdlib_6_2) . code {
8296 guard #available( SwiftStdlib 6 . 2 , * ) else { return }
8397
84- let string = NSString ( utf8String: expected)
85- guard let string else { expectNotNil ( string) ; return }
98+ guard let nss = expectNotNil ( NSString ( utf8String: expected) ) else { return }
8699
87- let bridged = String ( string ) . dropFirst ( )
100+ let bridged = String ( nss ) . dropFirst ( )
88101 let utf8 = bridged. utf8
89- let span = utf8. span
102+ guard let span = expectNotNil ( utf8. _span ) else { return }
90103 let expected = expected. dropFirst ( )
91104 expectEqual ( span. count, expected. utf8. count)
92105 for (i, j) in zip ( span. indices, expected. utf8. indices) {
93106 expectEqual ( span [ i] , expected. utf8 [ j] )
94107 }
95108 }
109+
110+ strings. forEach { expected in
111+ suite. test ( " UTF8Span from Bridged String Substring: \( expected) " )
112+ . require ( . stdlib_6_2) . code {
113+ guard #available( SwiftStdlib 6 . 2 , * ) else { return }
114+
115+ guard let nss = expectNotNil ( NSString ( utf8String: expected) ) else { return }
116+
117+ let bridged = String ( nss) . dropFirst ( )
118+ guard let utf8 = expectNotNil ( bridged. _utf8Span) else { return }
119+ let expected = expected. dropFirst ( )
120+ expectEqual ( utf8. count, expected. utf8. count)
121+ for (i, j) in zip ( utf8. span. indices, expected. utf8. indices) {
122+ expectEqual ( utf8. span [ i] , expected. utf8 [ j] )
123+ }
124+ }
125+ }
96126}
0 commit comments