@@ -270,4 +270,76 @@ StdSpanTestSuite.test("Initialize Array from SpanOfString") {
270
270
expectEqual ( arr, newArr)
271
271
}
272
272
273
+ StdSpanTestSuite . test ( " Span inside C++ struct " ) {
274
+ let spb = getStructSpanBox ( )
275
+ expectEqual ( spb. ispan. size ( ) , 3 )
276
+ expectFalse ( spb. ispan. empty ( ) )
277
+ expectEqual ( spb. sspan. size ( ) , 3 )
278
+ expectFalse ( spb. sspan. empty ( ) )
279
+
280
+ var icount : Int32 = 1
281
+ for e in spb. ispan {
282
+ expectEqual ( e, icount)
283
+ icount += 1
284
+ }
285
+
286
+ var scount = 0
287
+ for e in spb. sspan {
288
+ scount += e. length ( ) ;
289
+ }
290
+
291
+ let imapResult = spb. ispan. map { $0 + 5 }
292
+ expectEqual ( imapResult, [ 6 , 7 , 8 ] )
293
+
294
+ let smapResult = spb. sspan. map { $0. length ( ) }
295
+ expectEqual ( smapResult, [ 0 , 2 , 3 ] )
296
+
297
+ let ifilterResult = spb. ispan. filter { $0 > 2 }
298
+ expectEqual ( ifilterResult. count, 1 )
299
+ expectEqual ( ifilterResult, [ 3 ] )
300
+
301
+ let sfilterResult = spb. sspan. filter { $0. length ( ) > 1 }
302
+ expectEqual ( sfilterResult. count, 2 )
303
+ expectEqual ( sfilterResult, [ " ab " , " abc " ] )
304
+ }
305
+
306
+ StdSpanTestSuite . test ( " Span inside Swift struct " ) {
307
+ struct SpanBox {
308
+ var ispan : Span
309
+ var sspan : SpanOfString
310
+ }
311
+
312
+ let spb = SpanBox ( ispan: ispan, sspan: sspan)
313
+ expectEqual ( spb. ispan. size ( ) , 3 )
314
+ expectFalse ( spb. ispan. empty ( ) )
315
+ expectEqual ( spb. sspan. size ( ) , 3 )
316
+ expectFalse ( spb. sspan. empty ( ) )
317
+
318
+ var icount : Int32 = 1
319
+ for e in spb. ispan {
320
+ expectEqual ( e, icount)
321
+ icount += 1
322
+ }
323
+
324
+ var scount = 0
325
+ for e in spb. sspan {
326
+ scount += e. length ( ) ;
327
+ }
328
+
329
+ let imapResult = spb. ispan. map { $0 + 5 }
330
+ expectEqual ( imapResult, [ 6 , 7 , 8 ] )
331
+
332
+ let smapResult = spb. sspan. map { $0. length ( ) }
333
+ expectEqual ( smapResult, [ 0 , 2 , 3 ] )
334
+
335
+ let ifilterResult = spb. ispan. filter { $0 > 2 }
336
+ expectEqual ( ifilterResult. count, 1 )
337
+ expectEqual ( ifilterResult, [ 3 ] )
338
+
339
+ let sfilterResult = spb. sspan. filter { $0. length ( ) > 1 }
340
+ expectEqual ( sfilterResult. count, 2 )
341
+ expectEqual ( sfilterResult, [ " ab " , " abc " ] )
342
+ }
343
+
344
+
273
345
runAllTests ( )
0 commit comments