@@ -23,7 +23,6 @@ var suite = TestSuite("Span properties backed by inline storage")
2323defer { runAllTests ( ) }
2424
2525suite. test ( " CollectionOfOne.span property " )
26- . skip ( . wasiAny( reason: " Trap tests aren't supported on WASI. " ) )
2726. skip ( . custom(
2827 { if #available( SwiftStdlib 6 . 2 , * ) { false } else { true } } ,
2928 reason: " Requires Swift 6.2's standard library "
@@ -35,15 +34,13 @@ suite.test("CollectionOfOne.span property")
3534 let u = Array ( s. utf8)
3635 let c = CollectionOfOne ( consume s)
3736 s = " "
38- expectCrashLater ( )
3937 let span = c. span
4038 expectEqual ( span. count, 1 )
4139 let v = Array ( span [ 0 ] . utf8)
4240 expectEqual ( u, v)
4341}
4442
4543suite. test ( " CollectionOfOne.span property (simple) " )
46- . skip ( . wasiAny( reason: " Trap tests aren't supported on WASI. " ) )
4744. skip ( . custom(
4845 { if #available( SwiftStdlib 6 . 2 , * ) { false } else { true } } ,
4946 reason: " Requires Swift 6.2's standard library "
@@ -52,7 +49,6 @@ suite.test("CollectionOfOne.span property (simple)")
5249 guard #available( SwiftStdlib 6 . 2 , * ) else { return }
5350
5451 let c = CollectionOfOne ( Int . random ( in: 0 ..< 100000 ) )
55- expectCrashLater ( )
5652 let span = c. span
5753 expectEqual ( span. count, c. indices. count)
5854 expectEqual ( span [ 0 ] , c [ 0 ] )
@@ -63,7 +59,6 @@ struct Padded: BitwiseCopyable {
6359}
6460
6561suite. test ( " CollectionOfOne.span stride test " )
66- . skip ( . wasiAny( reason: " Trap tests aren't supported on WASI. " ) )
6762. skip ( . custom(
6863 { if #available( SwiftStdlib 6 . 2 , * ) { false } else { true } } ,
6964 reason: " Requires Swift 6.2's standard library "
@@ -72,14 +67,25 @@ suite.test("CollectionOfOne.span stride test")
7267 guard #available( SwiftStdlib 6 . 2 , * ) else { return }
7368
7469 let c = CollectionOfOne ( Padded ( storage: ( - 1 , 1 ) ) )
75- expectCrashLater ( )
7670 let span = c. span
7771 let bytes = span. bytes
7872 expectEqual ( bytes. byteCount, MemoryLayout . size ( ofValue: c) )
7973}
8074
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+
8188suite. test ( " InlineArray.span property " )
82- . skip ( . wasiAny( reason: " Trap tests aren't supported on WASI. " ) )
8389. skip ( . custom(
8490 { if #available( SwiftStdlib 6 . 2 , * ) { false } else { true } } ,
8591 reason: " Requires Swift 6.2's standard library "
@@ -89,7 +95,6 @@ suite.test("InlineArray.span property")
8995
9096 var s = InlineArray< 5 , Int> ( repeating : 0 )
9197 s [ 3 ] = . random( in: 0 ..< 1000 )
92- expectCrashLater ( )
9398 let span = s. span
9499 expectEqual ( span. count, s. count)
95100 for i in s. indices {
@@ -98,7 +103,6 @@ suite.test("InlineArray.span property")
98103}
99104
100105suite. test ( " InlineArray.span property (String) " )
101- . skip ( . wasiAny( reason: " Trap tests aren't supported on WASI. " ) )
102106. skip ( . custom(
103107 { if #available( SwiftStdlib 6 . 2 , * ) { false } else { true } } ,
104108 reason: " Requires Swift 6.2's standard library "
@@ -108,10 +112,37 @@ suite.test("InlineArray.span property (String)")
108112
109113 var s = InlineArray< 5 , String> ( repeating: " 0 " )
110114 s[3] = String(Int.random(in: 0..<1000))
111- expectCrashLater()
112115 let span = s.span
113116 expectEqual(span.count, s.count)
114117 for i in s.indices {
115118 expectEqual(span[i], s[i])
116119 }
117120}
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