| // RUN: %empty-directory(%t) |
| // RUN: %target-build-swift %s -import-objc-header %S/Inputs/errors.h -o %t/main |
| // RUN: %target-codesign %t/main |
| // RUN: %target-run %t/main |
| |
| // REQUIRES: executable_test |
| // REQUIRES: objc_interop |
| |
| // |
| // Tests for error handling. |
| // |
| |
| import StdlibUnittest |
| |
| struct Problem : Error {} |
| |
| class ErrorImpl : NSObject, ErrorTest { |
| func succeed() throws -> Any { return self } |
| func fail() throws -> Any { throw Problem() } |
| } |
| |
| |
| var ErrorHandlingTests = TestSuite("ErrorHandling") |
| |
| func sameObject(_ x: Any?, _ y: Any?) -> Bool { |
| return x.map { $0 as AnyObject } === y.map { $0 as AnyObject } |
| } |
| |
| ErrorHandlingTests.test("succeed") { |
| let obj = ErrorImpl() |
| let result = testSucceed(obj) |
| expectTrue(sameObject(obj, result)) |
| } |
| |
| ErrorHandlingTests.test("succeedIgnoringError") { |
| let obj = ErrorImpl() |
| let result = testSucceedIgnoringError(obj) |
| expectTrue(sameObject(obj, result)) |
| } |
| |
| ErrorHandlingTests.test("fail") { |
| let obj = ErrorImpl() |
| let result = testFail(obj) |
| expectNil(result) |
| } |
| |
| ErrorHandlingTests.test("failIgnoringError") { |
| let obj = ErrorImpl() |
| let result = testFailIgnoringError(obj) |
| expectNil(result) |
| } |
| |
| runAllTests() |