@fluid-experimental/property-changeset 2.0.0-internal.3.0.5 → 2.0.0-internal.3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/changeset.d.ts +2 -2
- package/dist/changeset.d.ts.map +1 -1
- package/dist/changeset.js +61 -45
- package/dist/changeset.js.map +1 -1
- package/dist/changeset_operations/array.d.ts +6 -6
- package/dist/changeset_operations/array.d.ts.map +1 -1
- package/dist/changeset_operations/array.js +87 -56
- package/dist/changeset_operations/array.js.map +1 -1
- package/dist/changeset_operations/arrayChangesetIterator.d.ts.map +1 -1
- package/dist/changeset_operations/arrayChangesetIterator.js +43 -41
- package/dist/changeset_operations/arrayChangesetIterator.js.map +1 -1
- package/dist/changeset_operations/changesetConflictTypes.d.ts.map +1 -1
- package/dist/changeset_operations/changesetConflictTypes.js.map +1 -1
- package/dist/changeset_operations/indexedCollection.d.ts.map +1 -1
- package/dist/changeset_operations/indexedCollection.js +76 -44
- package/dist/changeset_operations/indexedCollection.js.map +1 -1
- package/dist/changeset_operations/isEmptyChangeset.d.ts.map +1 -1
- package/dist/changeset_operations/isEmptyChangeset.js +2 -1
- package/dist/changeset_operations/isEmptyChangeset.js.map +1 -1
- package/dist/changeset_operations/operationTypes.d.ts.map +1 -1
- package/dist/changeset_operations/operationTypes.js.map +1 -1
- package/dist/helpers/typeidHelper.d.ts +10 -10
- package/dist/helpers/typeidHelper.d.ts.map +1 -1
- package/dist/helpers/typeidHelper.js +19 -17
- package/dist/helpers/typeidHelper.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/isReservedKeyword.d.ts.map +1 -1
- package/dist/isReservedKeyword.js.map +1 -1
- package/dist/pathHelper.d.ts.map +1 -1
- package/dist/pathHelper.js +16 -10
- package/dist/pathHelper.js.map +1 -1
- package/dist/rebase.d.ts.map +1 -1
- package/dist/rebase.js +20 -13
- package/dist/rebase.js.map +1 -1
- package/dist/templateSchema.d.ts.map +1 -1
- package/dist/templateSchema.js +10 -11
- package/dist/templateSchema.js.map +1 -1
- package/dist/templateValidator.d.ts.map +1 -1
- package/dist/templateValidator.js +135 -102
- package/dist/templateValidator.js.map +1 -1
- package/dist/test/array.spec.js +141 -343
- package/dist/test/array.spec.js.map +1 -1
- package/dist/test/pathHelper.spec.js +299 -166
- package/dist/test/pathHelper.spec.js.map +1 -1
- package/dist/test/reversibleCs.spec.js.map +1 -1
- package/dist/test/schemaValidator.js +3 -1
- package/dist/test/schemaValidator.js.map +1 -1
- package/dist/test/schemas/badBothPropertiesAndTypeid.js +8 -8
- package/dist/test/schemas/badBothPropertiesAndTypeid.js.map +1 -1
- package/dist/test/schemas/badInvalidSemverInTypeid.js +18 -16
- package/dist/test/schemas/badInvalidSemverInTypeid.js.map +1 -1
- package/dist/test/schemas/badMissingSemverInTypeid.js +18 -16
- package/dist/test/schemas/badMissingSemverInTypeid.js.map +1 -1
- package/dist/test/schemas/badNestedProperties.js +18 -17
- package/dist/test/schemas/badNestedProperties.js.map +1 -1
- package/dist/test/schemas/badPrimitiveTypeid.js +9 -8
- package/dist/test/schemas/badPrimitiveTypeid.js.map +1 -1
- package/dist/test/schemas/badVersionedTypeid.js +19 -17
- package/dist/test/schemas/badVersionedTypeid.js.map +1 -1
- package/dist/test/schemas/goodColorPalette.js +4 -4
- package/dist/test/schemas/goodColorPalette.js.map +1 -1
- package/dist/test/schemas/goodDraftAsVersion.js +2 -4
- package/dist/test/schemas/goodDraftAsVersion.js.map +1 -1
- package/dist/test/schemas/goodPointId.js +18 -16
- package/dist/test/schemas/goodPointId.js.map +1 -1
- package/dist/test/schemas/goodReferenceAndRegular.js +5 -5
- package/dist/test/schemas/goodReferenceAndRegular.js.map +1 -1
- package/dist/test/schemas/goodReservedTypes.js +8 -7
- package/dist/test/schemas/goodReservedTypes.js.map +1 -1
- package/dist/test/schemas/goodUIBorder.js +19 -16
- package/dist/test/schemas/goodUIBorder.js.map +1 -1
- package/dist/test/tsconfig.tsbuildinfo +1 -1
- package/dist/test/validator/templateSyntax.spec.js.map +1 -1
- package/dist/test/validator/templateValidator.spec.js +329 -306
- package/dist/test/validator/templateValidator.spec.js.map +1 -1
- package/dist/test/validator/typeidHelper.spec.js +98 -65
- package/dist/test/validator/typeidHelper.spec.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +149 -95
- package/dist/utils.js.map +1 -1
- package/dist/validationResultBuilder.d.ts.map +1 -1
- package/dist/validationResultBuilder.js.map +1 -1
- package/lib/changeset.js +63 -47
- package/lib/changeset.js.map +1 -1
- package/lib/changeset_operations/array.js +88 -57
- package/lib/changeset_operations/array.js.map +1 -1
- package/lib/changeset_operations/arrayChangesetIterator.js +43 -41
- package/lib/changeset_operations/arrayChangesetIterator.js.map +1 -1
- package/lib/changeset_operations/changesetConflictTypes.js.map +1 -1
- package/lib/changeset_operations/indexedCollection.js +76 -44
- package/lib/changeset_operations/indexedCollection.js.map +1 -1
- package/lib/changeset_operations/isEmptyChangeset.js +2 -1
- package/lib/changeset_operations/isEmptyChangeset.js.map +1 -1
- package/lib/changeset_operations/operationTypes.js.map +1 -1
- package/lib/helpers/typeidHelper.js +19 -17
- package/lib/helpers/typeidHelper.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/isReservedKeyword.js.map +1 -1
- package/lib/pathHelper.js +17 -11
- package/lib/pathHelper.js.map +1 -1
- package/lib/rebase.js +20 -13
- package/lib/rebase.js.map +1 -1
- package/lib/templateSchema.js +10 -11
- package/lib/templateSchema.js.map +1 -1
- package/lib/templateValidator.js +135 -102
- package/lib/templateValidator.js.map +1 -1
- package/lib/utils.js +149 -95
- package/lib/utils.js.map +1 -1
- package/lib/validationResultBuilder.js.map +1 -1
- package/package.json +100 -100
package/dist/test/array.spec.js
CHANGED
|
@@ -24,7 +24,7 @@ describe("Array Operations", function () {
|
|
|
24
24
|
if (type === undefined) {
|
|
25
25
|
return {
|
|
26
26
|
String: {
|
|
27
|
-
guid: `00000000-0000-0000-0000-${
|
|
27
|
+
guid: `00000000-0000-0000-0000-${`000000000000${id}`.substr(-12)}`,
|
|
28
28
|
},
|
|
29
29
|
typeid: "test:namedEntry-1.0.0",
|
|
30
30
|
};
|
|
@@ -60,17 +60,11 @@ describe("Array Operations", function () {
|
|
|
60
60
|
// as otherwise overlapping ranges would be created in the result, which are not allowed
|
|
61
61
|
// by the spec
|
|
62
62
|
const op1 = createArrayCS({
|
|
63
|
-
insert: [
|
|
64
|
-
|
|
65
|
-
],
|
|
66
|
-
remove: [
|
|
67
|
-
[1, generateNamedEntities(1)],
|
|
68
|
-
],
|
|
63
|
+
insert: [[1, generateNamedEntities(3)]],
|
|
64
|
+
remove: [[1, generateNamedEntities(1)]],
|
|
69
65
|
});
|
|
70
66
|
const op2 = createArrayCS({
|
|
71
|
-
remove: [
|
|
72
|
-
[0, generateNamedEntities(2)],
|
|
73
|
-
],
|
|
67
|
+
remove: [[0, generateNamedEntities(2)]],
|
|
74
68
|
});
|
|
75
69
|
const result = new changeset_1.ChangeSet(op1);
|
|
76
70
|
result.applyChangeSet(op2);
|
|
@@ -83,17 +77,11 @@ describe("Array Operations", function () {
|
|
|
83
77
|
});
|
|
84
78
|
it("Rebasing with a base changeset containing adjacent removes and inserts", () => {
|
|
85
79
|
const base = createArrayCS({
|
|
86
|
-
insert: [
|
|
87
|
-
|
|
88
|
-
],
|
|
89
|
-
remove: [
|
|
90
|
-
[0, generateNamedEntities(1)],
|
|
91
|
-
],
|
|
80
|
+
insert: [[1, generateNamedEntities(3)]],
|
|
81
|
+
remove: [[0, generateNamedEntities(1)]],
|
|
92
82
|
});
|
|
93
83
|
const rebaseCS = createArrayCS({
|
|
94
|
-
insert: [
|
|
95
|
-
[0, generateNamedEntities(1)],
|
|
96
|
-
],
|
|
84
|
+
insert: [[0, generateNamedEntities(1)]],
|
|
97
85
|
});
|
|
98
86
|
const conflicts = [];
|
|
99
87
|
const CS = new changeset_1.ChangeSet(base);
|
|
@@ -105,22 +93,17 @@ describe("Array Operations", function () {
|
|
|
105
93
|
// the rebase this way. The CS above could have been generated by a combination of a
|
|
106
94
|
// I(1,3) followed by a R(0,1). If the rebase CS would have been rebased separately
|
|
107
95
|
// with respect to those two CS, it would have remained a I(0,3).
|
|
108
|
-
(0, chai_1.expect)(rebaseCS.modify["array<test:namedEntry-1.0.0>"].array
|
|
96
|
+
(0, chai_1.expect)(rebaseCS.modify["array<test:namedEntry-1.0.0>"].array
|
|
97
|
+
.insert[0][0]).to.equal(0);
|
|
109
98
|
});
|
|
110
99
|
for (const i of [0, 3]) {
|
|
111
100
|
it(`Rebasing an insert behind a remove insert base changeset with insert position ${i}`, () => {
|
|
112
101
|
const base = createArrayCS({
|
|
113
|
-
insert: [
|
|
114
|
-
|
|
115
|
-
],
|
|
116
|
-
remove: [
|
|
117
|
-
[0, generateNamedEntities(3)],
|
|
118
|
-
],
|
|
102
|
+
insert: [[i, generateNamedEntities(3)]],
|
|
103
|
+
remove: [[0, generateNamedEntities(3)]],
|
|
119
104
|
});
|
|
120
105
|
const rebaseCS = createArrayCS({
|
|
121
|
-
insert: [
|
|
122
|
-
[0, generateNamedEntities(1)],
|
|
123
|
-
],
|
|
106
|
+
insert: [[0, generateNamedEntities(1)]],
|
|
124
107
|
});
|
|
125
108
|
const originalRebaseCS = (0, fastest_json_copy_1.copy)(rebaseCS);
|
|
126
109
|
const conflicts = [];
|
|
@@ -146,17 +129,11 @@ describe("Array Operations", function () {
|
|
|
146
129
|
}
|
|
147
130
|
it("Inserts should happen at the beginning of a remove range", () => {
|
|
148
131
|
const op1 = createArrayCS({
|
|
149
|
-
insert: [
|
|
150
|
-
|
|
151
|
-
],
|
|
152
|
-
remove: [
|
|
153
|
-
[1, generateNamedEntities(1)],
|
|
154
|
-
],
|
|
132
|
+
insert: [[1, generateNamedEntities(3)]],
|
|
133
|
+
remove: [[1, generateNamedEntities(1)]],
|
|
155
134
|
});
|
|
156
135
|
const op2 = createArrayCS({
|
|
157
|
-
insert: [
|
|
158
|
-
[4, generateNamedEntities(2)],
|
|
159
|
-
],
|
|
136
|
+
insert: [[4, generateNamedEntities(2)]],
|
|
160
137
|
});
|
|
161
138
|
const combinedCS = new changeset_1.ChangeSet(op1);
|
|
162
139
|
combinedCS.applyChangeSet(op2);
|
|
@@ -195,10 +172,7 @@ describe("Array Operations", function () {
|
|
|
195
172
|
return deltaChangeSet;
|
|
196
173
|
}
|
|
197
174
|
function runTestApplyingReverseAndRebasedChangesetForIndependentModifications(baseInsertPositions, rebasedInsertPositions, baseOperation = "insert", baseCount = 1) {
|
|
198
|
-
const createInserts = (positions, count) => positions.map((x) => [
|
|
199
|
-
x,
|
|
200
|
-
generateNamedEntities(count),
|
|
201
|
-
]);
|
|
175
|
+
const createInserts = (positions, count) => positions.map((x) => [x, generateNamedEntities(count)]);
|
|
202
176
|
const baseChangeSet = createArrayCS({
|
|
203
177
|
[baseOperation]: createInserts(baseInsertPositions, baseCount),
|
|
204
178
|
});
|
|
@@ -220,12 +194,8 @@ describe("Array Operations", function () {
|
|
|
220
194
|
(0, chai_1.expect)(arrayChangeSet).to.not.have.property(baseOperation === "insert" ? "remove" : "insert");
|
|
221
195
|
}
|
|
222
196
|
describe("Rebase test applying the reverse, base and then rebased changeset", () => {
|
|
223
|
-
for (const basePositions of [
|
|
224
|
-
[0], [1], [
|
|
225
|
-
]) {
|
|
226
|
-
for (const rebasePositions of [
|
|
227
|
-
[0], [1], [5, 9], [5, 9, 12],
|
|
228
|
-
]) {
|
|
197
|
+
for (const basePositions of [[0], [1], [2], [5], [13], [0, 2], [0, 5], [0, 5, 13]]) {
|
|
198
|
+
for (const rebasePositions of [[0], [1], [5, 9], [5, 9, 12]]) {
|
|
229
199
|
it(`with base positions ${basePositions} and rebase positions ${rebasePositions}`, () => {
|
|
230
200
|
runTestApplyingReverseAndRebasedChangesetForIndependentModifications(basePositions, rebasePositions);
|
|
231
201
|
});
|
|
@@ -242,7 +212,7 @@ describe("Array Operations", function () {
|
|
|
242
212
|
const rebasedCS1 = (0, fastest_json_copy_1.copy)(rebaseChangeSet);
|
|
243
213
|
for (const baseChangeSet of baseChangesets) {
|
|
244
214
|
const conflicts = [];
|
|
245
|
-
|
|
215
|
+
new changeset_1.ChangeSet(baseChangeSet)._rebaseChangeSet(rebasedCS1, conflicts);
|
|
246
216
|
validateChangeSet(rebasedCS1);
|
|
247
217
|
}
|
|
248
218
|
// Now rebase with respect to the squashed base ChangeSets
|
|
@@ -260,7 +230,7 @@ describe("Array Operations", function () {
|
|
|
260
230
|
(0, chai_1.expect)(directApplication.getSerializedChangeSet()).to.deep.equal(squashApplication.getSerializedChangeSet());
|
|
261
231
|
const conflicts2 = [];
|
|
262
232
|
const rebasedCS2 = (0, fastest_json_copy_1.copy)(rebaseChangeSet);
|
|
263
|
-
|
|
233
|
+
new changeset_1.ChangeSet(squashedBaseChangeSets)._rebaseChangeSet(rebasedCS2, conflicts2);
|
|
264
234
|
validateChangeSet(rebasedCS2);
|
|
265
235
|
(0, chai_1.expect)(rebasedCS1).to.deep.equal(rebasedCS2);
|
|
266
236
|
return testRebasedApplies((0, fastest_json_copy_1.copy)(rebaseChangeSet), squashedBaseChangeSets, base);
|
|
@@ -271,19 +241,13 @@ describe("Array Operations", function () {
|
|
|
271
241
|
it(`Position ${insertPosition}`, () => {
|
|
272
242
|
testRebaseDistributivity([
|
|
273
243
|
createArrayCS({
|
|
274
|
-
insert: [
|
|
275
|
-
[1, generateNamedEntities(1)],
|
|
276
|
-
],
|
|
244
|
+
insert: [[1, generateNamedEntities(1)]],
|
|
277
245
|
}),
|
|
278
246
|
createArrayCS({
|
|
279
|
-
insert: [
|
|
280
|
-
[6, generateNamedEntities(1)],
|
|
281
|
-
],
|
|
247
|
+
insert: [[6, generateNamedEntities(1)]],
|
|
282
248
|
}),
|
|
283
249
|
createArrayCS({
|
|
284
|
-
insert: [
|
|
285
|
-
[9, generateNamedEntities(1)],
|
|
286
|
-
],
|
|
250
|
+
insert: [[9, generateNamedEntities(1)]],
|
|
287
251
|
}),
|
|
288
252
|
createArrayCS({
|
|
289
253
|
remove: [
|
|
@@ -293,13 +257,9 @@ describe("Array Operations", function () {
|
|
|
293
257
|
],
|
|
294
258
|
}),
|
|
295
259
|
], createArrayCS({
|
|
296
|
-
insert: [
|
|
297
|
-
[insertPosition, generateNamedEntities(1)],
|
|
298
|
-
],
|
|
260
|
+
insert: [[insertPosition, generateNamedEntities(1)]],
|
|
299
261
|
}), createArrayCS({
|
|
300
|
-
insert: [
|
|
301
|
-
[0, generateNamedEntities(10)],
|
|
302
|
-
],
|
|
262
|
+
insert: [[0, generateNamedEntities(10)]],
|
|
303
263
|
}));
|
|
304
264
|
});
|
|
305
265
|
}
|
|
@@ -307,87 +267,55 @@ describe("Array Operations", function () {
|
|
|
307
267
|
it("Rebasing an insert with respect to a remove + insert", () => {
|
|
308
268
|
testRebaseDistributivity([
|
|
309
269
|
createArrayCS({
|
|
310
|
-
remove: [
|
|
311
|
-
[0, generateNamedEntities(3)],
|
|
312
|
-
],
|
|
270
|
+
remove: [[0, generateNamedEntities(3)]],
|
|
313
271
|
}),
|
|
314
272
|
createArrayCS({
|
|
315
|
-
insert: [
|
|
316
|
-
[0, generateNamedEntities(3)],
|
|
317
|
-
],
|
|
273
|
+
insert: [[0, generateNamedEntities(3)]],
|
|
318
274
|
}),
|
|
319
275
|
], createArrayCS({
|
|
320
|
-
insert: [
|
|
321
|
-
[0, generateNamedEntities(3)],
|
|
322
|
-
],
|
|
276
|
+
insert: [[0, generateNamedEntities(3)]],
|
|
323
277
|
}), createArrayCS({
|
|
324
|
-
insert: [
|
|
325
|
-
[0, generateNamedEntities(10)],
|
|
326
|
-
],
|
|
278
|
+
insert: [[0, generateNamedEntities(10)]],
|
|
327
279
|
}));
|
|
328
280
|
testRebaseDistributivity([
|
|
329
281
|
createArrayCS({
|
|
330
|
-
remove: [
|
|
331
|
-
[0, generateNamedEntities(3)],
|
|
332
|
-
],
|
|
282
|
+
remove: [[0, generateNamedEntities(3)]],
|
|
333
283
|
}),
|
|
334
284
|
createArrayCS({
|
|
335
|
-
insert: [
|
|
336
|
-
[0, generateNamedEntities(3)],
|
|
337
|
-
],
|
|
285
|
+
insert: [[0, generateNamedEntities(3)]],
|
|
338
286
|
}),
|
|
339
287
|
], createArrayCS({
|
|
340
|
-
insert: [
|
|
341
|
-
[3, generateNamedEntities(3)],
|
|
342
|
-
],
|
|
288
|
+
insert: [[3, generateNamedEntities(3)]],
|
|
343
289
|
}), createArrayCS({
|
|
344
|
-
insert: [
|
|
345
|
-
[0, generateNamedEntities(10)],
|
|
346
|
-
],
|
|
290
|
+
insert: [[0, generateNamedEntities(10)]],
|
|
347
291
|
}));
|
|
348
292
|
});
|
|
349
293
|
it("remove + insert at start of array", () => {
|
|
350
294
|
testRebaseDistributivity([
|
|
351
295
|
createArrayCS({
|
|
352
|
-
remove: [
|
|
353
|
-
[0, generateNamedEntities(3)],
|
|
354
|
-
],
|
|
296
|
+
remove: [[0, generateNamedEntities(3)]],
|
|
355
297
|
}),
|
|
356
298
|
createArrayCS({
|
|
357
|
-
insert: [
|
|
358
|
-
[0, generateNamedEntities(3)],
|
|
359
|
-
],
|
|
299
|
+
insert: [[0, generateNamedEntities(3)]],
|
|
360
300
|
}),
|
|
361
301
|
], createArrayCS({
|
|
362
|
-
insert: [
|
|
363
|
-
[3, generateNamedEntities(1)],
|
|
364
|
-
],
|
|
302
|
+
insert: [[3, generateNamedEntities(1)]],
|
|
365
303
|
}), createArrayCS({
|
|
366
|
-
insert: [
|
|
367
|
-
[0, generateNamedEntities(10)],
|
|
368
|
-
],
|
|
304
|
+
insert: [[0, generateNamedEntities(10)]],
|
|
369
305
|
}));
|
|
370
306
|
});
|
|
371
307
|
it("Rebased remove that cancels out", () => {
|
|
372
308
|
const deltacS = testRebaseDistributivity([
|
|
373
309
|
createArrayCS({
|
|
374
|
-
remove: [
|
|
375
|
-
[0, generateNamedEntities(3)],
|
|
376
|
-
],
|
|
310
|
+
remove: [[0, generateNamedEntities(3)]],
|
|
377
311
|
}),
|
|
378
312
|
createArrayCS({
|
|
379
|
-
insert: [
|
|
380
|
-
[0, generateNamedEntities(3)],
|
|
381
|
-
],
|
|
313
|
+
insert: [[0, generateNamedEntities(3)]],
|
|
382
314
|
}),
|
|
383
315
|
], createArrayCS({
|
|
384
|
-
remove: [
|
|
385
|
-
[1, generateNamedEntities(2)],
|
|
386
|
-
],
|
|
316
|
+
remove: [[1, generateNamedEntities(2)]],
|
|
387
317
|
}), createArrayCS({
|
|
388
|
-
insert: [
|
|
389
|
-
[0, generateNamedEntities(10)],
|
|
390
|
-
],
|
|
318
|
+
insert: [[0, generateNamedEntities(10)]],
|
|
391
319
|
}));
|
|
392
320
|
const arrayCS = getArrayCS(deltacS);
|
|
393
321
|
(0, chai_1.expect)(arrayCS.insert[0][1].length).to.equal(3);
|
|
@@ -396,159 +324,101 @@ describe("Array Operations", function () {
|
|
|
396
324
|
it("Insert in between two removes 1", () => {
|
|
397
325
|
testRebaseDistributivity([
|
|
398
326
|
createArrayCS({
|
|
399
|
-
insert: [
|
|
400
|
-
[2, generateNamedEntities(1)],
|
|
401
|
-
],
|
|
327
|
+
insert: [[2, generateNamedEntities(1)]],
|
|
402
328
|
}),
|
|
403
329
|
createArrayCS({
|
|
404
|
-
remove: [
|
|
405
|
-
[0, generateNamedEntities(2)],
|
|
406
|
-
],
|
|
330
|
+
remove: [[0, generateNamedEntities(2)]],
|
|
407
331
|
}),
|
|
408
332
|
createArrayCS({
|
|
409
|
-
remove: [
|
|
410
|
-
[1, generateNamedEntities(1)],
|
|
411
|
-
],
|
|
333
|
+
remove: [[1, generateNamedEntities(1)]],
|
|
412
334
|
}),
|
|
413
335
|
createArrayCS({
|
|
414
|
-
insert: [
|
|
415
|
-
[0, generateNamedEntities(2)],
|
|
416
|
-
],
|
|
336
|
+
insert: [[0, generateNamedEntities(2)]],
|
|
417
337
|
}),
|
|
418
338
|
], createArrayCS({
|
|
419
|
-
insert: [
|
|
420
|
-
[1, generateNamedEntities(1)],
|
|
421
|
-
],
|
|
339
|
+
insert: [[1, generateNamedEntities(1)]],
|
|
422
340
|
}), createArrayCS({
|
|
423
|
-
insert: [
|
|
424
|
-
[0, generateNamedEntities(10)],
|
|
425
|
-
],
|
|
341
|
+
insert: [[0, generateNamedEntities(10)]],
|
|
426
342
|
}));
|
|
427
343
|
});
|
|
428
344
|
it("Insert in between two removes 2", () => {
|
|
429
345
|
testRebaseDistributivity([
|
|
430
346
|
createArrayCS({
|
|
431
|
-
insert: [
|
|
432
|
-
[4, generateNamedEntities(1)],
|
|
433
|
-
],
|
|
347
|
+
insert: [[4, generateNamedEntities(1)]],
|
|
434
348
|
}),
|
|
435
349
|
createArrayCS({
|
|
436
|
-
remove: [
|
|
437
|
-
[2, generateNamedEntities(2)],
|
|
438
|
-
],
|
|
350
|
+
remove: [[2, generateNamedEntities(2)]],
|
|
439
351
|
}),
|
|
440
352
|
createArrayCS({
|
|
441
|
-
remove: [
|
|
442
|
-
[3, generateNamedEntities(1)],
|
|
443
|
-
],
|
|
353
|
+
remove: [[3, generateNamedEntities(1)]],
|
|
444
354
|
}),
|
|
445
355
|
createArrayCS({
|
|
446
|
-
insert: [
|
|
447
|
-
[2, generateNamedEntities(2)],
|
|
448
|
-
],
|
|
356
|
+
insert: [[2, generateNamedEntities(2)]],
|
|
449
357
|
}),
|
|
450
358
|
], createArrayCS({
|
|
451
|
-
insert: [
|
|
452
|
-
[3, generateNamedEntities(1)],
|
|
453
|
-
],
|
|
359
|
+
insert: [[3, generateNamedEntities(1)]],
|
|
454
360
|
}), createArrayCS({
|
|
455
|
-
insert: [
|
|
456
|
-
[0, generateNamedEntities(10)],
|
|
457
|
-
],
|
|
361
|
+
insert: [[0, generateNamedEntities(10)]],
|
|
458
362
|
}));
|
|
459
363
|
});
|
|
460
364
|
it("Inserts in between three removes", () => {
|
|
461
365
|
testRebaseDistributivity([
|
|
462
366
|
createArrayCS({
|
|
463
|
-
insert: [
|
|
464
|
-
[4, generateNamedEntities(1)],
|
|
465
|
-
],
|
|
367
|
+
insert: [[4, generateNamedEntities(1)]],
|
|
466
368
|
}),
|
|
467
369
|
createArrayCS({
|
|
468
|
-
insert: [
|
|
469
|
-
[6, generateNamedEntities(1)],
|
|
470
|
-
],
|
|
370
|
+
insert: [[6, generateNamedEntities(1)]],
|
|
471
371
|
}),
|
|
472
372
|
createArrayCS({
|
|
473
|
-
remove: [
|
|
474
|
-
[2, generateNamedEntities(2)],
|
|
475
|
-
],
|
|
373
|
+
remove: [[2, generateNamedEntities(2)]],
|
|
476
374
|
}),
|
|
477
375
|
createArrayCS({
|
|
478
|
-
remove: [
|
|
479
|
-
[3, generateNamedEntities(1)],
|
|
480
|
-
],
|
|
376
|
+
remove: [[3, generateNamedEntities(1)]],
|
|
481
377
|
}),
|
|
482
378
|
createArrayCS({
|
|
483
|
-
remove: [
|
|
484
|
-
[4, generateNamedEntities(1)],
|
|
485
|
-
],
|
|
379
|
+
remove: [[4, generateNamedEntities(1)]],
|
|
486
380
|
}),
|
|
487
381
|
createArrayCS({
|
|
488
|
-
insert: [
|
|
489
|
-
[2, generateNamedEntities(2)],
|
|
490
|
-
],
|
|
382
|
+
insert: [[2, generateNamedEntities(2)]],
|
|
491
383
|
}),
|
|
492
384
|
], createArrayCS({
|
|
493
|
-
insert: [
|
|
494
|
-
[3, generateNamedEntities(1)],
|
|
495
|
-
],
|
|
385
|
+
insert: [[3, generateNamedEntities(1)]],
|
|
496
386
|
}), createArrayCS({
|
|
497
|
-
insert: [
|
|
498
|
-
[0, generateNamedEntities(10)],
|
|
499
|
-
],
|
|
387
|
+
insert: [[0, generateNamedEntities(10)]],
|
|
500
388
|
}));
|
|
501
389
|
});
|
|
502
390
|
it("Adjacent remove with insert at the beginning of the remove range", () => {
|
|
503
391
|
testRebaseDistributivity([
|
|
504
392
|
createArrayCS({
|
|
505
|
-
remove: [
|
|
506
|
-
[1, generateNamedEntities(1)],
|
|
507
|
-
],
|
|
393
|
+
remove: [[1, generateNamedEntities(1)]],
|
|
508
394
|
}),
|
|
509
395
|
createArrayCS({
|
|
510
|
-
insert: [
|
|
511
|
-
[1, generateNamedEntities(2)],
|
|
512
|
-
],
|
|
396
|
+
insert: [[1, generateNamedEntities(2)]],
|
|
513
397
|
}),
|
|
514
398
|
], createArrayCS({
|
|
515
|
-
remove: [
|
|
516
|
-
[1, generateNamedEntities(1, [3])],
|
|
517
|
-
],
|
|
399
|
+
remove: [[1, generateNamedEntities(1, [3])]],
|
|
518
400
|
}), createArrayCS({
|
|
519
|
-
insert: [
|
|
520
|
-
[0, generateNamedEntities(10)],
|
|
521
|
-
],
|
|
401
|
+
insert: [[0, generateNamedEntities(10)]],
|
|
522
402
|
}));
|
|
523
403
|
});
|
|
524
404
|
it("Remove operation that cancels out", () => {
|
|
525
405
|
testRebaseDistributivity([
|
|
526
406
|
createArrayCS({
|
|
527
|
-
remove: [
|
|
528
|
-
[8, generateNamedEntities(2)],
|
|
529
|
-
],
|
|
407
|
+
remove: [[8, generateNamedEntities(2)]],
|
|
530
408
|
}),
|
|
531
409
|
createArrayCS({
|
|
532
|
-
insert: [
|
|
533
|
-
[8, generateNamedEntities(1)],
|
|
534
|
-
],
|
|
410
|
+
insert: [[8, generateNamedEntities(1)]],
|
|
535
411
|
}),
|
|
536
412
|
], createArrayCS({
|
|
537
|
-
remove: [
|
|
538
|
-
[8, generateNamedEntities(1, [3])],
|
|
539
|
-
],
|
|
413
|
+
remove: [[8, generateNamedEntities(1, [3])]],
|
|
540
414
|
}), createArrayCS({
|
|
541
|
-
insert: [
|
|
542
|
-
[0, generateNamedEntities(14)],
|
|
543
|
-
],
|
|
415
|
+
insert: [[0, generateNamedEntities(14)]],
|
|
544
416
|
}));
|
|
545
417
|
});
|
|
546
418
|
it("Remove operation that cancels out 2", () => {
|
|
547
419
|
testRebaseDistributivity([
|
|
548
420
|
createArrayCS({
|
|
549
|
-
remove: [
|
|
550
|
-
[8, generateNamedEntities(3)],
|
|
551
|
-
],
|
|
421
|
+
remove: [[8, generateNamedEntities(3)]],
|
|
552
422
|
}),
|
|
553
423
|
createArrayCS({
|
|
554
424
|
insert: [
|
|
@@ -558,30 +428,20 @@ describe("Array Operations", function () {
|
|
|
558
428
|
],
|
|
559
429
|
}),
|
|
560
430
|
], createArrayCS({
|
|
561
|
-
remove: [
|
|
562
|
-
[8, generateNamedEntities(1, [3])],
|
|
563
|
-
],
|
|
431
|
+
remove: [[8, generateNamedEntities(1, [3])]],
|
|
564
432
|
}), createArrayCS({
|
|
565
|
-
insert: [
|
|
566
|
-
[0, generateNamedEntities(14)],
|
|
567
|
-
],
|
|
433
|
+
insert: [[0, generateNamedEntities(14)]],
|
|
568
434
|
}));
|
|
569
435
|
});
|
|
570
436
|
it("Remove operation that cancels out in the middle of a range", () => {
|
|
571
437
|
testRebaseDistributivity([
|
|
572
438
|
createArrayCS({
|
|
573
|
-
remove: [
|
|
574
|
-
[4, generateNamedEntities(1)],
|
|
575
|
-
],
|
|
439
|
+
remove: [[4, generateNamedEntities(1)]],
|
|
576
440
|
}),
|
|
577
441
|
], createArrayCS({
|
|
578
|
-
remove: [
|
|
579
|
-
[3, generateNamedEntities(3)],
|
|
580
|
-
],
|
|
442
|
+
remove: [[3, generateNamedEntities(3)]],
|
|
581
443
|
}), createArrayCS({
|
|
582
|
-
insert: [
|
|
583
|
-
[0, generateNamedEntities(14)],
|
|
584
|
-
],
|
|
444
|
+
insert: [[0, generateNamedEntities(14)]],
|
|
585
445
|
}));
|
|
586
446
|
});
|
|
587
447
|
});
|
|
@@ -632,89 +492,65 @@ describe("Array Operations", function () {
|
|
|
632
492
|
if (customValidator !== undefined) {
|
|
633
493
|
customValidator(combinedCS, separateApplysResult, combinedApplyResult);
|
|
634
494
|
}
|
|
635
|
-
(0, chai_1.expect)(separateApplysResult.getSerializedChangeSet())
|
|
636
|
-
.to.deep.equal(combinedApplyResult.getSerializedChangeSet());
|
|
495
|
+
(0, chai_1.expect)(separateApplysResult.getSerializedChangeSet()).to.deep.equal(combinedApplyResult.getSerializedChangeSet());
|
|
637
496
|
}
|
|
638
497
|
describe("Apply Associativity", () => {
|
|
639
498
|
it("insert + remove + insert", () => {
|
|
640
499
|
const initial = createArrayCS({
|
|
641
|
-
insert: [
|
|
642
|
-
[0, generateNamedEntities(3)],
|
|
643
|
-
],
|
|
500
|
+
insert: [[0, generateNamedEntities(3)]],
|
|
644
501
|
}, "insert");
|
|
645
502
|
const ops = [
|
|
646
503
|
createArrayCS({
|
|
647
|
-
insert: [
|
|
648
|
-
[2, generateNamedEntities(2)],
|
|
649
|
-
],
|
|
504
|
+
insert: [[2, generateNamedEntities(2)]],
|
|
650
505
|
}),
|
|
651
506
|
createArrayCS({
|
|
652
|
-
remove: [
|
|
653
|
-
[3, generateNamedEntities(2, [1, 3])],
|
|
654
|
-
],
|
|
507
|
+
remove: [[3, generateNamedEntities(2, [1, 3])]],
|
|
655
508
|
}),
|
|
656
509
|
createArrayCS({
|
|
657
|
-
insert: [
|
|
658
|
-
[2, generateNamedEntities(1)],
|
|
659
|
-
],
|
|
510
|
+
insert: [[2, generateNamedEntities(1)]],
|
|
660
511
|
}),
|
|
661
512
|
];
|
|
662
513
|
testApplyAssociativity(initial, ops);
|
|
663
514
|
});
|
|
664
515
|
describe("Inserting into a remove range with deletes on both sides", () => {
|
|
665
|
-
for (const additionalInserts of [
|
|
516
|
+
for (const additionalInserts of [
|
|
517
|
+
"",
|
|
518
|
+
" with insert at the beginning",
|
|
519
|
+
" with insert at the end",
|
|
520
|
+
]) {
|
|
666
521
|
const offset = additionalInserts === " with insert at the beginning" ? 2 : 0;
|
|
667
522
|
for (const i of (0, range_1.default)(1, 9)) {
|
|
668
523
|
it(`at position ${i + offset}${additionalInserts}`, () => {
|
|
669
524
|
const initial = createArrayCS({
|
|
670
|
-
insert: [
|
|
671
|
-
[0, generateNamedEntities(10, undefined, "number")],
|
|
672
|
-
],
|
|
525
|
+
insert: [[0, generateNamedEntities(10, undefined, "number")]],
|
|
673
526
|
}, "insert", "array<Float64>");
|
|
674
527
|
let initialInserts = [];
|
|
675
528
|
let finalInserts = [];
|
|
676
529
|
if (additionalInserts === " with insert at the beginning") {
|
|
677
|
-
initialInserts = [
|
|
678
|
-
[0, generateNamedEntities(2, undefined, "number")],
|
|
679
|
-
];
|
|
530
|
+
initialInserts = [[0, generateNamedEntities(2, undefined, "number")]];
|
|
680
531
|
}
|
|
681
532
|
if (additionalInserts === " with insert at the end") {
|
|
682
|
-
finalInserts = [
|
|
683
|
-
[10, generateNamedEntities(2, undefined, "number")],
|
|
684
|
-
];
|
|
533
|
+
finalInserts = [[10, generateNamedEntities(2, undefined, "number")]];
|
|
685
534
|
}
|
|
686
|
-
const ops = [
|
|
535
|
+
const ops = [
|
|
536
|
+
createArrayCS({
|
|
687
537
|
insert: [
|
|
688
|
-
...initialInserts,
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
],
|
|
692
|
-
[
|
|
693
|
-
7,
|
|
694
|
-
generateNamedEntities(3, undefined, "number"),
|
|
695
|
-
],
|
|
538
|
+
...initialInserts,
|
|
539
|
+
[2, generateNamedEntities(2, undefined, "number")],
|
|
540
|
+
[7, generateNamedEntities(3, undefined, "number")],
|
|
696
541
|
...finalInserts,
|
|
697
542
|
],
|
|
698
|
-
remove: [
|
|
699
|
-
[
|
|
700
|
-
2,
|
|
701
|
-
generateNamedEntities(5, undefined, "number"),
|
|
702
|
-
],
|
|
703
|
-
],
|
|
543
|
+
remove: [[2, generateNamedEntities(5, undefined, "number")]],
|
|
704
544
|
}, undefined, "array<Float64>"),
|
|
705
545
|
createArrayCS({
|
|
706
546
|
insert: [
|
|
707
|
-
[
|
|
708
|
-
i + offset,
|
|
709
|
-
generateNamedEntities(2, undefined, "number"),
|
|
710
|
-
],
|
|
547
|
+
[i + offset, generateNamedEntities(2, undefined, "number")],
|
|
711
548
|
],
|
|
712
549
|
}, undefined, "array<Float64>"),
|
|
713
550
|
];
|
|
714
551
|
testApplyAssociativity(initial, ops, (combinedCS) => {
|
|
715
552
|
const arrayCS = getArrayCS(combinedCS);
|
|
716
|
-
(0, chai_1.expect)(arrayCS.insert.length).to.equal((i >= 2 && i < 8 ? 2 : 3) +
|
|
717
|
-
(additionalInserts !== "" ? 1 : 0));
|
|
553
|
+
(0, chai_1.expect)(arrayCS.insert.length).to.equal((i >= 2 && i < 8 ? 2 : 3) + (additionalInserts !== "" ? 1 : 0));
|
|
718
554
|
const insertOffset = additionalInserts == " with insert at the beginning" ? 1 : 0;
|
|
719
555
|
if (i >= 2 && i <= 4) {
|
|
720
556
|
(0, chai_1.expect)(arrayCS.insert[0 + insertOffset][1].length).to.equal(4);
|
|
@@ -731,11 +567,10 @@ describe("Array Operations", function () {
|
|
|
731
567
|
});
|
|
732
568
|
it("remove overlapping insert and remove ranges", () => {
|
|
733
569
|
const initial = createArrayCS({
|
|
734
|
-
insert: [
|
|
735
|
-
[0, generateNamedEntities(10, undefined, "number")],
|
|
736
|
-
],
|
|
570
|
+
insert: [[0, generateNamedEntities(10, undefined, "number")]],
|
|
737
571
|
}, "insert", "array<Float64>");
|
|
738
|
-
const ops = [
|
|
572
|
+
const ops = [
|
|
573
|
+
createArrayCS({
|
|
739
574
|
insert: [
|
|
740
575
|
[0, generateNamedEntities(1, undefined, "number")],
|
|
741
576
|
[1, generateNamedEntities(1, undefined, "number")],
|
|
@@ -748,46 +583,35 @@ describe("Array Operations", function () {
|
|
|
748
583
|
],
|
|
749
584
|
}, undefined, "array<Float64>"),
|
|
750
585
|
createArrayCS({
|
|
751
|
-
remove: [
|
|
752
|
-
[
|
|
753
|
-
0,
|
|
754
|
-
generateNamedEntities(2, undefined, "number"),
|
|
755
|
-
],
|
|
756
|
-
],
|
|
586
|
+
remove: [[0, generateNamedEntities(2, undefined, "number")]],
|
|
757
587
|
}, undefined, "array<Float64>"),
|
|
758
588
|
];
|
|
759
589
|
testApplyAssociativity(initial, ops);
|
|
760
590
|
});
|
|
761
591
|
it("Overlapping remove / insert", () => {
|
|
762
592
|
const initial = createArrayCS({
|
|
763
|
-
insert: [
|
|
764
|
-
[0, generateNamedEntities(10, undefined, "number")],
|
|
765
|
-
],
|
|
593
|
+
insert: [[0, generateNamedEntities(10, undefined, "number")]],
|
|
766
594
|
}, "insert", "array<Float64>");
|
|
767
|
-
const ops = [
|
|
595
|
+
const ops = [
|
|
596
|
+
createArrayCS({
|
|
768
597
|
insert: [
|
|
769
598
|
[0, generateNamedEntities(2, undefined, "number")],
|
|
770
599
|
[4, generateNamedEntities(2, undefined, "number")],
|
|
771
600
|
],
|
|
772
|
-
remove: [
|
|
773
|
-
[4, generateNamedEntities(5, undefined, "number")],
|
|
774
|
-
],
|
|
601
|
+
remove: [[4, generateNamedEntities(5, undefined, "number")]],
|
|
775
602
|
}, undefined, "array<Float64>"),
|
|
776
603
|
createArrayCS({
|
|
777
|
-
remove: [
|
|
778
|
-
[4, generateNamedEntities(2, undefined, "number")],
|
|
779
|
-
],
|
|
604
|
+
remove: [[4, generateNamedEntities(2, undefined, "number")]],
|
|
780
605
|
}, undefined, "array<Float64>"),
|
|
781
606
|
];
|
|
782
607
|
testApplyAssociativity(initial, ops);
|
|
783
608
|
});
|
|
784
609
|
it("Removing multiple inserts and removes", () => {
|
|
785
610
|
const initial = createArrayCS({
|
|
786
|
-
insert: [
|
|
787
|
-
[0, generateNamedEntities(10, undefined, "number")],
|
|
788
|
-
],
|
|
611
|
+
insert: [[0, generateNamedEntities(10, undefined, "number")]],
|
|
789
612
|
}, "insert", "array<Float64>");
|
|
790
|
-
const ops = [
|
|
613
|
+
const ops = [
|
|
614
|
+
createArrayCS({
|
|
791
615
|
insert: [
|
|
792
616
|
[1, generateNamedEntities(2, undefined, "number")],
|
|
793
617
|
[4, generateNamedEntities(4, undefined, "number")],
|
|
@@ -799,20 +623,17 @@ describe("Array Operations", function () {
|
|
|
799
623
|
],
|
|
800
624
|
}, undefined, "array<Float64>"),
|
|
801
625
|
createArrayCS({
|
|
802
|
-
remove: [
|
|
803
|
-
[0, generateNamedEntities(6, undefined, "number")],
|
|
804
|
-
],
|
|
626
|
+
remove: [[0, generateNamedEntities(6, undefined, "number")]],
|
|
805
627
|
}, undefined, "array<Float64>"),
|
|
806
628
|
];
|
|
807
629
|
testApplyAssociativity(initial, ops);
|
|
808
630
|
});
|
|
809
631
|
it("Removing insert/removes at the end", () => {
|
|
810
632
|
const initial = createArrayCS({
|
|
811
|
-
insert: [
|
|
812
|
-
[0, generateNamedEntities(10, undefined, "number")],
|
|
813
|
-
],
|
|
633
|
+
insert: [[0, generateNamedEntities(10, undefined, "number")]],
|
|
814
634
|
}, "insert", "array<Float64>");
|
|
815
|
-
const ops = [
|
|
635
|
+
const ops = [
|
|
636
|
+
createArrayCS({
|
|
816
637
|
insert: [
|
|
817
638
|
[0, generateNamedEntities(2, undefined, "number")],
|
|
818
639
|
[1, generateNamedEntities(1, undefined, "number")],
|
|
@@ -824,75 +645,52 @@ describe("Array Operations", function () {
|
|
|
824
645
|
],
|
|
825
646
|
}, undefined, "array<Float64>"),
|
|
826
647
|
createArrayCS({
|
|
827
|
-
remove: [
|
|
828
|
-
[6, generateNamedEntities(2, undefined, "number")],
|
|
829
|
-
],
|
|
648
|
+
remove: [[6, generateNamedEntities(2, undefined, "number")]],
|
|
830
649
|
}, undefined, "array<Float64>"),
|
|
831
650
|
];
|
|
832
651
|
testApplyAssociativity(initial, ops);
|
|
833
652
|
});
|
|
834
653
|
it("Insert with overlapping remove", () => {
|
|
835
654
|
const initial = createArrayCS({
|
|
836
|
-
insert: [
|
|
837
|
-
[0, generateNamedEntities(10)],
|
|
838
|
-
],
|
|
655
|
+
insert: [[0, generateNamedEntities(10)]],
|
|
839
656
|
}, "insert");
|
|
840
|
-
const ops = [
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
],
|
|
657
|
+
const ops = [
|
|
658
|
+
createArrayCS({
|
|
659
|
+
insert: [[1, generateNamedEntities(3)]],
|
|
844
660
|
}),
|
|
845
661
|
createArrayCS({
|
|
846
|
-
remove: [
|
|
847
|
-
|
|
848
|
-
],
|
|
849
|
-
insert: [
|
|
850
|
-
[1, generateNamedEntities(3)],
|
|
851
|
-
],
|
|
662
|
+
remove: [[1, generateNamedEntities(1)]],
|
|
663
|
+
insert: [[1, generateNamedEntities(3)]],
|
|
852
664
|
}),
|
|
853
665
|
];
|
|
854
666
|
testApplyAssociativity(initial, ops);
|
|
855
667
|
});
|
|
856
668
|
it("Failed case", () => {
|
|
857
669
|
const initial = createArrayCS({
|
|
858
|
-
insert: [
|
|
859
|
-
[0, generateNamedEntities(10)],
|
|
860
|
-
],
|
|
670
|
+
insert: [[0, generateNamedEntities(10)]],
|
|
861
671
|
}, "insert");
|
|
862
|
-
const ops = [
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
],
|
|
672
|
+
const ops = [
|
|
673
|
+
createArrayCS({
|
|
674
|
+
insert: [[0, generateNamedEntities(7)]],
|
|
866
675
|
}),
|
|
867
676
|
createArrayCS({
|
|
868
|
-
remove: [
|
|
869
|
-
|
|
870
|
-
],
|
|
871
|
-
insert: [
|
|
872
|
-
[1, generateNamedEntities(2)],
|
|
873
|
-
],
|
|
677
|
+
remove: [[0, generateNamedEntities(1)]],
|
|
678
|
+
insert: [[1, generateNamedEntities(2)]],
|
|
874
679
|
}),
|
|
875
680
|
];
|
|
876
681
|
testApplyAssociativity(initial, ops);
|
|
877
682
|
});
|
|
878
683
|
it("Failed case", () => {
|
|
879
684
|
const initial = createArrayCS({
|
|
880
|
-
insert: [
|
|
881
|
-
[0, generateNamedEntities(10)],
|
|
882
|
-
],
|
|
685
|
+
insert: [[0, generateNamedEntities(10)]],
|
|
883
686
|
}, "insert");
|
|
884
|
-
const ops = [
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
],
|
|
687
|
+
const ops = [
|
|
688
|
+
createArrayCS({
|
|
689
|
+
insert: [[0, generateNamedEntities(5)]],
|
|
888
690
|
}),
|
|
889
691
|
createArrayCS({
|
|
890
|
-
remove: [
|
|
891
|
-
|
|
892
|
-
],
|
|
893
|
-
insert: [
|
|
894
|
-
[5, generateNamedEntities(3)],
|
|
895
|
-
],
|
|
692
|
+
remove: [[4, generateNamedEntities(1)]],
|
|
693
|
+
insert: [[5, generateNamedEntities(3)]],
|
|
896
694
|
}),
|
|
897
695
|
];
|
|
898
696
|
testApplyAssociativity(initial, ops);
|
|
@@ -921,9 +719,10 @@ describe("Array Operations", function () {
|
|
|
921
719
|
insertNames.push(`inside remove range in B (${removeInsideInsertB})`);
|
|
922
720
|
}
|
|
923
721
|
let title = "with ";
|
|
924
|
-
title +=
|
|
925
|
-
|
|
926
|
-
|
|
722
|
+
title +=
|
|
723
|
+
insertNames.length === 0
|
|
724
|
+
? "no inserts"
|
|
725
|
+
: `inserts ${insertNames.join(", ")}`;
|
|
927
726
|
it(title, () => {
|
|
928
727
|
const insertsA = [];
|
|
929
728
|
const insertsB = [];
|
|
@@ -936,9 +735,7 @@ describe("Array Operations", function () {
|
|
|
936
735
|
insertsA.push([5, generateNamedEntities(1)]);
|
|
937
736
|
offset += 1;
|
|
938
737
|
}
|
|
939
|
-
let removesB = [
|
|
940
|
-
[5 + offset, generateNamedEntities(3)],
|
|
941
|
-
];
|
|
738
|
+
let removesB = [[5 + offset, generateNamedEntities(3)]];
|
|
942
739
|
if (startInsertB) {
|
|
943
740
|
insertsB.push([0, generateNamedEntities(1)]);
|
|
944
741
|
}
|
|
@@ -947,7 +744,10 @@ describe("Array Operations", function () {
|
|
|
947
744
|
}
|
|
948
745
|
if (removeInsideInsertB) {
|
|
949
746
|
const removeOffset = removeInsideInsertB === "separate" ? 1 : 0;
|
|
950
|
-
insertsB.push([
|
|
747
|
+
insertsB.push([
|
|
748
|
+
6 + offset + removeOffset,
|
|
749
|
+
generateNamedEntities(1),
|
|
750
|
+
]);
|
|
951
751
|
removesB = [
|
|
952
752
|
[5 + offset + removeOffset, generateNamedEntities(1)],
|
|
953
753
|
[6 + offset + removeOffset, generateNamedEntities(1)],
|
|
@@ -955,9 +755,7 @@ describe("Array Operations", function () {
|
|
|
955
755
|
}
|
|
956
756
|
const CS1 = createArrayCS({
|
|
957
757
|
insert: insertsA,
|
|
958
|
-
remove: [
|
|
959
|
-
[5, generateNamedEntities(3)],
|
|
960
|
-
],
|
|
758
|
+
remove: [[5, generateNamedEntities(3)]],
|
|
961
759
|
});
|
|
962
760
|
const CS2 = createArrayCS({
|
|
963
761
|
insert: insertsB,
|