mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Currently those operators are imported with a `consuming:` label, which isn't valid in Swift.
We could just remove the label from these parameters, but that introduces a source breakage due to name lookup ambiguity.
So, to avoid ambiguity, let's not import such operators into Swift.
rdar://149020099
(cherry picked from commit eb7adc794d)
204 lines
4.2 KiB
Swift
204 lines
4.2 KiB
Swift
// RUN: %target-run-simple-swift(-I %S/Inputs -Xfrontend -enable-experimental-cxx-interop)
|
|
//
|
|
// REQUIRES: executable_test
|
|
|
|
import NonMemberInline
|
|
import StdlibUnittest
|
|
|
|
var OperatorsTestSuite = TestSuite("Operators")
|
|
|
|
OperatorsTestSuite.test("plus (+)") {
|
|
let lhs = LoadableIntWrapper(value: 42)
|
|
let rhs = LoadableIntWrapper(value: 23)
|
|
|
|
let result = lhs + rhs
|
|
|
|
expectEqual(65, result.value)
|
|
}
|
|
|
|
OperatorsTestSuite.test("minus (-)") {
|
|
let lhs = LoadableIntWrapper(value: 42)
|
|
let rhs = LoadableIntWrapper(value: 23)
|
|
|
|
let result = lhs - rhs
|
|
|
|
expectEqual(19, result.value)
|
|
}
|
|
|
|
OperatorsTestSuite.test("star (*)") {
|
|
let lhs = LoadableIntWrapper(value: 42)
|
|
let rhs = LoadableIntWrapper(value: 23)
|
|
|
|
let result = lhs * rhs
|
|
|
|
expectEqual(966, result.value)
|
|
}
|
|
|
|
OperatorsTestSuite.test("slash (/)") {
|
|
let lhs = LoadableIntWrapper(value: 42)
|
|
let rhs = LoadableIntWrapper(value: 23)
|
|
|
|
let result = lhs / rhs
|
|
|
|
expectEqual(1, result.value)
|
|
}
|
|
|
|
OperatorsTestSuite.test("caret (^)") {
|
|
let lhs = LoadableIntWrapper(value: 42)
|
|
let rhs = LoadableIntWrapper(value: 23)
|
|
|
|
let result = lhs ^ rhs
|
|
|
|
expectEqual(61, result.value)
|
|
}
|
|
|
|
OperatorsTestSuite.test("percent (%)") {
|
|
let lhs = LoadableIntWrapper(value: 11)
|
|
let rhs = LoadableIntWrapper(value: 2)
|
|
|
|
let result = lhs % rhs
|
|
|
|
expectEqual(1, result.value)
|
|
}
|
|
|
|
OperatorsTestSuite.test("amp (&)") {
|
|
let lhs = LoadableIntWrapper(value: 6)
|
|
let rhs = LoadableIntWrapper(value: 5)
|
|
|
|
let result = lhs & rhs
|
|
|
|
expectEqual(4, result.value)
|
|
}
|
|
|
|
OperatorsTestSuite.test("pipe (|)") {
|
|
let lhs = LoadableIntWrapper(value: 6)
|
|
let rhs = LoadableIntWrapper(value: 5)
|
|
|
|
let result = lhs | rhs
|
|
|
|
expectEqual(7, result.value)
|
|
}
|
|
|
|
OperatorsTestSuite.test("less (<)") {
|
|
let lhs = LoadableIntWrapper(value: 5)
|
|
let rhs = LoadableIntWrapper(value: 6)
|
|
|
|
let result = lhs < rhs
|
|
|
|
expectEqual(true, result)
|
|
}
|
|
|
|
OperatorsTestSuite.test("greater (>)") {
|
|
let lhs = LoadableIntWrapper(value: 5)
|
|
let rhs = LoadableIntWrapper(value: 6)
|
|
|
|
let result = lhs > rhs
|
|
|
|
expectEqual(false, result)
|
|
}
|
|
|
|
OperatorsTestSuite.test("less less (<<)") {
|
|
let lhs = LoadableIntWrapper(value: 2)
|
|
let rhs = LoadableIntWrapper(value: 4)
|
|
|
|
let result = lhs << rhs
|
|
|
|
expectEqual(32, result.value)
|
|
}
|
|
|
|
OperatorsTestSuite.test("greater greater (>>)") {
|
|
let lhs = LoadableIntWrapper(value: 512)
|
|
let rhs = LoadableIntWrapper(value: 8)
|
|
|
|
let result = lhs >> rhs
|
|
|
|
expectEqual(2, result.value)
|
|
}
|
|
|
|
OperatorsTestSuite.test("equal equal (==)") {
|
|
let lhs = LoadableIntWrapper(value: 5)
|
|
let rhs = LoadableIntWrapper(value: 5)
|
|
|
|
let result = lhs == rhs
|
|
|
|
expectEqual(true, result)
|
|
}
|
|
|
|
OperatorsTestSuite.test("exclaim equal (!=)") {
|
|
let lhs = LoadableIntWrapper(value: 5)
|
|
let rhs = LoadableIntWrapper(value: 5)
|
|
|
|
let result = lhs != rhs
|
|
|
|
expectEqual(false, result)
|
|
}
|
|
|
|
OperatorsTestSuite.test("less equal (<=)") {
|
|
let lhs = LoadableIntWrapper(value: 5)
|
|
let rhs = LoadableIntWrapper(value: 5)
|
|
|
|
let result = lhs <= rhs
|
|
|
|
expectEqual(true, result)
|
|
}
|
|
|
|
OperatorsTestSuite.test("greater equal (>=)") {
|
|
let lhs = LoadableIntWrapper(value: 6)
|
|
let rhs = LoadableIntWrapper(value: 5)
|
|
|
|
let result = lhs >= rhs
|
|
|
|
expectEqual(true, result)
|
|
}
|
|
|
|
OperatorsTestSuite.test("slash equal (/=)") {
|
|
var lhs = LoadableIntWrapper(value: 8)
|
|
let rhs = LoadableIntWrapper(value: 2)
|
|
|
|
lhs /= rhs
|
|
|
|
expectEqual(lhs.value, 4)
|
|
}
|
|
|
|
OperatorsTestSuite.test("star equal (*=)") {
|
|
var lhs = LoadableIntWrapper(value: 8)
|
|
let rhs = LoadableIntWrapper(value: 2)
|
|
|
|
lhs *= rhs
|
|
|
|
expectEqual(lhs.value, 16)
|
|
}
|
|
|
|
OperatorsTestSuite.test("amp amp (&&)") {
|
|
let lhs = LoadableBoolWrapper(value: true)
|
|
let rhs = LoadableBoolWrapper(value: false)
|
|
|
|
let result = lhs && rhs
|
|
|
|
expectEqual(false, result.value)
|
|
}
|
|
|
|
OperatorsTestSuite.test("pipe pipe (||)") {
|
|
let lhs = LoadableBoolWrapper(value: true)
|
|
let rhs = LoadableBoolWrapper(value: false)
|
|
|
|
let result = lhs || rhs
|
|
|
|
expectEqual(true, result.value)
|
|
}
|
|
|
|
OperatorsTestSuite.test("UnnamedParameterInOperator.equal") {
|
|
let lhs = ClassWithOperatorEqualsParamUnnamed()
|
|
let rhs = ClassWithOperatorEqualsParamUnnamed()
|
|
expectFalse(lhs == rhs)
|
|
}
|
|
|
|
OperatorsTestSuite.test("LValueAndRValueArithmetic.+") {
|
|
let lhs = LValueAndRValueArithmetic(value: 123)
|
|
let rhs = LValueAndRValueArithmetic(value: 146)
|
|
|
|
expectEqual(269, (lhs + rhs).value)
|
|
}
|
|
|
|
runAllTests()
|