blob: 3ed155f6395d96b826084ad7610d72860c9508c1 [file] [log] [blame]
// RUN: %target-run-simple-swift
// REQUIRES: executable_test
import StdlibUnittest
var LazyPropertyTestSuite = TestSuite("LazyProperty")
var lazyPropertyInitialized = 0
var lazyPropertyInitialized2 = 0
var lazyPropertyInitialized3 = 0
func lazyInitFunction() -> Int {
lazyPropertyInitialized += 1
return 0
}
class LazyPropertyClass {
var id : Int
lazy var lazyProperty = lazyInitFunction()
lazy var lazyProperty2: Int = {
lazyPropertyInitialized2 += 1
return 0
}()
lazy var lazyProperty3: Int! = {
lazyPropertyInitialized3 += 1
return 0
}()
init(_ ident : Int) {
id = ident
}
}
LazyPropertyTestSuite.test("Basic") {
var a = LazyPropertyClass(1)
expectEqual(0, lazyPropertyInitialized)
_ = a.lazyProperty
expectEqual(1, lazyPropertyInitialized)
_ = a.lazyProperty
a.lazyProperty = 42 // nothing interesting happens
expectEqual(0, lazyPropertyInitialized2)
_ = a.lazyProperty2
expectEqual(1, lazyPropertyInitialized2)
a = LazyPropertyClass(2)
a = LazyPropertyClass(3)
a.lazyProperty = 42
expectEqual(1, lazyPropertyInitialized)
expectEqual(0, lazyPropertyInitialized3)
expectEqual(0, a.lazyProperty3)
expectEqual(1, lazyPropertyInitialized3)
a.lazyProperty3 = nil
expectEqual(nil, a.lazyProperty3)
expectEqual(1, lazyPropertyInitialized3)
}
// Swift 3 had a bogus 'property resetting' behavior,
// but we don't allow that anymore.
LazyPropertyTestSuite.test("Reset") {
}
runAllTests()