mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
185 lines
4.0 KiB
Swift
185 lines
4.0 KiB
Swift
// RUN: %target-run-simple-swift(-I %S/Inputs/ -Xfrontend -enable-experimental-cxx-interop -Xfrontend -validate-tbd-against-ir=none -Xfrontend -disable-llvm-verify -g -Xfrontend -disable-availability-checking)
|
|
//
|
|
// REQUIRES: executable_test
|
|
|
|
import StdlibUnittest
|
|
import POD
|
|
|
|
extension IntPair {
|
|
static public func swiftMake() -> IntPair { IntPair.create() }
|
|
}
|
|
|
|
struct StructHoldingPair {
|
|
var pair: IntPair
|
|
};
|
|
|
|
class ClassHoldingPair {
|
|
var pair: IntPair
|
|
|
|
init(pair: IntPair) { self.pair = pair }
|
|
};
|
|
|
|
var globalPair: IntPair? = nil
|
|
|
|
var PODTestSuite = TestSuite("Plain old data types that are marked as foreign references")
|
|
|
|
PODTestSuite.test("Empty") {
|
|
var x = Empty.create()
|
|
expectEqual(x.test(), 42)
|
|
expectEqual(x.testMutable(), 42)
|
|
|
|
mutateIt(x)
|
|
|
|
x = Empty.create()
|
|
expectEqual(x.test(), 42)
|
|
}
|
|
|
|
PODTestSuite.test("var IntPair") {
|
|
var x = IntPair.create()
|
|
expectEqual(x.test(), 1)
|
|
expectEqual(x.testMutable(), 1)
|
|
|
|
mutateIt(x)
|
|
expectEqual(x.test(), 2)
|
|
expectEqual(x.testMutable(), 2)
|
|
|
|
x.b = 42
|
|
expectEqual(x.test(), 40)
|
|
expectEqual(x.testMutable(), 40)
|
|
|
|
x = IntPair.create()
|
|
expectEqual(x.test(), 1)
|
|
}
|
|
|
|
PODTestSuite.test("static extension") {
|
|
var x = IntPair.swiftMake()
|
|
expectEqual(x.test(), 1)
|
|
expectEqual(x.testMutable(), 1)
|
|
}
|
|
|
|
PODTestSuite.test("let IntPair") {
|
|
let x = IntPair.create()
|
|
expectEqual(x.test(), 1)
|
|
expectEqual(x.testMutable(), 1)
|
|
|
|
mutateIt(x)
|
|
expectEqual(x.test(), 2)
|
|
expectEqual(x.testMutable(), 2)
|
|
|
|
x.b = 42
|
|
expectEqual(x.test(), 40)
|
|
expectEqual(x.testMutable(), 40)
|
|
}
|
|
|
|
PODTestSuite.test("global") {
|
|
globalPair = IntPair.create()
|
|
expectEqual(globalPair!.test(), 1)
|
|
expectEqual(globalPair!.testMutable(), 1)
|
|
|
|
mutateIt(globalPair!)
|
|
expectEqual(globalPair!.test(), 2)
|
|
expectEqual(globalPair!.testMutable(), 2)
|
|
|
|
globalPair!.b = 42
|
|
expectEqual(globalPair!.test(), 40)
|
|
expectEqual(globalPair!.testMutable(), 40)
|
|
|
|
globalPair = IntPair.create()
|
|
expectEqual(globalPair!.test(), 1)
|
|
}
|
|
|
|
PODTestSuite.test("RefHoldingPairRef") {
|
|
var x = RefHoldingPairRef.create()
|
|
expectEqual(x.test(), 41)
|
|
expectEqual(x.testMutable(), 41)
|
|
|
|
x.pair.b = 42
|
|
expectEqual(x.test(), 1)
|
|
expectEqual(x.testMutable(), 1)
|
|
|
|
x = RefHoldingPairRef.create()
|
|
expectEqual(x.test(), 41)
|
|
}
|
|
|
|
PODTestSuite.test("RefHoldingPairPtr") {
|
|
var x = RefHoldingPairPtr.create()
|
|
expectEqual(x.test(), 41)
|
|
expectEqual(x.testMutable(), 41)
|
|
|
|
x.pair.b = 42
|
|
expectEqual(x.test(), 1)
|
|
expectEqual(x.testMutable(), 1)
|
|
|
|
x = RefHoldingPairPtr.create()
|
|
expectEqual(x.test(), 41)
|
|
}
|
|
|
|
PODTestSuite.test("ValueHoldingPairRef") {
|
|
let x = ValueHoldingPairRef()
|
|
expectEqual(x.pair.test(), 1)
|
|
|
|
let pair2 = IntPair.create()
|
|
pair2.b = 123
|
|
expectEqual(x.sub(pair2), -121)
|
|
expectEqual(x.max(pair2).test(), pair2.test())
|
|
}
|
|
|
|
PODTestSuite.test("StructHoldingPair") {
|
|
var x = StructHoldingPair(pair: IntPair.create())
|
|
expectEqual(x.pair.test(), 1)
|
|
expectEqual(x.pair.testMutable(), 1)
|
|
|
|
mutateIt(x.pair)
|
|
expectEqual(x.pair.test(), 2)
|
|
expectEqual(x.pair.testMutable(), 2)
|
|
|
|
x.pair = IntPair.create()
|
|
expectEqual(x.pair.test(), 1)
|
|
}
|
|
|
|
PODTestSuite.test("ClassHoldingPair") {
|
|
var x = ClassHoldingPair(pair: IntPair.create())
|
|
expectEqual(x.pair.test(), 1)
|
|
expectEqual(x.pair.testMutable(), 1)
|
|
|
|
mutateIt(x.pair)
|
|
expectEqual(x.pair.test(), 2)
|
|
expectEqual(x.pair.testMutable(), 2)
|
|
|
|
x.pair = IntPair.create()
|
|
expectEqual(x.pair.test(), 1)
|
|
}
|
|
|
|
PODTestSuite.test("BigType") {
|
|
var x = BigType.create()
|
|
expectEqual(x.test(), 1)
|
|
expectEqual(x.testMutable(), 1)
|
|
|
|
mutateIt(x)
|
|
expectEqual(x.test(), 2)
|
|
expectEqual(x.testMutable(), 2)
|
|
|
|
x.b = 42
|
|
expectEqual(x.test(), 40)
|
|
expectEqual(x.testMutable(), 40)
|
|
|
|
x = BigType.create()
|
|
expectEqual(x.test(), 1)
|
|
}
|
|
|
|
PODTestSuite.test("DerivedRef") {
|
|
var x = DerivedRef.create()
|
|
expectEqual(x.test(), 1)
|
|
expectEqual(x.testMutating(), 1)
|
|
expectEqual(x.testDerived(), 2)
|
|
expectEqual(x.testDerivedMutating(), 2)
|
|
}
|
|
|
|
PODTestSuite.test("BaseRef") {
|
|
var x = BaseRef.create()
|
|
expectEqual(x.test(), 1)
|
|
expectEqual(x.testMutating(), 1)
|
|
}
|
|
|
|
runAllTests()
|