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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
// 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()
|