blob: 84b686dc7a26f274048ada841caf6cec2bf75026 [file] [log] [blame]
// RUN: %target-swift-frontend -typecheck %s
// REQUIRES: objc_interop
// REQUIRES: foundation
import StdlibUnittest
import Foundation
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
private func testWebSocketTask() {
let task = URLSession.shared.webSocketTask(with: URL(string:"wss://test.example")!)
task.resume()
task.send(.string("Hello")) { error in
assert(error == nil)
}
task.receive { result in
switch result {
case .success(.string(let string)):
assert(string == "Hello")
task.cancel()
default:
assertionFailure()
}
}
}
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
private func testURLError(_ error: Error) {
if let error = error as? URLError {
if error.networkUnavailableReason == .constrained {
// Handle Low Data Mode
}
if error.backgroundTaskCancelledReason == .backgroundUpdatesDisabled {
// Background refresh disabled
}
_ = try? error.downloadTaskResumeData?.write(to: URL(fileURLWithPath: "/tmp/1.data"))
}
}
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
private func testURLCache() {
_ = URLCache(memoryCapacity: 0, diskCapacity: 0)
_ = URLCache(memoryCapacity: 0, diskCapacity: 0, directory: URL(fileURLWithPath: "/tmp"))
}
@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)
private func testTaskMetrics(_ metrics: URLSessionTaskMetrics) {
if let transaction = metrics.transactionMetrics.last {
if transaction.remotePort == 443 {
// HTTPS default
}
if transaction.negotiatedTLSProtocolVersion == .TLSv13 {
// TLS 1.3
}
if transaction.negotiatedTLSCipherSuite == .CHACHA20_POLY1305_SHA256 {
// CHACHA20_POLY1305_SHA256
}
}
}