@@ -23,7 +23,6 @@ var suite = TestSuite("Span properties backed by inline storage")
23
23
defer { runAllTests ( ) }
24
24
25
25
suite. test ( " CollectionOfOne.span property " )
26
- . skip ( . wasiAny( reason: " Trap tests aren't supported on WASI. " ) )
27
26
. skip ( . custom(
28
27
{ if #available( SwiftStdlib 6 . 2 , * ) { false } else { true } } ,
29
28
reason: " Requires Swift 6.2's standard library "
@@ -35,15 +34,13 @@ suite.test("CollectionOfOne.span property")
35
34
let u = Array ( s. utf8)
36
35
let c = CollectionOfOne ( consume s)
37
36
s = " "
38
- expectCrashLater ( )
39
37
let span = c. span
40
38
expectEqual ( span. count, 1 )
41
39
let v = Array ( span [ 0 ] . utf8)
42
40
expectEqual ( u, v)
43
41
}
44
42
45
43
suite. test ( " CollectionOfOne.span property (simple) " )
46
- . skip ( . wasiAny( reason: " Trap tests aren't supported on WASI. " ) )
47
44
. skip ( . custom(
48
45
{ if #available( SwiftStdlib 6 . 2 , * ) { false } else { true } } ,
49
46
reason: " Requires Swift 6.2's standard library "
@@ -52,7 +49,6 @@ suite.test("CollectionOfOne.span property (simple)")
52
49
guard #available( SwiftStdlib 6 . 2 , * ) else { return }
53
50
54
51
let c = CollectionOfOne ( Int . random ( in: 0 ..< 100000 ) )
55
- expectCrashLater ( )
56
52
let span = c. span
57
53
expectEqual ( span. count, c. indices. count)
58
54
expectEqual ( span [ 0 ] , c [ 0 ] )
@@ -63,7 +59,6 @@ struct Padded: BitwiseCopyable {
63
59
}
64
60
65
61
suite. test ( " CollectionOfOne.span stride test " )
66
- . skip ( . wasiAny( reason: " Trap tests aren't supported on WASI. " ) )
67
62
. skip ( . custom(
68
63
{ if #available( SwiftStdlib 6 . 2 , * ) { false } else { true } } ,
69
64
reason: " Requires Swift 6.2's standard library "
@@ -72,14 +67,25 @@ suite.test("CollectionOfOne.span stride test")
72
67
guard #available( SwiftStdlib 6 . 2 , * ) else { return }
73
68
74
69
let c = CollectionOfOne ( Padded ( storage: ( - 1 , 1 ) ) )
75
- expectCrashLater ( )
76
70
let span = c. span
77
71
let bytes = span. bytes
78
72
expectEqual ( bytes. byteCount, MemoryLayout . size ( ofValue: c) )
79
73
}
80
74
75
+ suite. test ( " CollectionOfOne.mutableSpan property (simple) " )
76
+ . require ( . stdlib_6_2) . code {
77
+ guard #available( SwiftStdlib 6 . 2 , * ) else { return }
78
+
79
+ var c = CollectionOfOne ( Int . random ( in: 0 ..< 100000 ) )
80
+ expectEqual ( c. count, 1 )
81
+ var span = c. mutableSpan
82
+ expectEqual ( span. count, 1 )
83
+ span [ 0 ] = Int . random ( in: . min..< 0 )
84
+ let r = span [ 0 ]
85
+ expectEqual ( c [ 0 ] , r)
86
+ }
87
+
81
88
suite. test ( " InlineArray.span property " )
82
- . skip ( . wasiAny( reason: " Trap tests aren't supported on WASI. " ) )
83
89
. skip ( . custom(
84
90
{ if #available( SwiftStdlib 6 . 2 , * ) { false } else { true } } ,
85
91
reason: " Requires Swift 6.2's standard library "
@@ -89,7 +95,6 @@ suite.test("InlineArray.span property")
89
95
90
96
var s = InlineArray< 5 , Int> ( repeating : 0 )
91
97
s [ 3 ] = . random( in: 0 ..< 1000 )
92
- expectCrashLater ( )
93
98
let span = s. span
94
99
expectEqual ( span. count, s. count)
95
100
for i in s. indices {
@@ -98,7 +103,6 @@ suite.test("InlineArray.span property")
98
103
}
99
104
100
105
suite. test ( " InlineArray.span property (String) " )
101
- . skip ( . wasiAny( reason: " Trap tests aren't supported on WASI. " ) )
102
106
. skip ( . custom(
103
107
{ if #available( SwiftStdlib 6 . 2 , * ) { false } else { true } } ,
104
108
reason: " Requires Swift 6.2's standard library "
@@ -108,10 +112,37 @@ suite.test("InlineArray.span property (String)")
108
112
109
113
var s = InlineArray< 5 , String> ( repeating: " 0 " )
110
114
s[3] = String(Int.random(in: 0..<1000))
111
- expectCrashLater()
112
115
let span = s.span
113
116
expectEqual(span.count, s.count)
114
117
for i in s.indices {
115
118
expectEqual(span[i], s[i])
116
119
}
117
120
}
121
+
122
+ suite.test( " InlineArray. mutableSpan property" )
123
+ .require(.stdlib_6_2).code
124
+ {
125
+ guard #available(SwiftStdlib 6.2, *) else { return }
126
+
127
+ var v = InlineArray<5, Int>(repeating: 0)
128
+ let c = v.count
129
+ var span = v.mutableSpan
130
+ expectEqual(span.count, c)
131
+ span[3] = Int.random(in: .min..<0)
132
+ let r = span[3]
133
+ expectEqual(v[3], r)
134
+ }
135
+
136
+ suite.test( " InlineArray. mutableSpan property ( String) " )
137
+ .require(.stdlib_6_2).code
138
+ {
139
+ guard #available(SwiftStdlib 6.2, *) else { return }
140
+
141
+ var v = InlineArray<5, String>(repeating: " 0 " )
142
+ let c = v. count
143
+ var span = v. mutableSpan
144
+ expectEqual ( span. count, c)
145
+ span [ 3 ] = String ( repeating: " 0 " , count: Int . random ( in: 100 ..< 500 ) )
146
+ let s = span [ 3 ]
147
+ expectTrue ( s. _isIdentical ( to: v [ 3 ] ) )
148
+ }
0 commit comments