Files
swift-mirror/test/Concurrency/Runtime/async_task_sleep.swift
Karoy Lorentey 47956908b7 [Concurrency] SwiftStdlib 5.5 ⟹ SwiftStdlib 5.1 (usages)
The concurrency runtime now deploys back to macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, which corresponds to the 5.1 release of the stdlib.

Adjust macro usages accordingly.
2021-10-28 14:36:36 -07:00

49 lines
1.1 KiB
Swift

// RUN: %target-run-simple-swift( -Xfrontend -disable-availability-checking %import-libdispatch -parse-as-library) | %FileCheck %s --dump-input always
// REQUIRES: executable_test
// REQUIRES: concurrency
// REQUIRES: libdispatch
// rdar://76038845
// REQUIRES: concurrency_runtime
// UNSUPPORTED: back_deployment_runtime
import _Concurrency
// FIXME: should not depend on Dispatch
import Dispatch
@available(SwiftStdlib 5.1, *)
@main struct Main {
static let pause = 500_000_000 // 500ms
static func main() async {
await testSleepDuration()
await testSleepDoesNotBlock()
}
static func testSleepDuration() async {
let start = DispatchTime.now()
await Task.sleep(UInt64(pause))
let stop = DispatchTime.now()
// assert that at least the specified time passed since calling `sleep`
assert(stop >= (start + .nanoseconds(pause)))
}
static func testSleepDoesNotBlock() async {
// FIXME: Should run on main executor
let task = detach {
print("Run first")
}
await Task.sleep(UInt64(pause))
print("Run second")
// CHECK: Run first
// CHECK: Run second
await task.get()
}
}