Skip to content

Commit 23ce324

Browse files
committed
[test] adjust String span tests
1 parent 690f3e6 commit 23ce324

File tree

2 files changed

+61
-27
lines changed

2 files changed

+61
-27
lines changed

test/stdlib/Span/BridgedStringUTF8ViewSpanTests.swift

Lines changed: 44 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,10 @@
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

1918
import StdlibUnittest
2019

@@ -25,6 +24,7 @@ defer { runAllTests() }
2524

2625
let 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+
7993
strings.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
}

test/stdlib/Span/StringUTF8SpanProperty.swift

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13-
// RUN: %target-run-stdlib-swift(-enable-experimental-feature LifetimeDependence -enable-experimental-feature AddressableTypes)
13+
// RUN: %target-run-stdlib-swift
1414

1515
// REQUIRES: executable_test
16-
// REQUIRES: swift_feature_LifetimeDependence
17-
// REQUIRES: swift_feature_AddressableTypes
1816

1917
import StdlibUnittest
2018

@@ -25,9 +23,15 @@ suite.test("Span from Small String")
2523
.require(.stdlib_6_2).code {
2624
guard #available(SwiftStdlib 6.2, *) else { return }
2725

28-
let s = "A small string.".utf8
26+
var s = "123456789".utf8
2927
let u = Array(s)
30-
let span = s.span
28+
#if os(watchOS) && _pointerBitWidth(_32)
29+
expectNil(s._span)
30+
#endif
31+
var string = String(s)
32+
string.reserveCapacity(12)
33+
s = (consume string).utf8
34+
guard let span = expectNotNil(s._span) else { return }
3135

3236
let count = span.count
3337
expectEqual(count, s.count)
@@ -43,7 +47,7 @@ suite.test("Span from Large Native String")
4347

4448
let s = "A long string that is altogether not smol.".utf8
4549
let u = Array(s)
46-
let span = s.span
50+
guard let span = expectNotNil(s._span) else { return }
4751

4852
let count = span.count
4953
expectEqual(count, s.count)
@@ -59,7 +63,7 @@ suite.test("Span from Small String's Substring")
5963

6064
let s = "A small string.".dropFirst(8).utf8
6165
let u = Array("string.".utf8)
62-
let span = s.span
66+
guard let span = expectNotNil(s._span) else { return }
6367

6468
let count = span.count
6569
expectEqual(count, s.count)
@@ -76,7 +80,7 @@ suite.test("Span from Large Native String's Substring")
7680
let t = "A long string that is altogether not smol."
7781
let s = t.dropFirst(22).prefix(10).utf8
7882
let u = Array("altogether".utf8)
79-
let span = s.span
83+
guard let span = expectNotNil(s._span) else { return }
8084

8185
let count = span.count
8286
expectEqual(count, s.count)
@@ -91,10 +95,10 @@ suite.test("Span from String.utf8Span")
9195
guard #available(SwiftStdlib 6.2, *) else { return }
9296

9397
let s = String(200)
94-
let utf8span = s.utf8Span
98+
guard let utf8span = expectNotNil(s._utf8Span) else { return }
9599
let span1 = utf8span.span
96100
let utf8view = s.utf8
97-
let span2 = utf8view.span
101+
guard let span2 = expectNotNil(utf8view._span) else { return }
98102
expectEqual(span1.count, span2.count)
99103
for (i,j) in zip(span1.indices, span2.indices) {
100104
expectEqual(span1[i], span2[j])
@@ -106,7 +110,7 @@ suite.test("UTF8Span from Span")
106110
guard #available(SwiftStdlib 6.2, *) else { return }
107111

108112
let s = String(200).utf8
109-
let span1 = s.span
113+
guard let span1 = expectNotNil(s._span) else { return }
110114
guard let utf8 = expectNotNil(try? UTF8Span(validating: span1)) else { return }
111115

112116
let span2 = utf8.span
@@ -118,10 +122,10 @@ suite.test("Span from Substring.utf8Span")
118122
guard #available(SwiftStdlib 6.2, *) else { return }
119123

120124
let s = String(22000).dropFirst().dropLast()
121-
let utf8span = s.utf8Span
125+
guard let utf8span = expectNotNil(s._utf8Span) else { return }
122126
let span1 = utf8span.span
123127
let utf8view = s.utf8
124-
let span2 = utf8view.span
128+
guard let span2 = expectNotNil(utf8view._span) else { return }
125129
expectEqual(span1.count, span2.count)
126130
for (i,j) in zip(span1.indices, span2.indices) {
127131
expectEqual(span1[i], span2[j])

0 commit comments

Comments
 (0)