| // RUN: %empty-directory(%t) |
| // |
| // RUN: %target-clang -fobjc-arc %S/Inputs/ObjCClasses/ObjCClasses.m -c -o %t/ObjCClasses.o |
| // RUN: %target-build-swift -I %S/Inputs/ObjCClasses/ %t/ObjCClasses.o %s -o %t/a.out |
| // RUN: %target-codesign %t/a.out |
| // RUN: %target-run %t/a.out |
| |
| // REQUIRES: executable_test |
| // REQUIRES: objc_interop |
| |
| import ObjCClasses |
| import Foundation |
| import StdlibUnittest |
| |
| var ErrorHandlingTests = TestSuite("ErrorHandling") |
| |
| ErrorHandlingTests.test("nil") { |
| do { |
| try TestingNSError.throwNilError() |
| expectUnreachable() |
| } catch { |
| expectEqual("Foundation._GenericObjCError.nilError", String(reflecting: error)) |
| } |
| } |
| |
| ErrorHandlingTests.test("pointerFailure") { |
| do { |
| _ = try TestingNSError.maybeThrow(true) |
| expectUnreachable() |
| } catch let error as NSError { |
| expectEqual("pointer error", error.domain) |
| } |
| } |
| |
| ErrorHandlingTests.test("pointerSuccess") { |
| do { |
| var pointer = try TestingNSError.maybeThrow(false) |
| expectType(UnsafeMutableRawPointer.self, &pointer) |
| expectEqual(UnsafeMutablePointer(bitPattern: 42)!, pointer) |
| } catch { |
| expectUnreachableCatch(error) |
| } |
| } |
| |
| ErrorHandlingTests.test("blockFailure") { |
| do { |
| _ = try TestingNSError.blockThrowError() |
| expectUnreachable() |
| } catch let error as NSError { |
| expectEqual("block error", error.domain) |
| } |
| } |
| |
| runAllTests() |
| |