mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
89 lines
2.8 KiB
Swift
89 lines
2.8 KiB
Swift
// RUN: %target-run-simple-swift(-I %S/Inputs/ -Xfrontend -enable-experimental-cxx-interop)
|
|
//
|
|
// REQUIRES: executable_test
|
|
//
|
|
|
|
import StdlibUnittest
|
|
import AmbiguousMethods
|
|
|
|
var CxxAmbiguousMethodTestSuite = TestSuite("CxxAmbiguousMethods")
|
|
|
|
// It's important to check that both calling the const version first
|
|
// and the mutable version first pass. This helps confirm that the lookup
|
|
// table is being properly seeded.
|
|
CxxAmbiguousMethodTestSuite.test("[Const First] numberOfMutableMethodsCalled: () -> Int") {
|
|
var instance = HasAmbiguousMethods()
|
|
|
|
// Soundness check. Make sure we start at 0
|
|
// and that calling numberOfMutableMethodsCalled doesn't change
|
|
// the count
|
|
expectEqual(0, instance.numberOfMutableMethodsCalled())
|
|
expectEqual(0, instance.numberOfMutableMethodsCalled())
|
|
|
|
// Check that mutable version _does_ change the mutable call count
|
|
expectEqual(0, instance.numberOfMutableMethodsCalled())
|
|
expectEqual(1, instance.numberOfMutableMethodsCalledMutating())
|
|
}
|
|
|
|
CxxAmbiguousMethodTestSuite.test("[Mutable First] numberOfMutableMethodsCalled: () -> Int") {
|
|
var instance = HasAmbiguousMethods()
|
|
|
|
// Call mutable first
|
|
expectEqual(1, instance.numberOfMutableMethodsCalledMutating())
|
|
expectEqual(1, instance.numberOfMutableMethodsCalled())
|
|
|
|
}
|
|
|
|
CxxAmbiguousMethodTestSuite.test("Basic Increment: (Int) -> Int") {
|
|
var instance = HasAmbiguousMethods()
|
|
var a: Int32 = 0
|
|
|
|
// Soundness check. Make sure we start at 0
|
|
expectEqual(0, instance.numberOfMutableMethodsCalled())
|
|
|
|
// Non mutable version should NOT change count
|
|
a = instance.increment(a);
|
|
expectEqual(1, a)
|
|
expectEqual(0, instance.numberOfMutableMethodsCalled())
|
|
|
|
a = instance.incrementMutating(a);
|
|
expectEqual(2, a)
|
|
expectEqual(1, instance.numberOfMutableMethodsCalled())
|
|
}
|
|
|
|
CxxAmbiguousMethodTestSuite.test("Out Param Increment: (Int, Int, inout Int) -> Void") {
|
|
var instance = HasAmbiguousMethods()
|
|
var out: Int32 = 0
|
|
|
|
// Soundness check. Make sure we start at 0
|
|
expectEqual(0, instance.numberOfMutableMethodsCalled())
|
|
|
|
// Non mutable version should NOT change count
|
|
instance.increment(0, 1, &out);
|
|
expectEqual(1, out)
|
|
expectEqual(0, instance.numberOfMutableMethodsCalled())
|
|
|
|
instance.incrementMutating(5, 2, &out);
|
|
expectEqual(7, out)
|
|
expectEqual(1, instance.numberOfMutableMethodsCalled())
|
|
}
|
|
|
|
CxxAmbiguousMethodTestSuite.test("Inout Param Increment: (inout Int, Int) -> Void") {
|
|
var instance = HasAmbiguousMethods()
|
|
var inoutVal: Int32 = 0
|
|
|
|
// Soundness check. Make sure we start at 0
|
|
expectEqual(0, instance.numberOfMutableMethodsCalled())
|
|
|
|
// Non mutable version should NOT change count
|
|
instance.increment(&inoutVal, 1);
|
|
expectEqual(1, inoutVal)
|
|
expectEqual(0, instance.numberOfMutableMethodsCalled())
|
|
|
|
instance.incrementMutating(&inoutVal, 2);
|
|
expectEqual(3, inoutVal)
|
|
expectEqual(1, instance.numberOfMutableMethodsCalled())
|
|
}
|
|
|
|
runAllTests()
|