mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
114 lines
4.0 KiB
Plaintext
114 lines
4.0 KiB
Plaintext
%{
|
|
# This is a template of validation-test/stdlib/Collection/LazyMap*.swift
|
|
#
|
|
# cd validation-test/stdlib/Collection
|
|
# ../../../utils/gyb --line-directive="" Inputs/LazyMapTemplate.swift.gyb | ../../../utils/split_file.py
|
|
|
|
variations = [
|
|
('', 'Sequence'),
|
|
('', 'Collection'),
|
|
('Bidirectional', 'Collection'),
|
|
('RandomAccess', 'Collection')
|
|
]
|
|
}%
|
|
|
|
|
|
% for (traversal, kind) in variations:
|
|
// BEGIN LazyMap${traversal}${kind}.swift
|
|
// -*- swift -*-
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Automatically Generated From validation-test/stdlib/Collection/Inputs/LazyMapTemplate.swift.gyb
|
|
// Do Not Edit Directly!
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// RUN: %target-run-simple-swift
|
|
// REQUIRES: executable_test
|
|
|
|
// Use swift-version 4.
|
|
// UNSUPPORTED: swift_test_mode_optimize_none_with_implicit_dynamic
|
|
|
|
import StdlibUnittest
|
|
import StdlibCollectionUnittest
|
|
|
|
var CollectionTests = TestSuite("Collection")
|
|
|
|
// Test collections using value types as elements.
|
|
CollectionTests.add${traversal}${kind}Tests(
|
|
make${kind}: { (elements: [OpaqueValue<Int>]) -> LazyMap${traversal}${kind}<Minimal${traversal}${kind}<OpaqueValue<Int>>, OpaqueValue<Int>> in
|
|
Minimal${traversal}${kind}(elements: elements).lazy.map(identity)
|
|
},
|
|
wrapValue: identity,
|
|
extractValue: identity,
|
|
make${kind}OfEquatable: { (elements: [MinimalEquatableValue]) -> LazyMap${traversal}${kind}<Minimal${traversal}${kind}<MinimalEquatableValue>, MinimalEquatableValue> in
|
|
Minimal${traversal}${kind}(elements: elements).lazy.map(identityEq)
|
|
},
|
|
wrapValueIntoEquatable: identityEq,
|
|
extractValueFromEquatable: identityEq
|
|
)
|
|
|
|
// Test collections using reference types as elements.
|
|
CollectionTests.add${traversal}${kind}Tests(
|
|
make${kind}: { (elements: [LifetimeTracked]) -> LazyMap${traversal}${kind}<Minimal${traversal}${kind}<LifetimeTracked>, LifetimeTracked> in
|
|
Minimal${traversal}${kind}(elements: elements).lazy.map { $0 }
|
|
},
|
|
wrapValue: { (element: OpaqueValue<Int>) in
|
|
LifetimeTracked(element.value, identity: element.identity)
|
|
},
|
|
extractValue: { (element: LifetimeTracked) in
|
|
OpaqueValue(element.value, identity: element.identity)
|
|
},
|
|
make${kind}OfEquatable: { (elements: [LifetimeTracked]) -> LazyMap${traversal}${kind}<Minimal${traversal}${kind}<LifetimeTracked>, LifetimeTracked> in
|
|
Minimal${traversal}${kind}(elements: elements).lazy.map { $0 }
|
|
},
|
|
wrapValueIntoEquatable: { (element: MinimalEquatableValue) in
|
|
LifetimeTracked(element.value, identity: element.identity)
|
|
},
|
|
extractValueFromEquatable: { (element: LifetimeTracked) in
|
|
MinimalEquatableValue(element.value, identity: element.identity)
|
|
}
|
|
)
|
|
|
|
// Test sequence instances and iterators.
|
|
CollectionTests.test("LazyMapCollection instances (${traversal}${kind})") {
|
|
do {
|
|
let expected = ["convent", "conform", "constrict", "condone"]
|
|
let base = ["vent", "form", "strict", "done"]
|
|
% if kind == 'Sequence':
|
|
checkSequence(
|
|
expected,
|
|
MinimalSequence(elements: base).lazy.map { "con" + $0 })
|
|
% elif traversal == '' and kind == 'Collection':
|
|
checkForwardCollection(expected,
|
|
MinimalCollection(elements: base).lazy.map { "con" + $0 },
|
|
sameValue: { $0 == $1 })
|
|
% else:
|
|
check${traversal}${kind}(expected,
|
|
Minimal${traversal}${kind}(elements: base).lazy.map { "con" + $0 },
|
|
sameValue: { $0 == $1 })
|
|
% end
|
|
}
|
|
do {
|
|
let expected = [1, 4, 9, 16, 25, 36, 49, 64]
|
|
let base = [1, 2, 3, 4, 5, 6, 7, 8]
|
|
% if kind == 'Sequence':
|
|
checkSequence(
|
|
expected,
|
|
MinimalSequence(elements: base).lazy.map { $0 * $0 })
|
|
% elif traversal == '' and kind == 'Collection':
|
|
checkForwardCollection(expected,
|
|
MinimalCollection(elements: base).lazy.map { $0 * $0 },
|
|
sameValue: { $0 == $1 })
|
|
% else:
|
|
check${traversal}${kind}(
|
|
expected,
|
|
Minimal${traversal}${kind}(elements: base).lazy.map { $0 * $0 },
|
|
sameValue: { $0 == $1 })
|
|
% end
|
|
}
|
|
}
|
|
|
|
runAllTests()
|
|
|
|
% end # for (traversal, kind) in variations
|