@@ -88,24 +88,26 @@ public class AbsolutePositionTestCase: XCTestCase {
88
88
_ = root. statements [ idx] . positionAfterSkippingLeadingTrivia
89
89
}
90
90
91
+ static let leadingTrivia = Trivia ( pieces: [
92
+ . newlines( 1 ) ,
93
+ . backticks( 1 ) ,
94
+ . docLineComment( " /// some comment " ) ,
95
+ . carriageReturns( 1 ) ,
96
+ ] )
97
+
98
+ static let trailingTrivia = Trivia ( pieces: [
99
+ . blockComment( " /* This is comment \r\r\n */" ) ,
100
+ . carriageReturnLineFeeds( 1 ) ,
101
+ ] )
102
+
91
103
func createSourceFile( _ count: Int ) -> SourceFileSyntax {
92
- let leading = Trivia ( pieces: [
93
- . newlines( 1 ) ,
94
- . backticks( 1 ) ,
95
- . docLineComment( " /// some comment " ) ,
96
- . carriageReturns( 1 ) ,
97
- ] )
98
- let trailing = Trivia ( pieces: [
99
- . blockComment( " /* This is comment \r\r\n */" ) ,
100
- . carriageReturnLineFeeds( 1 ) ,
101
- ] )
102
104
let items : [ CodeBlockItemSyntax ] =
103
105
[ CodeBlockItemSyntax] ( repeating: CodeBlockItemSyntax {
104
106
$0. useItem ( ReturnStmtSyntax {
105
107
$0. useReturnKeyword (
106
108
SyntaxFactory . makeReturnKeyword (
107
- leadingTrivia: leading ,
108
- trailingTrivia: trailing ) )
109
+ leadingTrivia: AbsolutePositionTestCase . leadingTrivia ,
110
+ trailingTrivia: AbsolutePositionTestCase . trailingTrivia ) )
109
111
} ) } , count: count)
110
112
return SyntaxFactory . makeSourceFile (
111
113
statements: SyntaxFactory . makeCodeBlockItemList ( items) ,
@@ -124,6 +126,40 @@ public class AbsolutePositionTestCase: XCTestCase {
124
126
state. leadingTrivia!. byteSize + state. trailingTrivia!. byteSize
125
127
+ state. byteSizeAfterTrimmingTrivia)
126
128
XCTAssertFalse ( root. statements. isImplicit)
129
+
130
+ // Test Node trivia setters and getters
131
+
132
+ XCTAssertEqual ( AbsolutePositionTestCase . leadingTrivia, root. leadingTrivia)
133
+ XCTAssertEqual ( [ ] , root. trailingTrivia)
134
+
135
+ var modifiedRoot1 = root. withLeadingTrivia ( [ . spaces( 6 ) , . tabs( 1 ) ] )
136
+ XCTAssertEqual ( [ . spaces( 6 ) , . tabs( 1 ) ] , modifiedRoot1. leadingTrivia)
137
+ XCTAssertEqual ( AbsolutePositionTestCase . leadingTrivia, root. leadingTrivia)
138
+ modifiedRoot1. leadingTrivia = [ . blockComment( " /* this is a comment */" ) ]
139
+ XCTAssertEqual ( [ . blockComment( " /* this is a comment */" ) ] , modifiedRoot1. leadingTrivia)
140
+
141
+ var modifiedRoot2 = root. withTrailingTrivia ( [ . backticks( 2 ) ] )
142
+ XCTAssertEqual ( [ . backticks( 2 ) ] , modifiedRoot2. trailingTrivia)
143
+ XCTAssertEqual ( [ ] , root. trailingTrivia)
144
+ modifiedRoot2. trailingTrivia = [ . carriageReturns( 1 ) , . newlines( 2 ) ]
145
+ XCTAssertEqual ( [ . carriageReturns( 1 ) , . newlines( 2 ) ] , modifiedRoot2. trailingTrivia)
146
+
147
+ // Test Collection trivia setters and getters
148
+
149
+ XCTAssertEqual ( AbsolutePositionTestCase . leadingTrivia, root. statements. leadingTrivia)
150
+ XCTAssertEqual ( AbsolutePositionTestCase . trailingTrivia, root. statements. trailingTrivia)
151
+
152
+ var modifiedStatements1 = root. withLeadingTrivia ( [ . carriageReturnLineFeeds( 3 ) ] )
153
+ XCTAssertEqual ( [ . carriageReturnLineFeeds( 3 ) ] , modifiedStatements1. leadingTrivia)
154
+ XCTAssertEqual ( AbsolutePositionTestCase . leadingTrivia, root. statements. leadingTrivia)
155
+ modifiedStatements1. leadingTrivia = [ . garbageText( " GARBAGE " ) ]
156
+ XCTAssertEqual ( [ . garbageText( " GARBAGE " ) ] , modifiedStatements1. leadingTrivia)
157
+
158
+ var modifiedStatements2 = root. withTrailingTrivia ( [ . formfeeds( 1 ) , . carriageReturns( 3 ) ] )
159
+ XCTAssertEqual ( [ . formfeeds( 1 ) , . carriageReturns( 3 ) ] , modifiedStatements2. trailingTrivia)
160
+ XCTAssertEqual ( AbsolutePositionTestCase . trailingTrivia, root. statements. trailingTrivia)
161
+ modifiedStatements2. trailingTrivia = [ . verticalTabs( 4 ) ]
162
+ XCTAssertEqual ( [ . verticalTabs( 4 ) ] , modifiedStatements2. trailingTrivia)
127
163
}
128
164
129
165
public func testImplicit( ) {
0 commit comments