@@ -15,29 +15,52 @@ import SwiftSyntax
15
15
import _SwiftSyntaxTestSupport
16
16
17
17
public class SourceEditsUtilTest : XCTestCase {
18
+ public func testStringDifferenceReturnSequentialEdits( ) {
19
+ let base = " 0123 "
20
+ let new = " a0123b "
21
+
22
+ let diffs = new. difference ( from: base)
23
+
24
+ let edits = diffs. insertions. map ( { diff in
25
+ switch diff {
26
+ case . insert( offset: let offset, element: _, associatedWith: _) :
27
+ return SourceEdit ( offset: offset, length: 0 , replacementLength: 1 )
28
+ case . remove( offset: let offset, element: _, associatedWith: _) :
29
+ return SourceEdit ( offset: offset, length: 0 , replacementLength: 1 )
30
+ }
31
+ } )
32
+
33
+ let expectEdits = [
34
+ SourceEdit ( offset: 0 , length: 0 , replacementLength: 1 ) ,
35
+ SourceEdit ( offset: 5 , length: 0 , replacementLength: 1 ) ,
36
+ ]
37
+
38
+ XCTAssertEqual ( edits, expectEdits)
39
+ }
40
+
18
41
public func testDiffOfTwoStringsSimple( ) throws {
19
- let s1 = " struct A { func f() { "
20
- let s2 = " struct AA { func f() { "
42
+ let base = " struct A { func f() { "
43
+ let new = " struct AA { func f() { "
21
44
22
- let diffs = getConcurrentEdits ( from: s1 , to: s2 )
45
+ let diffs = getConcurrentEdits ( from: base , to: new )
23
46
XCTAssertEqual ( diffs. edits. count, 1 )
24
47
25
48
let firstDiff = try XCTUnwrap ( diffs. edits. first)
26
49
XCTAssertEqual ( firstDiff, SourceEdit ( offset: 8 , length: 0 , replacementLength: 1 ) )
27
50
}
28
51
29
52
public func testDiffOfTwoSameStrings( ) {
30
- let s1 = " 0123456 "
53
+ let base = " 0123456 "
31
54
32
- let diffs = getConcurrentEdits ( from: s1 , to: s1 )
55
+ let diffs = getConcurrentEdits ( from: base , to: base )
33
56
XCTAssert ( diffs. edits. isEmpty)
34
57
}
35
58
36
59
public func testDiffOfTwoStrings( ) {
37
- let s1 = " 0123456 "
38
- let s2 = " x12456yz "
60
+ let base = " 0123456 "
61
+ let new = " x12456yz "
39
62
40
- let diffs = getConcurrentEdits ( from: s1 , to: s2 )
63
+ let diffs = getConcurrentEdits ( from: base , to: new )
41
64
42
65
let expectedDiffs : [ SourceEdit ] = [
43
66
SourceEdit ( offset: 0 , length: 1 , replacementLength: 1 ) ,
@@ -47,8 +70,8 @@ public class SourceEditsUtilTest: XCTestCase {
47
70
48
71
XCTAssertEqual ( diffs. edits, expectedDiffs)
49
72
50
- let s3 = applyEdits ( expectedDiffs, concurrent: true , to: s1 )
73
+ let appliedDiffsBase = applyEdits ( expectedDiffs, concurrent: true , to: base )
51
74
52
- XCTAssertEqual ( s3 , " ?12456?? " )
75
+ XCTAssertEqual ( appliedDiffsBase , " ?12456?? " )
53
76
}
54
77
}
0 commit comments