|
| 1 | +// RUN: %target-run-simple-swift(-I %S/Inputs -cxx-interoperability-mode=swift-6) |
| 2 | +// RUN: %target-run-simple-swift(-I %S/Inputs -cxx-interoperability-mode=upcoming-swift) |
| 3 | + |
| 4 | +// REQUIRES: executable_test |
| 5 | + |
| 6 | +import StdlibUnittest |
| 7 | +import VirtualMethods |
| 8 | + |
| 9 | +var VirtualMethodsTestSuite = TestSuite("Virtual Methods") |
| 10 | + |
| 11 | +VirtualMethodsTestSuite.test("value type") { |
| 12 | + var d2 = Derived2() |
| 13 | + expectEqual(42, d2.f()) |
| 14 | + |
| 15 | + var d3 = Derived3() |
| 16 | + expectEqual(42, d3.f()) |
| 17 | + |
| 18 | + var d4 = Derived4() |
| 19 | + expectEqual(24, d4.f()) |
| 20 | + |
| 21 | + let d5 = DerivedFromCallsPureMethod() |
| 22 | + expectEqual(790, d5.getInt()) |
| 23 | + expectEqual(789, d5.getPureInt()) |
| 24 | + |
| 25 | + let d6 = DerivedFromDerivedFromCallsPureMethod() |
| 26 | + expectEqual(790, d6.getInt()) |
| 27 | + expectEqual(789, d6.getPureInt()) |
| 28 | +} |
| 29 | + |
| 30 | +if #available(macOS 13.3, *) { |
| 31 | + VirtualMethodsTestSuite.test("immortal reference type") { |
| 32 | + let i = Immortal.create() |
| 33 | + expectEqual(42, i.get42()) |
| 34 | + expectEqual(0, i.getIntValue()) |
| 35 | + |
| 36 | + let base = castToImmortalBase(i) |
| 37 | + expectEqual(42, base.get42()) |
| 38 | + expectEqual(42, base.getOverridden42()) |
| 39 | + expectEqual(0, base.getIntValue()) |
| 40 | + |
| 41 | + i.setIntValue(566) |
| 42 | + expectEqual(566, i.getIntValue()) |
| 43 | + expectEqual(566, base.getIntValue()) |
| 44 | + |
| 45 | + let d = DerivedFromImmortal.create() |
| 46 | + expectEqual(42, d.get42()) |
| 47 | + expectEqual(42, d.getOverridden42()) |
| 48 | + d.setIntValue(321) |
| 49 | + expectEqual(321, d.getIntValue()) |
| 50 | + let base2 = castToImmortalBase(castToImmortal(d)) |
| 51 | + expectEqual(321, base2.getIntValue()) |
| 52 | + } |
| 53 | +} |
| 54 | + |
| 55 | +runAllTests() |
0 commit comments