7
7
// RUN: %S/../../../utils/line-directive %t/main.swift -- %target-run %t/LazyFilterCollection.swift.a.out
8
8
// REQUIRES: executable_test
9
9
10
+ import SwiftPrivate
10
11
import StdlibUnittest
11
12
import StdlibCollectionUnittest
12
13
@@ -20,13 +21,11 @@ variations = [('', 'Sequence'), ('', 'Collection'), ('Bidirectional', 'Collectio
20
21
% for (traversal, kind) in variations:
21
22
CollectionTests . add ${ traversal} ${ kin d } Tests(
22
23
make ${ kind} : { ( elements: [ OpaqueValue < Int > ] ) -> LazyFilter ${ traversal} ${ kin d} < Minimal${ traversal} ${ kind} < OpaqueValue< Int>>> in
23
- // FIXME: create a better sequence and filter
24
24
Minimal${ traversal} ${ kind} ( elements: elements) . lazy. filter { _ in return true }
25
25
} ,
26
26
wrapValue: identity,
27
27
extractValue: identity,
28
28
make ${ kind} OfEquatable: { ( elements: [ MinimalEquatableValue ] ) -> LazyFilter ${ traversal} ${ kin d} < Minimal${ traversal} ${ kind} < MinimalEquatableValue>> in
29
- // FIXME: create a better sequence and filter
30
29
Minimal${ traversal} ${ kind} ( elements: elements) . lazy. filter { _ in return true }
31
30
} ,
32
31
wrapValueIntoEquatable: identityEq,
@@ -123,26 +122,31 @@ CollectionTests.test("LazyFilterCollection instances (${traversal}${kind})") {
123
122
do {
124
123
var resiliency = CollectionMisuseResiliencyChecks . all
125
124
resiliency. callNextOnExhaustedGenerator = false
125
+ let predicate : Int -> Bool = { $0 % 3 == 0 || $0 % 5 == 0 }
126
+
127
+ let base = randArray ( 500 )
128
+ var expected : [ Int ] = [ ]
129
+ for element in base where predicate ( element) {
130
+ expected. append ( element)
131
+ }
126
132
127
- let expected = [ 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 ]
128
- let base = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 ]
129
133
% if kind == 'Sequence':
130
134
checkSequence(
131
135
expected,
132
- MinimalSequence ( elements: base) . lazy. filter { $0 % 2 == 0 } ,
136
+ MinimalSequence ( elements: base) . lazy. filter ( predicate ) ,
133
137
resiliencyChecks: resiliency
134
138
)
135
139
% elif traversal == '' and kind == 'Collection':
136
140
checkForwardCollection(
137
141
expected,
138
- MinimalCollection ( elements: base) . lazy. filter { $0 % 2 == 0 } ,
142
+ MinimalCollection ( elements: base) . lazy. filter ( predicate ) ,
139
143
resiliencyChecks: resiliency,
140
144
sameValue: { $0 == $1 }
141
145
)
142
146
% else:
143
147
check${ traversal} ${ kind} (
144
148
expected,
145
- Minimal ${ traversal} ${ kind} ( elements: base) . lazy. filter { $0 % 2 == 0 } ,
149
+ Minimal ${ traversal} ${ kind} ( elements: base) . lazy. filter ( predicate ) ,
146
150
resiliencyChecks: resiliency,
147
151
sameValue: { $0 == $1 }
148
152
)
0 commit comments