@@ -27,7 +27,7 @@ func getString(_ doc: Quilt) -> String {
27
27
28
28
#expect(
29
29
quilt. operationLog [ 0 ] == Operation (
30
- opId: OpID ( counter: 0 , id : user) ,
30
+ opId: OpID ( counter: 0 , userID : user) ,
31
31
type: . insert( " T " ) ,
32
32
afterId: nil
33
33
)
@@ -37,7 +37,7 @@ func getString(_ doc: Quilt) -> String {
37
37
38
38
#expect(
39
39
quilt. operationLog [ 1 ] == Operation (
40
- opId: OpID ( counter: 1 , id : user) ,
40
+ opId: OpID ( counter: 1 , userID : user) ,
41
41
type: . insert( " H " ) ,
42
42
afterId: quilt. operationLog [ 0 ] . id
43
43
)
@@ -47,7 +47,7 @@ func getString(_ doc: Quilt) -> String {
47
47
48
48
#expect(
49
49
quilt. operationLog [ 2 ] == Operation (
50
- opId: OpID ( counter: 2 , id : user) ,
50
+ opId: OpID ( counter: 2 , userID : user) ,
51
51
type: . remove( quilt. operationLog [ 1 ] . id)
52
52
)
53
53
)
@@ -64,11 +64,11 @@ func getString(_ doc: Quilt) -> String {
64
64
quilt. addMark ( mark: . bold, fromIndex: 0 , toIndex: 4 )
65
65
66
66
#expect( quilt. operationLog [ 5 ] == Operation (
67
- opId: OpID ( counter: 5 , id : user) ,
67
+ opId: OpID ( counter: 5 , userID : user) ,
68
68
type: . addMark(
69
69
type: . bold,
70
- start: . before( OpID ( counter: 0 , id : user) ) ,
71
- end: . before( OpID ( counter: 4 , id : user) )
70
+ start: . before( OpID ( counter: 0 , userID : user) ) ,
71
+ end: . before( OpID ( counter: 4 , userID : user) )
72
72
)
73
73
) )
74
74
@@ -79,11 +79,11 @@ func getString(_ doc: Quilt) -> String {
79
79
)
80
80
81
81
#expect( quilt. operationLog [ 6 ] == Operation (
82
- opId: OpID ( counter: 6 , id : user) ,
82
+ opId: OpID ( counter: 6 , userID : user) ,
83
83
type: . removeMark(
84
84
type: . bold,
85
- start: . before( OpID ( counter: 0 , id : user) ) ,
86
- end: . before( OpID ( counter: 4 , id : user) )
85
+ start: . before( OpID ( counter: 0 , userID : user) ) ,
86
+ end: . before( OpID ( counter: 4 , userID : user) )
87
87
)
88
88
) )
89
89
}
@@ -100,9 +100,9 @@ func getString(_ doc: Quilt) -> String {
100
100
// MARK: - OpID Tests
101
101
102
102
@Test func testOpIDComparison( ) {
103
- let id1 = OpID ( counter: 1 , id : user)
104
- let id2 = OpID ( counter: 2 , id : user)
105
- let id3 = OpID ( counter: 2 , id : otherUser)
103
+ let id1 = OpID ( counter: 1 , userID : user)
104
+ let id2 = OpID ( counter: 2 , userID : user)
105
+ let id3 = OpID ( counter: 2 , userID : otherUser)
106
106
107
107
#expect( id1 < id2)
108
108
#expect( id2 > id1)
@@ -113,11 +113,6 @@ func getString(_ doc: Quilt) -> String {
113
113
#expect( id2 < id3)
114
114
}
115
115
116
- @Test func testOpIDDescription( ) {
117
- let id = OpID ( counter: 42 , id: user)
118
- #expect( id. description == " 42@ \( user) " )
119
- }
120
-
121
116
// MARK: - Quilt Merge Tests
122
117
123
118
@Test func testMergeQuilt( ) {
@@ -170,6 +165,43 @@ func getString(_ doc: Quilt) -> String {
170
165
#expect( getString ( doc2) == " The quick brown catdog " )
171
166
}
172
167
168
+ @Test func testConcurrentEditsOfSameWord( ) {
169
+ var doc1 = Quilt ( user: user)
170
+ var doc2 = Quilt ( user: otherUser)
171
+
172
+ let str = " The quick brown fox "
173
+ str. enumerated ( ) . forEach { ( idx, char) in
174
+ doc1. insert ( character: char, atIndex: idx)
175
+ }
176
+
177
+ doc2. merge ( doc1)
178
+
179
+ doc2. remove ( atIndex: 18 )
180
+ doc2. remove ( atIndex: 17 )
181
+ doc2. remove ( atIndex: 16 )
182
+
183
+ doc2. insert ( character: " c " , atIndex: 16 )
184
+ doc2. insert ( character: " a " , atIndex: 17 )
185
+ doc2. insert ( character: " t " , atIndex: 18 )
186
+
187
+ doc1. remove ( atIndex: 18 )
188
+ doc1. remove ( atIndex: 17 )
189
+ doc1. remove ( atIndex: 16 )
190
+
191
+ doc1. insert ( character: " c " , atIndex: 16 )
192
+ doc1. insert ( character: " a " , atIndex: 17 )
193
+ doc1. insert ( character: " t " , atIndex: 18 )
194
+
195
+ #expect( getString ( doc1) == " The quick brown cat " )
196
+ #expect( getString ( doc2) == " The quick brown cat " )
197
+
198
+ doc1. merge ( doc2)
199
+ doc2. merge ( doc1)
200
+
201
+ #expect( getString ( doc1) == " The quick brown cat " )
202
+ #expect( getString ( doc2) == " The quick brown cat " )
203
+ }
204
+
173
205
@Test func testMergeDuplicateOperations( ) {
174
206
var quilt1 = Quilt ( user: user)
175
207
var quilt2 = Quilt ( user: otherUser) // Changed to different user
0 commit comments