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
|
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2023 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
import SwiftOperators
import SwiftSyntax
import XCTest
class SyntaxSynthesisTests: XCTestCase {
func testInfixOperator() {
let plus = Operator(
kind: .infix,
name: "+",
precedenceGroup: "AdditivePrecedence"
)
let plusSyntax = plus.synthesizedSyntax()
XCTAssertEqual(
plusSyntax.description,
"infix operator +: AdditivePrecedence"
)
}
func testPrecedenceGroup() {
let group = PrecedenceGroup(
name: "MyGroup",
associativity: .right,
assignment: true,
relations: [.lowerThan("BetterGroup"), .higherThan("WorseGroup")]
)
let groupSyntax = group.synthesizedSyntax()
XCTAssertEqual(
groupSyntax.description,
"""
precedencegroup MyGroup {
associativity: right
assignment: true
lowerThan: BetterGroup
higherThan: WorseGroup
}
"""
)
}
func testLogicalOperatorTable() {
let table = OperatorTable.logicalOperators
XCTAssertEqual(
table.description,
"""
precedencegroup LogicalConjunctionPrecedence {
associativity: left
higherThan: LogicalDisjunctionPrecedence
}
precedencegroup LogicalDisjunctionPrecedence {
associativity: left
}
prefix operator !
infix operator &&: LogicalConjunctionPrecedence
infix operator ||: LogicalDisjunctionPrecedence
"""
)
}
}
|