Files
swift-mirror/validation-test/stdlib/StdlibUnittestFoundationExtras.swift

114 lines
3.0 KiB
Swift

// RUN: %target-run-simple-swift
// REQUIRES: executable_test
// REQUIRES: objc_interop
import StdlibUnittest
// Also import modules which are used by StdlibUnittest internally. This
// workaround is needed to link all required libraries in case we compile
// StdlibUnittest with -sil-serialize-all.
import SwiftPrivate
#if _runtime(_ObjC)
import ObjectiveC
#endif
import Foundation
import StdlibUnittestFoundationExtras
var FoundationExtrasTests = TestSuite("FoundationExtras")
FoundationExtrasTests.test("withOverriddenNSLocaleCurrentLocale(NSLocale)") {
// Check two locales to make sure the behavior is correct even if one of
// these locales happens to be the same as the actual current locale.
do {
let result = withOverriddenNSLocaleCurrentLocale(
NSLocale(localeIdentifier: "en_US")) {
() -> Int in
expectEqual("en_US", NSLocale.current().localeIdentifier)
return 42
}
expectEqual(42, result)
}
do {
let result = withOverriddenNSLocaleCurrentLocale(
NSLocale(localeIdentifier: "uk")) {
() -> Int in
expectEqual("uk", NSLocale.current().localeIdentifier)
return 42
}
expectEqual(42, result)
}
}
FoundationExtrasTests.test("withOverriddenNSLocaleCurrentLocale(NSLocale)/nested") {
withOverriddenNSLocaleCurrentLocale(
NSLocale(localeIdentifier: "uk")) {
() -> Void in
expectCrashLater()
withOverriddenNSLocaleCurrentLocale(
NSLocale(localeIdentifier: "uk")) {
() -> Void in
return ()
}
}
}
FoundationExtrasTests.test("withOverriddenNSLocaleCurrentLocale(String)") {
// Check two locales to make sure the behavior is correct even if one of
// these locales happens to be the same as the actual current locale.
do {
let result = withOverriddenNSLocaleCurrentLocale("en_US") {
() -> Int in
expectEqual("en_US", NSLocale.current().localeIdentifier)
return 42
}
expectEqual(42, result)
}
do {
let result = withOverriddenNSLocaleCurrentLocale("uk") {
() -> Int in
expectEqual("uk", NSLocale.current().localeIdentifier)
return 42
}
expectEqual(42, result)
}
}
@_silgen_name("objc_autorelease")
func objc_autorelease(ref: AnyObject)
FoundationExtrasTests.test("objc_autorelease()") {
autoreleasepool {
// Check that objc_autorelease indeed autoreleases.
objc_autorelease(LifetimeTracked(101))
expectEqual(1, LifetimeTracked.instances)
}
}
FoundationExtrasTests.test("autoreleasepoolIfUnoptimizedReturnAutoreleased()/autorelease") {
autoreleasepool {
autoreleasepoolIfUnoptimizedReturnAutoreleased {
objc_autorelease(LifetimeTracked(103))
expectEqual(1, LifetimeTracked.instances)
}
}
}
FoundationExtrasTests.test("autoreleasepoolIfUnoptimizedReturnAutoreleased()/return-autoreleased") {
autoreleasepool {
autoreleasepoolIfUnoptimizedReturnAutoreleased {
let nsa = [ LifetimeTracked(104) ] as NSArray
expectEqual(1, LifetimeTracked.instances)
_blackHole(nsa[0])
}
expectEqual(0, LifetimeTracked.instances)
}
}
runAllTests()