blob: 4905c67f363f88250ca2ab6d44415d76d9ed79d6 [file] [log] [blame]
// 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<LifetimeTracked>.none, try? furball(true))
}
runAllTests()