@@ -76,4 +76,67 @@ final class ChunkedTests: XCTestCase {
7676 XCTAssertLazySequence ( fruits. lazy. chunked ( by: { $0. first == $1. first } ) )
7777 XCTAssertLazySequence ( fruits. lazy. chunked ( on: { $0. first } ) )
7878 }
79+
80+
81+ //===----------------------------------------------------------------------===//
82+ // Tests for `chunks(ofCount:)`
83+ //===----------------------------------------------------------------------===//
84+ func testChunksOfCount( ) {
85+ XCTAssertEqualSequences ( [ Int] ( ) . chunks ( ofCount: 1 ) , [ ] )
86+ XCTAssertEqualSequences ( [ Int] ( ) . chunks ( ofCount: 5 ) , [ ] )
87+
88+ let collection = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]
89+ XCTAssertEqualSequences ( collection. chunks ( ofCount: 1 ) ,
90+ [ [ 1 ] , [ 2 ] , [ 3 ] , [ 4 ] , [ 5 ] , [ 6 ] , [ 7 ] , [ 8 ] , [ 9 ] , [ 10 ] ] )
91+ XCTAssertEqualSequences ( collection. chunks ( ofCount: 3 ) ,
92+ [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 ] , [ 10 ] ] )
93+ XCTAssertEqualSequences ( collection. chunks ( ofCount: 5 ) ,
94+ [ [ 1 , 2 , 3 , 4 , 5 ] , [ 6 , 7 , 8 , 9 , 10 ] ] )
95+ XCTAssertEqualSequences ( collection. chunks ( ofCount: 11 ) ,
96+ [ [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] ] )
97+ }
98+
99+ func testChunksOfCountBidirectional( ) {
100+ let collection = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]
101+
102+ XCTAssertEqualSequences ( collection. chunks ( ofCount: 1 ) . reversed ( ) ,
103+ [ [ 10 ] , [ 9 ] , [ 8 ] , [ 7 ] , [ 6 ] , [ 5 ] , [ 4 ] , [ 3 ] , [ 2 ] , [ 1 ] ] )
104+ XCTAssertEqualSequences ( collection. chunks ( ofCount: 3 ) . reversed ( ) ,
105+ [ [ 10 ] , [ 7 , 8 , 9 ] , [ 4 , 5 , 6 ] , [ 1 , 2 , 3 ] ] )
106+ XCTAssertEqualSequences ( collection. chunks ( ofCount: 5 ) . reversed ( ) ,
107+ [ [ 6 , 7 , 8 , 9 , 10 ] , [ 1 , 2 , 3 , 4 , 5 ] ] )
108+ XCTAssertEqualSequences ( collection. chunks ( ofCount: 11 ) . reversed ( ) ,
109+ [ [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] ] )
110+ }
111+
112+ func testChunksOfCountCount( ) {
113+ XCTAssertEqual ( [ Int] ( ) . chunks ( ofCount: 1 ) . count, 0 )
114+ XCTAssertEqual ( [ Int] ( ) . chunks ( ofCount: 5 ) . count, 0 )
115+
116+ let collection = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]
117+ XCTAssertEqual ( collection. chunks ( ofCount: 1 ) . count, 10 )
118+ XCTAssertEqual ( collection. chunks ( ofCount: 3 ) . count, 4 )
119+ XCTAssertEqual ( collection. chunks ( ofCount: 5 ) . count, 2 )
120+ XCTAssertEqual ( collection. chunks ( ofCount: 11 ) . count, 1 )
121+ }
122+
123+ func testEmptyChunksTraversal( ) {
124+ let emptyChunks = [ Int] ( ) . chunks ( ofCount: 1 )
125+
126+ validateIndexTraversals ( emptyChunks)
127+ }
128+
129+ func testChunksOfCountTraversal( ) {
130+ let collection = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]
131+ let chunks = collection. chunks ( ofCount: 2 )
132+
133+ validateIndexTraversals ( chunks)
134+ }
135+
136+ func testChunksOfCountWithRemainderTraversal( ) {
137+ let collection = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]
138+ let chunks = collection. chunks ( ofCount: 3 )
139+
140+ validateIndexTraversals ( chunks)
141+ }
79142}
0 commit comments