@@ -15,29 +15,55 @@ import SwiftSyntax
15
15
import _SwiftSyntaxTestSupport
16
16
17
17
public class SourceEditsUtilTest : XCTestCase {
18
+ public func testStringDifferenceReturnSequentialEdits( ) {
19
+ let base = " \n 2sad21 "
20
+ let new = " 12ad21xy "
21
+
22
+ let diffs = new. difference ( from: base)
23
+
24
+ let edits = diffs. 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: 1 , replacementLength: 0 )
30
+ }
31
+ } )
32
+
33
+ let expectEdits = [
34
+ SourceEdit ( offset: 2 , length: 1 , replacementLength: 0 ) ,
35
+ SourceEdit ( offset: 0 , length: 1 , replacementLength: 0 ) ,
36
+ SourceEdit ( offset: 0 , length: 0 , replacementLength: 1 ) ,
37
+ SourceEdit ( offset: 6 , length: 0 , replacementLength: 1 ) ,
38
+ SourceEdit ( offset: 7 , length: 0 , replacementLength: 1 ) ,
39
+ ]
40
+
41
+ XCTAssertEqual ( edits, expectEdits)
42
+ }
43
+
18
44
public func testDiffOfTwoStringsSimple( ) throws {
19
- let s1 = " struct A { func f() { "
20
- let s2 = " struct AA { func f() { "
45
+ let base = " struct A { func f() { "
46
+ let new = " struct AA { func f() { "
21
47
22
- let diffs = getConcurrentEdits ( from: s1 , to: s2 )
48
+ let diffs = getConcurrentEdits ( from: base , to: new )
23
49
XCTAssertEqual ( diffs. edits. count, 1 )
24
50
25
51
let firstDiff = try XCTUnwrap ( diffs. edits. first)
26
52
XCTAssertEqual ( firstDiff, SourceEdit ( offset: 8 , length: 0 , replacementLength: 1 ) )
27
53
}
28
54
29
55
public func testDiffOfTwoSameStrings( ) {
30
- let s1 = " 0123456 "
56
+ let base = " 0123456 "
31
57
32
- let diffs = getConcurrentEdits ( from: s1 , to: s1 )
58
+ let diffs = getConcurrentEdits ( from: base , to: base )
33
59
XCTAssert ( diffs. edits. isEmpty)
34
60
}
35
61
36
62
public func testDiffOfTwoStrings( ) {
37
- let s1 = " 0123456 "
38
- let s2 = " x12456yz "
63
+ let base = " 0123456 "
64
+ let new = " x12456yz "
39
65
40
- let diffs = getConcurrentEdits ( from: s1 , to: s2 )
66
+ let diffs = getConcurrentEdits ( from: base , to: new )
41
67
42
68
let expectedDiffs : [ SourceEdit ] = [
43
69
SourceEdit ( offset: 0 , length: 1 , replacementLength: 1 ) ,
@@ -47,8 +73,8 @@ public class SourceEditsUtilTest: XCTestCase {
47
73
48
74
XCTAssertEqual ( diffs. edits, expectedDiffs)
49
75
50
- let s3 = applyEdits ( expectedDiffs, concurrent: true , to: s1 )
76
+ let appliedDiffsBase = applyEdits ( expectedDiffs, concurrent: true , to: base )
51
77
52
- XCTAssertEqual ( s3 , " ?12456?? " )
78
+ XCTAssertEqual ( appliedDiffsBase , " ?12456?? " )
53
79
}
54
80
}
0 commit comments