%{ # 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]) -> LazyMap${traversal}${kind}>, OpaqueValue> in Minimal${traversal}${kind}(elements: elements).lazy.map(identity) }, wrapValue: identity, extractValue: identity, make${kind}OfEquatable: { (elements: [MinimalEquatableValue]) -> LazyMap${traversal}${kind}, 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}, LifetimeTracked> in Minimal${traversal}${kind}(elements: elements).lazy.map { $0 } }, wrapValue: { (element: OpaqueValue) 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}, 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