@@ -12,6 +12,19 @@ func checkMatch<S: Collection, T: Collection>(_ x: S, _ y: T, _ i: S.Index)
1212 expectEqual ( x [ i] , y [ i] )
1313}
1414
15+ func checkMatchContiguousStorage< S: Collection , T: Collection > ( _ x: S , _ y: T )
16+ where S. Element == T . Element , S. Element: Equatable
17+ {
18+ let xElement = x. withContiguousStorageIfAvailable { $0. first }
19+ let yElement = y. withContiguousStorageIfAvailable { $0. first }
20+ expectEqual ( xElement, yElement)
21+ }
22+
23+ func checkHasContiguousStorage< S: Collection > ( _ x: S ) {
24+ let hasStorage = x. withContiguousStorageIfAvailable { _ in true } ?? false
25+ expectTrue ( hasStorage)
26+ }
27+
1528SubstringTests . test ( " Equality " ) {
1629 let s = " abcdefg "
1730 let s1 = s [ s. index ( s. startIndex, offsetBy: 2 ) ..<
@@ -228,6 +241,13 @@ SubstringTests.test("UTF8View") {
228241 expectEqual ( " " , String ( t. dropLast ( 100 ) ) !)
229242 expectEqual ( " " , String ( u. dropFirst ( 100 ) ) !)
230243 expectEqual ( " " , String ( u. dropLast ( 100 ) ) !)
244+
245+ checkHasContiguousStorage ( s. utf8)
246+ checkHasContiguousStorage ( t)
247+ checkHasContiguousStorage ( u)
248+ checkMatchContiguousStorage ( Array ( s. utf8) , s. utf8)
249+ checkMatchContiguousStorage ( Array ( t) , t)
250+ checkMatchContiguousStorage ( Array ( u) , u)
231251 }
232252}
233253
0 commit comments