| // RUN: %empty-directory(%t) |
| // RUN: %empty-directory(%t/Inputs) |
| // RUN: %empty-directory(%t/rth) |
| // RUN: env PYTHONPATH=%S/Inputs %gyb < %s > %t/test_keypaths.swift |
| // RUN: env PYTHONPATH=%S/Inputs %gyb < %S/Inputs/keypaths.swift.gyb > %t/Inputs/keypaths.swift |
| // RUN: %rth --target-build-swift "%target-build-swift" --target-run "%target-run" --t "%t/rth" --S "%t" --s "%t/test_keypaths.swift" --lib-prefix "lib" --lib-suffix "%{target-shared-library-suffix}" --target-codesign "%target-codesign" --no-symbol-diff |
| |
| // REQUIRES: executable_test |
| |
| // Uses swift-version 4. |
| // UNSUPPORTED: swift_test_mode_optimize_none_with_implicit_dynamic |
| |
| import keypaths |
| import StdlibUnittest |
| |
| %{ |
| from keypaths_gyb import testCases |
| }% |
| |
| var tests = TestSuite("key path resilience") |
| |
| % for (name, kind, before, after, addsAPI) in testCases: |
| |
| % if addsAPI: |
| #if BEFORE |
| % end |
| |
| % if kind == "mutating" or kind == "nonmutating": |
| |
| tests.test("AnEnum.${name}") { |
| let fromModule = AnEnum.keyPath_${name} |
| let formedLocally = \AnEnum.${name} |
| |
| expectEqual(fromModule, formedLocally) |
| } |
| |
| % elif kind == "stored": |
| |
| % else: |
| %{ raise ValueError("improper test case kind") }% |
| % end |
| |
| % if addsAPI: |
| #endif // BEFORE |
| % end |
| |
| % end |
| |
| % for (name, kind, before, after, addsAPI) in testCases: |
| |
| % if addsAPI: |
| #if BEFORE |
| % end |
| |
| % if kind == "mutating" or kind == "nonmutating" or kind == "stored": |
| |
| tests.test("AStruct.${name}") { |
| let fromModule = AStruct.keyPath_${name} |
| let formedLocally = \AStruct.${name} |
| |
| expectEqual(fromModule, formedLocally) |
| } |
| |
| % else: |
| %{ raise ValueError("improper test case kind") }% |
| % end |
| |
| % if addsAPI: |
| #endif // BEFORE |
| % end |
| |
| % end |
| |
| % for (name, kind, before, after, addsAPI) in testCases: |
| |
| % if addsAPI: |
| #if BEFORE |
| % end |
| |
| % if kind == "nonmutating" or kind == "stored": |
| |
| tests.test("AClass.${name}") { |
| let fromModule = AClass.keyPath_${name} |
| let formedLocally = \AClass.${name} |
| |
| expectEqual(fromModule, formedLocally) |
| } |
| |
| tests.test("AFinalClass.${name}") { |
| let fromModule = AFinalClass.keyPath_${name} |
| let formedLocally = \AFinalClass.${name} |
| |
| expectEqual(fromModule, formedLocally) |
| } |
| |
| % elif kind == "mutating": |
| |
| % else: |
| %{ raise ValueError("improper test case kind") }% |
| % end |
| |
| % if addsAPI: |
| #endif |
| % end |
| |
| % end |
| |
| runAllTests() |