@@ -270,4 +270,76 @@ StdSpanTestSuite.test("Initialize Array from SpanOfString") {
270270 expectEqual ( arr, newArr)
271271}
272272
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+
273345runAllTests ( )
0 commit comments