// RUN: %target-run-simple-swift // REQUIRES: executable_test // // Tests for error handling. // import StdlibUnittest enum Excuse : Error { case CatAteHomework(LifetimeTracked) } var ErrorHandlingTests = TestSuite("ErrorHandling") func furball(_ b: Bool) throws -> LifetimeTracked { if b { throw Excuse.CatAteHomework(LifetimeTracked(0)) } else { return LifetimeTracked(1) } } ErrorHandlingTests.test("tryCatch") { do { try expectEqual(furball(false), LifetimeTracked(1)) } catch { expectUnreachable() } do { try furball(true) expectUnreachable() } catch let e { if case Excuse.CatAteHomework(let c) = e { expectEqual(c, LifetimeTracked(0)) } else { expectUnreachable() } } } ErrorHandlingTests.test("tryOptional") { expectEqual(LifetimeTracked(1), try? furball(false)) expectEqual(Optional.none, try? furball(true)) } runAllTests()