@@ -76,4 +76,67 @@ final class ChunkedTests: XCTestCase {
76
76
XCTAssertLazySequence ( fruits. lazy. chunked ( by: { $0. first == $1. first } ) )
77
77
XCTAssertLazySequence ( fruits. lazy. chunked ( on: { $0. first } ) )
78
78
}
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
+ }
79
142
}
0 commit comments