Skip to content

Commit 4440e57

Browse files
authored
Merge pull request #89 from hartbit/trivia-equatable-hashable
Make Trivia and TriviaPiece Equatable
2 parents dd44630 + c3ba26c commit 4440e57

File tree

3 files changed

+74
-0
lines changed

3 files changed

+74
-0
lines changed

Sources/SwiftSyntax/Trivia.swift.gyb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ public struct Trivia {
109109
% end
110110
}
111111

112+
extension Trivia: Equatable {}
113+
112114
/// Conformance for Trivia to the Collection protocol.
113115
extension Trivia: Collection {
114116
public var startIndex: Int {
@@ -141,6 +143,8 @@ public func +(lhs: Trivia, rhs: Trivia) -> Trivia {
141143
return Trivia(pieces: lhs.pieces + rhs.pieces)
142144
}
143145

146+
extension TriviaPiece: Equatable {}
147+
144148
extension TriviaPiece {
145149
public var sourceLength: SourceLength {
146150
switch self {

Tests/LinuxMain.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ XCTMain({ () -> [XCTestCaseEntry] in
1515
testCase(SyntaxVisitorTestCase.allTests),
1616
testCase(TokenSyntaxTestCase.allTests),
1717
testCase(SyntaxTreeModifierTests.allTests),
18+
testCase(TriviaTests.allTests),
1819
]
1920
return testCases
2021
}())
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import XCTest
2+
import SwiftSyntax
3+
4+
public class TriviaTestCase: XCTestCase {
5+
6+
public static let allTests = [
7+
("testTriviaEquatable", testTriviaEquatable),
8+
("testTriviaPieceEquatable", testTriviaPieceEquatable)
9+
]
10+
11+
func testTriviaEquatable() {
12+
XCTAssertEqual([.spaces(2), .tabs(1)] as Trivia, [.spaces(2), .tabs(1)])
13+
XCTAssertNotEqual([.spaces(2), .tabs(1)] as Trivia, [.spaces(2), .tabs(2)])
14+
XCTAssertNotEqual([.spaces(5)] as Trivia, [.spaces(2), .spaces(3)])
15+
}
16+
17+
func testTriviaPieceEquatable() {
18+
XCTAssertEqual(TriviaPiece.spaces(1), .spaces(1))
19+
XCTAssertNotEqual(TriviaPiece.spaces(2), .spaces(4))
20+
XCTAssertNotEqual(TriviaPiece.spaces(2), .tabs(2))
21+
22+
XCTAssertEqual(TriviaPiece.tabs(2), .tabs(2))
23+
XCTAssertNotEqual(TriviaPiece.tabs(1), .tabs(2))
24+
XCTAssertNotEqual(TriviaPiece.tabs(1), .verticalTabs(1))
25+
26+
XCTAssertEqual(TriviaPiece.verticalTabs(3), .verticalTabs(3))
27+
XCTAssertNotEqual(TriviaPiece.verticalTabs(5), .verticalTabs(1))
28+
XCTAssertNotEqual(TriviaPiece.verticalTabs(5), .formfeeds(5))
29+
30+
XCTAssertEqual(TriviaPiece.formfeeds(2), .formfeeds(2))
31+
XCTAssertNotEqual(TriviaPiece.formfeeds(1), .formfeeds(2))
32+
XCTAssertNotEqual(TriviaPiece.formfeeds(1), .newlines(1))
33+
34+
XCTAssertEqual(TriviaPiece.newlines(3), .newlines(3))
35+
XCTAssertNotEqual(TriviaPiece.newlines(2), .newlines(1))
36+
XCTAssertNotEqual(TriviaPiece.newlines(2), .carriageReturns(2))
37+
38+
XCTAssertEqual(TriviaPiece.carriageReturns(2), .carriageReturns(2))
39+
XCTAssertNotEqual(TriviaPiece.carriageReturns(1), .carriageReturns(3))
40+
XCTAssertNotEqual(TriviaPiece.carriageReturns(1), .carriageReturnLineFeeds(3))
41+
42+
XCTAssertEqual(TriviaPiece.carriageReturnLineFeeds(3), .carriageReturnLineFeeds(3))
43+
XCTAssertNotEqual(TriviaPiece.carriageReturnLineFeeds(4), .carriageReturnLineFeeds(2))
44+
45+
XCTAssertEqual(TriviaPiece.backticks(2), .backticks(2))
46+
XCTAssertNotEqual(TriviaPiece.backticks(3), .backticks(4))
47+
XCTAssertNotEqual(TriviaPiece.backticks(3), .spaces(3))
48+
49+
XCTAssertEqual(TriviaPiece.lineComment("a"), .lineComment("a"))
50+
XCTAssertNotEqual(TriviaPiece.lineComment("a"), .lineComment("b"))
51+
XCTAssertNotEqual(TriviaPiece.lineComment("a"), .blockComment("a"))
52+
53+
XCTAssertEqual(TriviaPiece.blockComment("b"), .blockComment("b"))
54+
XCTAssertNotEqual(TriviaPiece.blockComment("b"), .blockComment("c"))
55+
XCTAssertNotEqual(TriviaPiece.blockComment("b"), .docLineComment("b"))
56+
57+
XCTAssertEqual(TriviaPiece.docLineComment("c"), .docLineComment("c"))
58+
XCTAssertNotEqual(TriviaPiece.docLineComment("c"), .docLineComment("d"))
59+
XCTAssertNotEqual(TriviaPiece.docLineComment("c"), .docBlockComment("c"))
60+
61+
XCTAssertEqual(TriviaPiece.docBlockComment("d"), .docBlockComment("d"))
62+
XCTAssertNotEqual(TriviaPiece.docBlockComment("d"), .docBlockComment("e"))
63+
XCTAssertNotEqual(TriviaPiece.docBlockComment("d"), .garbageText("d"))
64+
65+
XCTAssertEqual(TriviaPiece.garbageText("e"), .garbageText("e"))
66+
XCTAssertNotEqual(TriviaPiece.garbageText("e"), .garbageText("f"))
67+
XCTAssertNotEqual(TriviaPiece.garbageText("e"), .lineComment("e"))
68+
}
69+
}

0 commit comments

Comments
 (0)