Skip to content

Commit b6447d1

Browse files
committed
Merge pull request #2346 from austinzheng/validation-tests
Improving LazyFilterCollection tests with random data
2 parents 49da716 + 706510f commit b6447d1

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

validation-test/stdlib/Collection/LazyFilterCollection.swift.gyb

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
// RUN: %S/../../../utils/line-directive %t/main.swift -- %target-run %t/LazyFilterCollection.swift.a.out
88
// REQUIRES: executable_test
99

10+
import SwiftPrivate
1011
import StdlibUnittest
1112
import StdlibCollectionUnittest
1213

@@ -20,13 +21,11 @@ variations = [('', 'Sequence'), ('', 'Collection'), ('Bidirectional', 'Collectio
2021
% for (traversal, kind) in variations:
2122
CollectionTests.add${traversal}${kind}Tests(
2223
make${kind}: { (elements: [OpaqueValue<Int>]) -> LazyFilter${traversal}${kind}<Minimal${traversal}${kind}<OpaqueValue<Int>>> in
23-
// FIXME: create a better sequence and filter
2424
Minimal${traversal}${kind}(elements: elements).lazy.filter { _ in return true }
2525
},
2626
wrapValue: identity,
2727
extractValue: identity,
2828
make${kind}OfEquatable: { (elements: [MinimalEquatableValue]) -> LazyFilter${traversal}${kind}<Minimal${traversal}${kind}<MinimalEquatableValue>> in
29-
// FIXME: create a better sequence and filter
3029
Minimal${traversal}${kind}(elements: elements).lazy.filter { _ in return true }
3130
},
3231
wrapValueIntoEquatable: identityEq,
@@ -123,26 +122,31 @@ CollectionTests.test("LazyFilterCollection instances (${traversal}${kind})") {
123122
do {
124123
var resiliency = CollectionMisuseResiliencyChecks.all
125124
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+
}
126132

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]
129133
% if kind == 'Sequence':
130134
checkSequence(
131135
expected,
132-
MinimalSequence(elements: base).lazy.filter { $0 % 2 == 0 },
136+
MinimalSequence(elements: base).lazy.filter(predicate),
133137
resiliencyChecks: resiliency
134138
)
135139
% elif traversal == '' and kind == 'Collection':
136140
checkForwardCollection(
137141
expected,
138-
MinimalCollection(elements: base).lazy.filter { $0 % 2 == 0 },
142+
MinimalCollection(elements: base).lazy.filter(predicate),
139143
resiliencyChecks: resiliency,
140144
sameValue: { $0 == $1 }
141145
)
142146
% else:
143147
check${traversal}${kind}(
144148
expected,
145-
Minimal${traversal}${kind}(elements: base).lazy.filter { $0 % 2 == 0 },
149+
Minimal${traversal}${kind}(elements: base).lazy.filter(predicate),
146150
resiliencyChecks: resiliency,
147151
sameValue: { $0 == $1 }
148152
)

0 commit comments

Comments
 (0)