1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
// RUN: %target-run-simple-swift(-I %S/Inputs/ -Xfrontend -enable-experimental-cxx-interop)
//
// Re-test with optimizations:
// RUN: %target-run-simple-swift(-I %S/Inputs/ -Xfrontend -enable-experimental-cxx-interop -O)
//
// REQUIRES: executable_test
import StdlibUnittest
import CopyMoveAssignment
var CxxCopyMoveAssignTestSuite = TestSuite("CxxCopyMoveAssignTestSuite")
@inline(never)
func takeValue<T>(_ x: T) {
let _ = x
}
CxxCopyMoveAssignTestSuite.test("NonTrivialCopyAssign") {
do {
var instance = NonTrivialCopyAssign()
expectEqual(0, instance.copyAssignCounter)
let instance2 = NonTrivialCopyAssign()
instance = instance2
// `operator=` isn't called.
expectEqual(0, instance.copyAssignCounter)
takeValue(instance2)
}
// The number of construcors and destructors called for `NonTrivialCopyAssign` must be balanced.
expectEqual(0, InstanceBalanceCounter.getCounterValue())
}
CxxCopyMoveAssignTestSuite.test("NonTrivialMoveAssign") {
do {
var instance = NonTrivialMoveAssign()
expectEqual(0, instance.moveAssignCounter)
instance = NonTrivialMoveAssign()
// `operator=` isn't called.
expectEqual(0, instance.moveAssignCounter)
}
// The number of construcors and destructors called for `NonTrivialCopyAssign` must be balanced.
expectEqual(0, InstanceBalanceCounter.getCounterValue())
}
CxxCopyMoveAssignTestSuite.test("NonTrivialCopyAndCopyMoveAssign") {
do {
var instance = NonTrivialCopyAndCopyMoveAssign()
expectEqual(0, instance.assignCounter)
let instance2 = NonTrivialCopyAndCopyMoveAssign()
instance = instance2
// `operator=` isn't called.
expectEqual(0, instance.assignCounter)
takeValue(instance2)
}
// The number of construcors and destructors called for `NonTrivialCopyAndCopyMoveAssign` must be balanced.
expectEqual(0, InstanceBalanceCounter.getCounterValue())
}
runAllTests()
|