@fluid-experimental/property-properties 2.0.0-internal.3.0.2 → 2.0.0-internal.3.2.0
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/containerSerializer.d.ts.map +1 -1
- package/dist/containerSerializer.js +5 -5
- package/dist/containerSerializer.js.map +1 -1
- package/dist/enableValidations.js.map +1 -1
- package/dist/index.d.ts +19 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/properties/abstractStaticCollectionProperty.d.ts +10 -10
- package/dist/properties/abstractStaticCollectionProperty.d.ts.map +1 -1
- package/dist/properties/abstractStaticCollectionProperty.js +70 -53
- package/dist/properties/abstractStaticCollectionProperty.js.map +1 -1
- package/dist/properties/arrayProperty.d.ts.map +1 -1
- package/dist/properties/arrayProperty.js +152 -103
- package/dist/properties/arrayProperty.js.map +1 -1
- package/dist/properties/baseProperty.d.ts +4 -4
- package/dist/properties/baseProperty.d.ts.map +1 -1
- package/dist/properties/baseProperty.js +69 -47
- package/dist/properties/baseProperty.js.map +1 -1
- package/dist/properties/boolProperty.d.ts.map +1 -1
- package/dist/properties/boolProperty.js +3 -3
- package/dist/properties/boolProperty.js.map +1 -1
- package/dist/properties/containerProperty.d.ts +8 -8
- package/dist/properties/containerProperty.d.ts.map +1 -1
- package/dist/properties/containerProperty.js +33 -26
- package/dist/properties/containerProperty.js.map +1 -1
- package/dist/properties/enumArrayProperty.d.ts.map +1 -1
- package/dist/properties/enumArrayProperty.js +14 -14
- package/dist/properties/enumArrayProperty.js.map +1 -1
- package/dist/properties/enumProperty.d.ts.map +1 -1
- package/dist/properties/enumProperty.js +17 -17
- package/dist/properties/enumProperty.js.map +1 -1
- package/dist/properties/floatProperties.js +4 -4
- package/dist/properties/floatProperties.js.map +1 -1
- package/dist/properties/index.d.ts +23 -23
- package/dist/properties/index.d.ts.map +1 -1
- package/dist/properties/index.js.map +1 -1
- package/dist/properties/indexedCollectionBaseProperty.d.ts.map +1 -1
- package/dist/properties/indexedCollectionBaseProperty.js +47 -37
- package/dist/properties/indexedCollectionBaseProperty.js.map +1 -1
- package/dist/properties/intProperties.d.ts.map +1 -1
- package/dist/properties/intProperties.js +10 -10
- package/dist/properties/intProperties.js.map +1 -1
- package/dist/properties/lazyLoadedProperties.js.map +1 -1
- package/dist/properties/mapProperty.d.ts.map +1 -1
- package/dist/properties/mapProperty.js +21 -17
- package/dist/properties/mapProperty.js.map +1 -1
- package/dist/properties/namedNodeProperty.d.ts.map +1 -1
- package/dist/properties/namedNodeProperty.js +3 -3
- package/dist/properties/namedNodeProperty.js.map +1 -1
- package/dist/properties/namedProperty.d.ts.map +1 -1
- package/dist/properties/namedProperty.js +7 -5
- package/dist/properties/namedProperty.js.map +1 -1
- package/dist/properties/nodeProperty.d.ts.map +1 -1
- package/dist/properties/nodeProperty.js +5 -3
- package/dist/properties/nodeProperty.js.map +1 -1
- package/dist/properties/primitiveTypeCasts.d.ts.map +1 -1
- package/dist/properties/primitiveTypeCasts.js +9 -9
- package/dist/properties/primitiveTypeCasts.js.map +1 -1
- package/dist/properties/referenceArrayProperty.d.ts.map +1 -1
- package/dist/properties/referenceArrayProperty.js +31 -25
- package/dist/properties/referenceArrayProperty.js.map +1 -1
- package/dist/properties/referenceMapProperty.d.ts.map +1 -1
- package/dist/properties/referenceMapProperty.js +18 -18
- package/dist/properties/referenceMapProperty.js.map +1 -1
- package/dist/properties/referenceProperty.d.ts.map +1 -1
- package/dist/properties/referenceProperty.js +33 -29
- package/dist/properties/referenceProperty.js.map +1 -1
- package/dist/properties/setProperty.d.ts.map +1 -1
- package/dist/properties/setProperty.js +31 -29
- package/dist/properties/setProperty.js.map +1 -1
- package/dist/properties/stringProperty.d.ts.map +1 -1
- package/dist/properties/stringProperty.js +56 -40
- package/dist/properties/stringProperty.js.map +1 -1
- package/dist/properties/uintProperties.js +5 -5
- package/dist/properties/uintProperties.js.map +1 -1
- package/dist/properties/valueArrayProperty.d.ts +1 -1
- package/dist/properties/valueArrayProperty.d.ts.map +1 -1
- package/dist/properties/valueArrayProperty.js +30 -29
- package/dist/properties/valueArrayProperty.js.map +1 -1
- package/dist/properties/valueMapProperty.d.ts.map +1 -1
- package/dist/properties/valueMapProperty.js +31 -29
- package/dist/properties/valueMapProperty.js.map +1 -1
- package/dist/properties/valueProperty.d.ts.map +1 -1
- package/dist/properties/valueProperty.js +11 -9
- package/dist/properties/valueProperty.js.map +1 -1
- package/dist/propertyFactory.d.ts.map +1 -1
- package/dist/propertyFactory.js +309 -252
- package/dist/propertyFactory.js.map +1 -1
- package/dist/propertyTemplate.d.ts +17 -17
- package/dist/propertyTemplate.d.ts.map +1 -1
- package/dist/propertyTemplate.js +64 -45
- package/dist/propertyTemplate.js.map +1 -1
- package/dist/propertyTemplateWrapper.d.ts.map +1 -1
- package/dist/propertyTemplateWrapper.js +40 -25
- package/dist/propertyTemplateWrapper.js.map +1 -1
- package/dist/propertyUtils.d.ts.map +1 -1
- package/dist/propertyUtils.js.map +1 -1
- package/dist/test/properties/arrayProperty.spec.js +566 -490
- package/dist/test/properties/arrayProperty.spec.js.map +1 -1
- package/dist/test/properties/baseProperty.spec.js +293 -280
- package/dist/test/properties/baseProperty.spec.js.map +1 -1
- package/dist/test/properties/containerProperty.spec.js +100 -94
- package/dist/test/properties/containerProperty.spec.js.map +1 -1
- package/dist/test/properties/customArrayProperty.spec.js +174 -147
- package/dist/test/properties/customArrayProperty.spec.js.map +1 -1
- package/dist/test/properties/enumArrayProperty.spec.js +67 -63
- package/dist/test/properties/enumArrayProperty.spec.js.map +1 -1
- package/dist/test/properties/enumProperty.spec.js +115 -97
- package/dist/test/properties/enumProperty.spec.js.map +1 -1
- package/dist/test/properties/float32.spec.js +5 -5
- package/dist/test/properties/float32.spec.js.map +1 -1
- package/dist/test/properties/int64ArrayProperty.spec.js +157 -93
- package/dist/test/properties/int64ArrayProperty.spec.js.map +1 -1
- package/dist/test/properties/int64MapProperty.spec.js +185 -166
- package/dist/test/properties/int64MapProperty.spec.js.map +1 -1
- package/dist/test/properties/int64Property.spec.js +109 -109
- package/dist/test/properties/int64Property.spec.js.map +1 -1
- package/dist/test/properties/isLeafNode.spec.js +75 -76
- package/dist/test/properties/isLeafNode.spec.js.map +1 -1
- package/dist/test/properties/mapProperty.spec.js +571 -531
- package/dist/test/properties/mapProperty.spec.js.map +1 -1
- package/dist/test/properties/namedNodeProperty.spec.js +31 -31
- package/dist/test/properties/namedNodeProperty.spec.js.map +1 -1
- package/dist/test/properties/nodeProperty.spec.js +805 -795
- package/dist/test/properties/nodeProperty.spec.js.map +1 -1
- package/dist/test/properties/referenceProperty.spec.js +729 -679
- package/dist/test/properties/referenceProperty.spec.js.map +1 -1
- package/dist/test/properties/relationshipProperty.spec.js +16 -16
- package/dist/test/properties/relationshipProperty.spec.js.map +1 -1
- package/dist/test/properties/setProperty.spec.js +288 -227
- package/dist/test/properties/setProperty.spec.js.map +1 -1
- package/dist/test/properties/stringProperty.spec.js +326 -318
- package/dist/test/properties/stringProperty.spec.js.map +1 -1
- package/dist/test/properties/uint64Property.spec.js +46 -36
- package/dist/test/properties/uint64Property.spec.js.map +1 -1
- package/dist/test/properties/valueMapProperty.spec.js +259 -246
- package/dist/test/properties/valueMapProperty.spec.js.map +1 -1
- package/dist/test/properties/valueProperty.spec.js +49 -43
- package/dist/test/properties/valueProperty.spec.js.map +1 -1
- package/dist/test/propertyFactory.spec.js +2038 -1631
- package/dist/test/propertyFactory.spec.js.map +1 -1
- package/dist/test/propertyTemplateWrapper.spec.js +72 -102
- package/dist/test/propertyTemplateWrapper.spec.js.map +1 -1
- package/dist/test/propertyUtils.spec.js +22 -21
- package/dist/test/propertyUtils.spec.js.map +1 -1
- package/dist/test/reversibleChangeset.spec.js +857 -703
- package/dist/test/reversibleChangeset.spec.js.map +1 -1
- package/dist/test/setup.js +5 -5
- package/dist/test/setup.js.map +1 -1
- package/dist/test/tsconfig.tsbuildinfo +1 -1
- package/dist/test/utils.spec.js +1334 -1144
- package/dist/test/utils.spec.js.map +1 -1
- package/dist/test/validation/badMissingSemverInTypeid.js +20 -20
- package/dist/test/validation/badMissingSemverInTypeid.js.map +1 -1
- package/dist/test/validation/badPrimitiveTypeid.js +12 -12
- package/dist/test/validation/badPrimitiveTypeid.js.map +1 -1
- package/dist/test/validation/goodColorId.js +91 -91
- package/dist/test/validation/goodColorId.js.map +1 -1
- package/dist/test/validation/goodColorPalette.js +4 -4
- package/dist/test/validation/goodColorPalette.js.map +1 -1
- package/dist/test/validation/goodPointId.js +20 -20
- package/dist/test/validation/goodPointId.js.map +1 -1
- package/dist/test/validation/reversibleChangeSetTestData.js +23841 -2
- package/dist/test/validation/reversibleChangeSetTestData.js.map +1 -1
- package/lib/containerSerializer.d.ts.map +1 -1
- package/lib/containerSerializer.js +5 -5
- package/lib/containerSerializer.js.map +1 -1
- package/lib/enableValidations.js.map +1 -1
- package/lib/index.d.ts +19 -19
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +19 -19
- package/lib/index.js.map +1 -1
- package/lib/properties/abstractStaticCollectionProperty.d.ts +10 -10
- package/lib/properties/abstractStaticCollectionProperty.d.ts.map +1 -1
- package/lib/properties/abstractStaticCollectionProperty.js +70 -53
- package/lib/properties/abstractStaticCollectionProperty.js.map +1 -1
- package/lib/properties/arrayProperty.d.ts.map +1 -1
- package/lib/properties/arrayProperty.js +152 -103
- package/lib/properties/arrayProperty.js.map +1 -1
- package/lib/properties/baseProperty.d.ts +4 -4
- package/lib/properties/baseProperty.d.ts.map +1 -1
- package/lib/properties/baseProperty.js +73 -51
- package/lib/properties/baseProperty.js.map +1 -1
- package/lib/properties/boolProperty.d.ts.map +1 -1
- package/lib/properties/boolProperty.js +3 -3
- package/lib/properties/boolProperty.js.map +1 -1
- package/lib/properties/containerProperty.d.ts +8 -8
- package/lib/properties/containerProperty.d.ts.map +1 -1
- package/lib/properties/containerProperty.js +33 -26
- package/lib/properties/containerProperty.js.map +1 -1
- package/lib/properties/enumArrayProperty.d.ts.map +1 -1
- package/lib/properties/enumArrayProperty.js +14 -14
- package/lib/properties/enumArrayProperty.js.map +1 -1
- package/lib/properties/enumProperty.d.ts.map +1 -1
- package/lib/properties/enumProperty.js +17 -17
- package/lib/properties/enumProperty.js.map +1 -1
- package/lib/properties/floatProperties.js +4 -4
- package/lib/properties/floatProperties.js.map +1 -1
- package/lib/properties/index.d.ts +23 -23
- package/lib/properties/index.d.ts.map +1 -1
- package/lib/properties/index.js +23 -23
- package/lib/properties/index.js.map +1 -1
- package/lib/properties/indexedCollectionBaseProperty.d.ts.map +1 -1
- package/lib/properties/indexedCollectionBaseProperty.js +47 -37
- package/lib/properties/indexedCollectionBaseProperty.js.map +1 -1
- package/lib/properties/intProperties.d.ts.map +1 -1
- package/lib/properties/intProperties.js +10 -10
- package/lib/properties/intProperties.js.map +1 -1
- package/lib/properties/lazyLoadedProperties.js.map +1 -1
- package/lib/properties/mapProperty.d.ts.map +1 -1
- package/lib/properties/mapProperty.js +21 -17
- package/lib/properties/mapProperty.js.map +1 -1
- package/lib/properties/namedNodeProperty.d.ts.map +1 -1
- package/lib/properties/namedNodeProperty.js +3 -3
- package/lib/properties/namedNodeProperty.js.map +1 -1
- package/lib/properties/namedProperty.d.ts.map +1 -1
- package/lib/properties/namedProperty.js +7 -5
- package/lib/properties/namedProperty.js.map +1 -1
- package/lib/properties/nodeProperty.d.ts.map +1 -1
- package/lib/properties/nodeProperty.js +5 -3
- package/lib/properties/nodeProperty.js.map +1 -1
- package/lib/properties/primitiveTypeCasts.d.ts.map +1 -1
- package/lib/properties/primitiveTypeCasts.js +9 -9
- package/lib/properties/primitiveTypeCasts.js.map +1 -1
- package/lib/properties/referenceArrayProperty.d.ts.map +1 -1
- package/lib/properties/referenceArrayProperty.js +31 -25
- package/lib/properties/referenceArrayProperty.js.map +1 -1
- package/lib/properties/referenceMapProperty.d.ts.map +1 -1
- package/lib/properties/referenceMapProperty.js +18 -18
- package/lib/properties/referenceMapProperty.js.map +1 -1
- package/lib/properties/referenceProperty.d.ts.map +1 -1
- package/lib/properties/referenceProperty.js +33 -29
- package/lib/properties/referenceProperty.js.map +1 -1
- package/lib/properties/setProperty.d.ts.map +1 -1
- package/lib/properties/setProperty.js +31 -29
- package/lib/properties/setProperty.js.map +1 -1
- package/lib/properties/stringProperty.d.ts.map +1 -1
- package/lib/properties/stringProperty.js +56 -40
- package/lib/properties/stringProperty.js.map +1 -1
- package/lib/properties/uintProperties.js +5 -5
- package/lib/properties/uintProperties.js.map +1 -1
- package/lib/properties/valueArrayProperty.d.ts +1 -1
- package/lib/properties/valueArrayProperty.d.ts.map +1 -1
- package/lib/properties/valueArrayProperty.js +30 -29
- package/lib/properties/valueArrayProperty.js.map +1 -1
- package/lib/properties/valueMapProperty.d.ts.map +1 -1
- package/lib/properties/valueMapProperty.js +31 -29
- package/lib/properties/valueMapProperty.js.map +1 -1
- package/lib/properties/valueProperty.d.ts.map +1 -1
- package/lib/properties/valueProperty.js +11 -9
- package/lib/properties/valueProperty.js.map +1 -1
- package/lib/propertyFactory.d.ts.map +1 -1
- package/lib/propertyFactory.js +309 -252
- package/lib/propertyFactory.js.map +1 -1
- package/lib/propertyTemplate.d.ts +17 -17
- package/lib/propertyTemplate.d.ts.map +1 -1
- package/lib/propertyTemplate.js +64 -45
- package/lib/propertyTemplate.js.map +1 -1
- package/lib/propertyTemplateWrapper.d.ts.map +1 -1
- package/lib/propertyTemplateWrapper.js +40 -25
- package/lib/propertyTemplateWrapper.js.map +1 -1
- package/lib/propertyUtils.d.ts.map +1 -1
- package/lib/propertyUtils.js.map +1 -1
- package/package.json +28 -28
- package/src/index.d.ts +2750 -2681
|
@@ -8,107 +8,121 @@
|
|
|
8
8
|
*/
|
|
9
9
|
var PropertyFactory, BaseProperty, OurTestTemplate, OurArrayTestTemplate2, error, DeterministicRandomGenerator, _, ChangeSet, deepCopy;
|
|
10
10
|
var possibleChanges = {
|
|
11
|
-
0:
|
|
12
|
-
1:
|
|
13
|
-
2:
|
|
14
|
-
3:
|
|
11
|
+
0: "insert",
|
|
12
|
+
1: "modify",
|
|
13
|
+
2: "remove",
|
|
14
|
+
3: "set",
|
|
15
15
|
};
|
|
16
16
|
var createTestArrayProp = function () {
|
|
17
|
-
return PropertyFactory.create(
|
|
17
|
+
return PropertyFactory.create("autodesk.tests:CustomArrayTestID-1.0.0")._properties
|
|
18
|
+
.MyCustomArray;
|
|
18
19
|
};
|
|
19
20
|
var createRandomProperty = function () {
|
|
20
|
-
var node1 = PropertyFactory.create(
|
|
21
|
+
var node1 = PropertyFactory.create("autodesk.tests:TestID-1.0.0");
|
|
21
22
|
node1._properties.MyFloatProp.value = Math.random() * 100;
|
|
22
23
|
node1._properties.MyIntProp.value = Math.random() * 100;
|
|
23
24
|
return node1;
|
|
24
25
|
};
|
|
25
|
-
describe(
|
|
26
|
+
describe("CustomArrayProperty", function () {
|
|
26
27
|
/**
|
|
27
28
|
* Get all the objects we need in this test here.
|
|
28
29
|
*/
|
|
29
30
|
before(function () {
|
|
30
|
-
PropertyFactory = require(
|
|
31
|
-
BaseProperty = require(
|
|
32
|
-
DeterministicRandomGenerator =
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
PropertyFactory = require("../..").PropertyFactory;
|
|
32
|
+
BaseProperty = require("../..").BaseProperty;
|
|
33
|
+
DeterministicRandomGenerator =
|
|
34
|
+
require("@fluid-experimental/property-common").DeterministicRandomGenerator;
|
|
35
|
+
ChangeSet = require("@fluid-experimental/property-changeset").ChangeSet;
|
|
36
|
+
_ = require("lodash");
|
|
35
37
|
deepCopy = _.cloneDeep;
|
|
36
38
|
OurTestTemplate = {
|
|
37
|
-
typeid:
|
|
38
|
-
properties: [
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
typeid: "autodesk.tests:TestID-1.0.0",
|
|
40
|
+
properties: [
|
|
41
|
+
{
|
|
42
|
+
id: "MyFloatProp",
|
|
43
|
+
typeid: "Float32",
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: "MyIntProp",
|
|
47
|
+
typeid: "Int32",
|
|
42
48
|
},
|
|
43
49
|
],
|
|
44
50
|
};
|
|
45
51
|
PropertyFactory._reregister(OurTestTemplate);
|
|
46
52
|
OurArrayTestTemplate2 = {
|
|
47
|
-
typeid:
|
|
53
|
+
typeid: "autodesk.tests:CustomArrayTestID-1.0.0",
|
|
48
54
|
properties: [
|
|
49
|
-
{ id:
|
|
50
|
-
{ id:
|
|
55
|
+
{ id: "MyCustomArray", typeid: "autodesk.tests:TestID-1.0.0", context: "array" },
|
|
56
|
+
{ id: "SomeOtherProperty", typeid: "String" },
|
|
51
57
|
],
|
|
52
58
|
};
|
|
53
59
|
PropertyFactory._reregister(OurArrayTestTemplate2);
|
|
54
60
|
var NamedPropertyWithStringTemplate = {
|
|
55
|
-
typeid:
|
|
56
|
-
inherits:
|
|
57
|
-
properties: [
|
|
58
|
-
|
|
59
|
-
|
|
61
|
+
typeid: "autodesk.tests:Array.NamedPropertyWithString-1.0.0",
|
|
62
|
+
inherits: "NamedProperty",
|
|
63
|
+
properties: [
|
|
64
|
+
{
|
|
65
|
+
id: "stringProperty",
|
|
66
|
+
typeid: "String",
|
|
67
|
+
},
|
|
68
|
+
],
|
|
60
69
|
};
|
|
61
70
|
PropertyFactory._reregister(NamedPropertyWithStringTemplate);
|
|
62
71
|
});
|
|
63
|
-
describe(
|
|
64
|
-
it(
|
|
72
|
+
describe("Checking the generalized squash function of a CustomPropertyArrayProperty", function () {
|
|
73
|
+
it("[random number test] should be squashed to the expected changeset", function (done) {
|
|
65
74
|
try {
|
|
66
75
|
var arrayProp = createTestArrayProp();
|
|
67
76
|
var currentArrayLength = 0;
|
|
68
|
-
arrayProp.insertRange(0, [
|
|
69
|
-
createRandomProperty(),
|
|
77
|
+
arrayProp.insertRange(0, [
|
|
78
|
+
createRandomProperty(),
|
|
79
|
+
createRandomProperty(),
|
|
80
|
+
createRandomProperty(),
|
|
81
|
+
createRandomProperty(),
|
|
82
|
+
]);
|
|
70
83
|
arrayProp.cleanDirty();
|
|
71
84
|
// Create a copy of this state
|
|
72
85
|
var arrayPropCopy = createTestArrayProp();
|
|
73
|
-
arrayPropCopy.deserialize(arrayProp.serialize({
|
|
86
|
+
arrayPropCopy.deserialize(arrayProp.serialize({ dirtyOnly: false }));
|
|
74
87
|
arrayPropCopy.cleanDirty();
|
|
75
88
|
for (var i = 0; i < 500; ++i) {
|
|
76
89
|
currentArrayLength = arrayProp.length;
|
|
77
|
-
var nextOpType =
|
|
90
|
+
var nextOpType = "insert";
|
|
78
91
|
var opOffset = 0;
|
|
79
92
|
if (currentArrayLength > 0) {
|
|
80
93
|
nextOpType = possibleChanges[Math.floor(Math.random() * 4)];
|
|
81
94
|
opOffset = Math.min(Math.floor(Math.random() * currentArrayLength), currentArrayLength - 1);
|
|
82
95
|
}
|
|
83
|
-
var opLength = 1 +
|
|
96
|
+
var opLength = 1 +
|
|
97
|
+
Math.min(Math.floor(Math.random() * (currentArrayLength - opOffset)), currentArrayLength - opOffset - 1);
|
|
84
98
|
switch (nextOpType) {
|
|
85
|
-
case
|
|
99
|
+
case "remove": {
|
|
86
100
|
arrayProp.removeRange(opOffset, opLength);
|
|
87
101
|
break;
|
|
88
102
|
}
|
|
89
|
-
case
|
|
103
|
+
case "insert": {
|
|
90
104
|
arrayProp.insertRange(opOffset, [createRandomProperty()]);
|
|
91
105
|
break;
|
|
92
106
|
}
|
|
93
|
-
case
|
|
107
|
+
case "modify": {
|
|
94
108
|
var childProperty = arrayProp.get(opOffset);
|
|
95
109
|
childProperty._properties.MyFloatProp.value = Math.random() * 100;
|
|
96
110
|
childProperty._properties.MyIntProp.value = Math.random() * 100;
|
|
97
111
|
break;
|
|
98
112
|
}
|
|
99
|
-
case
|
|
113
|
+
case "set": {
|
|
100
114
|
arrayProp.set(opOffset, createRandomProperty());
|
|
101
115
|
break;
|
|
102
116
|
}
|
|
103
117
|
// no default
|
|
104
118
|
}
|
|
105
119
|
var serializedDirtyChanges = arrayProp.serialize({
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
120
|
+
dirtyOnly: true,
|
|
121
|
+
includeRootTypeid: false,
|
|
122
|
+
dirtinessType: BaseProperty.MODIFIED_STATE_FLAGS.DIRTY,
|
|
109
123
|
});
|
|
110
124
|
var arrayPropTest = createTestArrayProp();
|
|
111
|
-
arrayPropTest.deserialize(arrayPropCopy.serialize({
|
|
125
|
+
arrayPropTest.deserialize(arrayPropCopy.serialize({ dirtyOnly: false }));
|
|
112
126
|
arrayPropTest.cleanDirty();
|
|
113
127
|
arrayPropTest.applyChangeSet(serializedDirtyChanges);
|
|
114
128
|
}
|
|
@@ -119,130 +133,142 @@ describe('CustomArrayProperty', function () {
|
|
|
119
133
|
finally {
|
|
120
134
|
expect(error).to.equal(undefined);
|
|
121
135
|
expect(arrayProp).to.not.equal(null);
|
|
122
|
-
expect(arrayProp.serialize({
|
|
136
|
+
expect(arrayProp.serialize({ dirtyOnly: false })).to.deep.equal(arrayPropTest.serialize({ dirtyOnly: false }));
|
|
123
137
|
done();
|
|
124
138
|
}
|
|
125
139
|
});
|
|
126
140
|
});
|
|
127
|
-
describe(
|
|
128
|
-
it(
|
|
129
|
-
var arrayParent = PropertyFactory.create(
|
|
141
|
+
describe("Path resolution", function () {
|
|
142
|
+
it("should work for array properties", function () {
|
|
143
|
+
var arrayParent = PropertyFactory.create("autodesk.tests:CustomArrayTestID-1.0.0");
|
|
130
144
|
var arrayProp = arrayParent._properties.MyCustomArray;
|
|
131
145
|
// prepare initial state
|
|
132
146
|
var entries = [];
|
|
133
147
|
for (var i = 0; i < 10; i++) {
|
|
134
|
-
var entry = PropertyFactory.create(
|
|
148
|
+
var entry = PropertyFactory.create("autodesk.tests:TestID-1.0.0");
|
|
135
149
|
entry._properties.MyIntProp.value = i;
|
|
136
150
|
entries.push(entry);
|
|
137
151
|
}
|
|
138
152
|
arrayParent._properties.MyCustomArray.insertRange(0, entries);
|
|
139
153
|
// Make sure that arrray access works
|
|
140
|
-
expect(arrayParent.resolvePath(
|
|
141
|
-
expect(arrayProp.resolvePath(
|
|
154
|
+
expect(arrayParent.resolvePath("MyCustomArray[0]")._properties.MyIntProp.value).to.equal(0);
|
|
155
|
+
expect(arrayProp.resolvePath("[2]")._properties.MyIntProp.value).to.equal(2);
|
|
142
156
|
// Test out of bounds access
|
|
143
|
-
expect(arrayParent.resolvePath(
|
|
144
|
-
expect(arrayParent.resolvePath(
|
|
157
|
+
expect(arrayParent.resolvePath("MyCustomArray[-1]")).to.be.undefined;
|
|
158
|
+
expect(arrayParent.resolvePath("MyCustomArray[10]")).to.be.undefined;
|
|
145
159
|
var myTestArrayProp = arrayProp.get(5);
|
|
146
|
-
expect(myTestArrayProp.getAbsolutePath()).to.equal(
|
|
147
|
-
expect(myTestArrayProp.getRelativePath(arrayProp)).to.equal(
|
|
160
|
+
expect(myTestArrayProp.getAbsolutePath()).to.equal("/MyCustomArray[5]");
|
|
161
|
+
expect(myTestArrayProp.getRelativePath(arrayProp)).to.equal("[5]");
|
|
148
162
|
// Test exception on parsing error
|
|
149
|
-
expect(function () {
|
|
163
|
+
expect(function () {
|
|
164
|
+
arrayParent.resolvePath('MyCustomArray["abcd"]');
|
|
165
|
+
}).to.throw();
|
|
150
166
|
// Test path resolution after insertion
|
|
151
|
-
var newEntry = PropertyFactory.create(
|
|
167
|
+
var newEntry = PropertyFactory.create("autodesk.tests:TestID-1.0.0");
|
|
152
168
|
newEntry._properties.MyIntProp.value = -1;
|
|
153
169
|
arrayParent._properties.MyCustomArray.insertRange(0, [newEntry]);
|
|
154
|
-
expect(arrayParent.resolvePath(
|
|
155
|
-
expect(myTestArrayProp.getAbsolutePath()).to.equal(
|
|
170
|
+
expect(arrayParent.resolvePath("MyCustomArray[0]")._properties.MyIntProp.value).to.equal(-1);
|
|
171
|
+
expect(myTestArrayProp.getAbsolutePath()).to.equal("/MyCustomArray[6]");
|
|
156
172
|
// Test path resolution after setting
|
|
157
173
|
// TODO: set currently broken
|
|
158
|
-
var newEntry2 = PropertyFactory.create(
|
|
174
|
+
var newEntry2 = PropertyFactory.create("autodesk.tests:TestID-1.0.0");
|
|
159
175
|
newEntry2._properties.MyIntProp.value = -2;
|
|
160
176
|
arrayParent._properties.MyCustomArray.set(0, newEntry2);
|
|
161
|
-
expect(arrayParent.resolvePath(
|
|
177
|
+
expect(arrayParent.resolvePath("MyCustomArray[0]")._properties.MyIntProp.value).to.equal(-2);
|
|
162
178
|
// Test path resolution after removal
|
|
163
179
|
arrayParent._properties.MyCustomArray.removeRange(0, 1);
|
|
164
|
-
expect(arrayParent.resolvePath(
|
|
165
|
-
expect(myTestArrayProp.getAbsolutePath()).to.equal(
|
|
180
|
+
expect(arrayParent.resolvePath("MyCustomArray[0]")._properties.MyIntProp.value).to.equal(0);
|
|
181
|
+
expect(myTestArrayProp.getAbsolutePath()).to.equal("/MyCustomArray[5]");
|
|
166
182
|
// Test path resolution after insertion via applyChangeSet
|
|
167
183
|
arrayParent._properties.MyCustomArray.applyChangeSet({
|
|
168
|
-
insert: [
|
|
169
|
-
|
|
184
|
+
insert: [
|
|
185
|
+
[
|
|
186
|
+
0,
|
|
187
|
+
[
|
|
188
|
+
{
|
|
189
|
+
typeid: "autodesk.tests:TestID-1.0.0",
|
|
170
190
|
Float32: {
|
|
171
191
|
MyFloatProp: 16,
|
|
172
192
|
},
|
|
173
193
|
Int32: {
|
|
174
194
|
MyIntProp: 17,
|
|
175
195
|
},
|
|
176
|
-
},
|
|
177
|
-
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
typeid: "autodesk.tests:TestID-1.0.0",
|
|
178
199
|
Float32: {
|
|
179
200
|
MyFloatProp: 18,
|
|
180
201
|
},
|
|
181
202
|
Int32: {
|
|
182
203
|
MyIntProp: 19,
|
|
183
204
|
},
|
|
184
|
-
}
|
|
205
|
+
},
|
|
206
|
+
],
|
|
207
|
+
],
|
|
185
208
|
],
|
|
186
209
|
});
|
|
187
|
-
expect(arrayParent.resolvePath(
|
|
188
|
-
expect(myTestArrayProp.getAbsolutePath()).to.equal(
|
|
189
|
-
var serialied = arrayParent._properties.MyCustomArray.serialize({
|
|
210
|
+
expect(arrayParent.resolvePath("MyCustomArray[0]")._properties.MyIntProp.value).to.equal(17);
|
|
211
|
+
expect(myTestArrayProp.getAbsolutePath()).to.equal("/MyCustomArray[7]");
|
|
212
|
+
var serialied = arrayParent._properties.MyCustomArray.serialize({ dirtyOnly: false });
|
|
190
213
|
// Test path resolution after removal
|
|
191
214
|
arrayParent._properties.MyCustomArray.applyChangeSet({
|
|
192
215
|
remove: [[0, 1]],
|
|
193
216
|
});
|
|
194
|
-
expect(arrayParent.resolvePath(
|
|
195
|
-
expect(myTestArrayProp.getAbsolutePath()).to.equal(
|
|
196
|
-
expect(arrayParent.resolvePath(
|
|
217
|
+
expect(arrayParent.resolvePath("MyCustomArray[0]")._properties.MyIntProp.value).to.equal(19);
|
|
218
|
+
expect(myTestArrayProp.getAbsolutePath()).to.equal("/MyCustomArray[6]");
|
|
219
|
+
expect(arrayParent.resolvePath("MyCustomArray[11]")).to.be.undefined;
|
|
197
220
|
// Test Path resolution after deserialize
|
|
198
221
|
arrayParent._properties.MyCustomArray.deserialize(serialied);
|
|
199
|
-
expect(arrayParent.resolvePath(
|
|
200
|
-
expect(arrayParent.resolvePath(
|
|
222
|
+
expect(arrayParent.resolvePath("MyCustomArray[0]")._properties.MyIntProp.value).to.equal(17);
|
|
223
|
+
expect(arrayParent.resolvePath("MyCustomArray[11]")).not.to.be.undefined;
|
|
201
224
|
arrayParent._properties.MyCustomArray.deserialize({});
|
|
202
|
-
expect(arrayParent.resolvePath(
|
|
203
|
-
expect(arrayParent.resolvePath(
|
|
225
|
+
expect(arrayParent.resolvePath("MyCustomArray[0]")).to.be.undefined;
|
|
226
|
+
expect(arrayParent.resolvePath("MyCustomArray[11]")).to.be.undefined;
|
|
204
227
|
// Try multiple levels
|
|
205
|
-
var leaf = PropertyFactory.create(
|
|
206
|
-
expect(leaf.resolvePath(
|
|
207
|
-
var array1 = PropertyFactory.create(
|
|
228
|
+
var leaf = PropertyFactory.create("NodeProperty");
|
|
229
|
+
expect(leaf.resolvePath("/")).to.equal(leaf);
|
|
230
|
+
var array1 = PropertyFactory.create("NodeProperty", "array");
|
|
208
231
|
array1.push(leaf);
|
|
209
|
-
expect(leaf.resolvePath(
|
|
210
|
-
var array2 = PropertyFactory.create(undefined,
|
|
232
|
+
expect(leaf.resolvePath("/")).to.equal(array1);
|
|
233
|
+
var array2 = PropertyFactory.create(undefined, "array");
|
|
211
234
|
array2.push(array1);
|
|
212
|
-
expect(leaf.resolvePath(
|
|
213
|
-
var array3 = PropertyFactory.create(undefined,
|
|
235
|
+
expect(leaf.resolvePath("/")).to.equal(array2);
|
|
236
|
+
var array3 = PropertyFactory.create(undefined, "array");
|
|
214
237
|
array3.push(array2);
|
|
215
|
-
expect(leaf.resolvePath(
|
|
238
|
+
expect(leaf.resolvePath("/")).to.equal(array3);
|
|
216
239
|
});
|
|
217
240
|
});
|
|
218
|
-
describe(
|
|
241
|
+
describe("Sized arrays", function () {
|
|
219
242
|
// Test fix for an issue where custom array templates with non-zero sizes
|
|
220
243
|
// resulted in the array initially containing objects without a parent.
|
|
221
|
-
it(
|
|
244
|
+
it("should work for custom array property templates with size specified", function () {
|
|
222
245
|
var TestString = {
|
|
223
|
-
typeid:
|
|
224
|
-
properties: [
|
|
225
|
-
{ id: 'data', typeid: 'String' },
|
|
226
|
-
],
|
|
246
|
+
typeid: "autodesk.test:test.string-1.0.0",
|
|
247
|
+
properties: [{ id: "data", typeid: "String" }],
|
|
227
248
|
};
|
|
228
249
|
var TestCustomArray = {
|
|
229
|
-
typeid:
|
|
250
|
+
typeid: "autodesk.test:test.customarray-1.0.0",
|
|
230
251
|
properties: [
|
|
231
|
-
{
|
|
252
|
+
{
|
|
253
|
+
id: "data",
|
|
254
|
+
typeid: "autodesk.test:test.string-1.0.0",
|
|
255
|
+
context: "array",
|
|
256
|
+
length: 3,
|
|
257
|
+
},
|
|
232
258
|
],
|
|
233
259
|
};
|
|
234
260
|
PropertyFactory._reregister(TestString);
|
|
235
261
|
PropertyFactory._reregister(TestCustomArray);
|
|
236
|
-
var sizedArray = PropertyFactory.create(
|
|
262
|
+
var sizedArray = PropertyFactory.create("autodesk.test:test.customarray-1.0.0");
|
|
237
263
|
// Prior to the fix to properly parent initial elements, clear() would result in an exception with
|
|
238
264
|
// the message 'Trying to remove a property from an array that has not the array as parent.'
|
|
239
265
|
var clearArrayFn = function () {
|
|
240
|
-
sizedArray.resolvePath(
|
|
266
|
+
sizedArray.resolvePath("data").clear();
|
|
241
267
|
};
|
|
242
268
|
expect(clearArrayFn).to.not.throw();
|
|
243
269
|
});
|
|
244
270
|
});
|
|
245
|
-
describe(
|
|
271
|
+
describe("Commit", function () {
|
|
246
272
|
/* it('should not appear in the changeset when committing a change on its sibling', function() {
|
|
247
273
|
// TODO: This test cannot be implemented in Fluid
|
|
248
274
|
let cm = new HFDM();
|
|
@@ -268,57 +294,57 @@ describe('CustomArrayProperty', function () {
|
|
|
268
294
|
return cm._commit(null, checkoutView);
|
|
269
295
|
});
|
|
270
296
|
}); */
|
|
271
|
-
describe(
|
|
272
|
-
it(
|
|
273
|
-
var nodeProp = PropertyFactory.create(
|
|
274
|
-
var arrayProp = PropertyFactory.create(
|
|
275
|
-
var testMap = PropertyFactory.create(
|
|
276
|
-
nodeProp.insert(
|
|
277
|
-
testMap.set(
|
|
297
|
+
describe("Nested collections", function () {
|
|
298
|
+
it("should support squashing of nested maps", function () {
|
|
299
|
+
var nodeProp = PropertyFactory.create("NodeProperty");
|
|
300
|
+
var arrayProp = PropertyFactory.create("array<BaseProperty>");
|
|
301
|
+
var testMap = PropertyFactory.create("map<Bool>");
|
|
302
|
+
nodeProp.insert("array", arrayProp);
|
|
303
|
+
testMap.set("test", true);
|
|
278
304
|
arrayProp.push(testMap);
|
|
279
|
-
var CS1 = nodeProp.serialize({
|
|
305
|
+
var CS1 = nodeProp.serialize({ dirtyOnly: false });
|
|
280
306
|
nodeProp.cleanDirty();
|
|
281
|
-
testMap.set(
|
|
282
|
-
var CS2 = nodeProp.serialize({
|
|
307
|
+
testMap.set("test", false);
|
|
308
|
+
var CS2 = nodeProp.serialize({ dirtyOnly: true });
|
|
283
309
|
var CS = new ChangeSet(CS1);
|
|
284
310
|
CS.applyChangeSet(new ChangeSet(CS2));
|
|
285
|
-
var arrayChanges = CS.getSerializedChangeSet().insert[
|
|
286
|
-
expect(arrayChanges.insert[0][1][0]).to.have.all.keys(
|
|
287
|
-
expect(arrayChanges.insert[0][1][0].insert[
|
|
311
|
+
var arrayChanges = CS.getSerializedChangeSet().insert["array<>"].array;
|
|
312
|
+
expect(arrayChanges.insert[0][1][0]).to.have.all.keys("insert", "typeid");
|
|
313
|
+
expect(arrayChanges.insert[0][1][0].insert["test"]).to.equal(false);
|
|
288
314
|
});
|
|
289
|
-
it(
|
|
290
|
-
var nodeProp = PropertyFactory.create(
|
|
291
|
-
var arrayProp = PropertyFactory.create(
|
|
292
|
-
var testMap = PropertyFactory.create(
|
|
293
|
-
nodeProp.insert(
|
|
294
|
-
testMap.set(
|
|
315
|
+
it("should support basic rebasing of nested maps", function () {
|
|
316
|
+
var nodeProp = PropertyFactory.create("NodeProperty");
|
|
317
|
+
var arrayProp = PropertyFactory.create("array<BaseProperty>");
|
|
318
|
+
var testMap = PropertyFactory.create("map<Bool>");
|
|
319
|
+
nodeProp.insert("array", arrayProp);
|
|
320
|
+
testMap.set("test", true);
|
|
295
321
|
arrayProp.push(testMap);
|
|
296
322
|
nodeProp.cleanDirty();
|
|
297
|
-
testMap.set(
|
|
298
|
-
var CS1 = nodeProp.serialize({
|
|
323
|
+
testMap.set("test", false);
|
|
324
|
+
var CS1 = nodeProp.serialize({ dirtyOnly: true });
|
|
299
325
|
var CS2 = deepCopy(CS1);
|
|
300
326
|
var CS = new ChangeSet(CS1);
|
|
301
327
|
var conflicts = [];
|
|
302
328
|
CS._rebaseChangeSet(CS2, conflicts);
|
|
303
329
|
expect(conflicts.length).to.equal(1);
|
|
304
330
|
expect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);
|
|
305
|
-
expect(conflicts[0].path).to.be.equal(
|
|
331
|
+
expect(conflicts[0].path).to.be.equal("array[0][test]");
|
|
306
332
|
});
|
|
307
|
-
it(
|
|
308
|
-
var testArray = PropertyFactory.create(
|
|
309
|
-
testArray.push(PropertyFactory.create(
|
|
310
|
-
var serialized = testArray.serialize({
|
|
311
|
-
var testArray2 = PropertyFactory.create(
|
|
333
|
+
it("should be deserializable", function () {
|
|
334
|
+
var testArray = PropertyFactory.create("array<>");
|
|
335
|
+
testArray.push(PropertyFactory.create("array<>"));
|
|
336
|
+
var serialized = testArray.serialize({ dirtyOnly: false });
|
|
337
|
+
var testArray2 = PropertyFactory.create("array<>");
|
|
312
338
|
testArray2.deserialize(serialized);
|
|
313
|
-
expect(testArray2.serialize({
|
|
339
|
+
expect(testArray2.serialize({ dirtyOnly: false })).to.deep.equal(testArray.serialize({ dirtyOnly: false }));
|
|
314
340
|
});
|
|
315
341
|
});
|
|
316
|
-
describe(
|
|
342
|
+
describe("deserialize", function () {
|
|
317
343
|
// Returns a sequence of random NamedProperties
|
|
318
344
|
var createRandomEntries = function (in_count) {
|
|
319
345
|
return _.map(_.range(in_count), function () {
|
|
320
|
-
var property = PropertyFactory.create(
|
|
321
|
-
property._properties.stringProperty.value =
|
|
346
|
+
var property = PropertyFactory.create("autodesk.tests:Array.NamedPropertyWithString-1.0.0");
|
|
347
|
+
property._properties.stringProperty.value = "initial";
|
|
322
348
|
return property;
|
|
323
349
|
});
|
|
324
350
|
};
|
|
@@ -326,12 +352,13 @@ describe('CustomArrayProperty', function () {
|
|
|
326
352
|
// here since we want to test that function below and don't want
|
|
327
353
|
// an error here to affect the comparison)
|
|
328
354
|
var manuallyCopyArray = function (arrayProperty) {
|
|
329
|
-
var copiedArray = PropertyFactory.create(
|
|
355
|
+
var copiedArray = PropertyFactory.create("autodesk.tests:Array.NamedPropertyWithString-1.0.0", "array");
|
|
330
356
|
var copiedEntries = _.map(arrayProperty.getEntriesReadOnly(), function (entry) {
|
|
331
357
|
// Create a named property with the same guid
|
|
332
|
-
var newNode = PropertyFactory.create(
|
|
358
|
+
var newNode = PropertyFactory.create("autodesk.tests:Array.NamedPropertyWithString-1.0.0");
|
|
333
359
|
newNode._properties.guid.value = entry.getGuid();
|
|
334
|
-
newNode._properties.stringProperty.value =
|
|
360
|
+
newNode._properties.stringProperty.value =
|
|
361
|
+
entry._properties.stringProperty.value;
|
|
335
362
|
return newNode;
|
|
336
363
|
});
|
|
337
364
|
copiedArray.insertRange(0, copiedEntries);
|
|
@@ -340,7 +367,7 @@ describe('CustomArrayProperty', function () {
|
|
|
340
367
|
// Prepare the initial state
|
|
341
368
|
var initializeArrayForComparison = function (in_count) {
|
|
342
369
|
// Create an array with named properties
|
|
343
|
-
var arrayProperty = PropertyFactory.create(
|
|
370
|
+
var arrayProperty = PropertyFactory.create("NamedProperty", "array");
|
|
344
371
|
var entries = createRandomEntries(in_count);
|
|
345
372
|
arrayProperty.insertRange(0, entries);
|
|
346
373
|
var copiedArray = manuallyCopyArray(arrayProperty);
|
|
@@ -355,12 +382,12 @@ describe('CustomArrayProperty', function () {
|
|
|
355
382
|
var copy2 = manuallyCopyArray(in_testArray.copy);
|
|
356
383
|
// deserialize the changes into the copied array property
|
|
357
384
|
in_testArray.copy.cleanDirty();
|
|
358
|
-
var deserialized = in_testArray.copy.deserialize(in_testArray.original.serialize({
|
|
359
|
-
expect(in_testArray.copy.serialize({
|
|
360
|
-
expect(deserialized).to.deep.equal(in_testArray.copy.serialize({
|
|
385
|
+
var deserialized = in_testArray.copy.deserialize(in_testArray.original.serialize({ dirtyOnly: false }));
|
|
386
|
+
expect(in_testArray.copy.serialize({ dirtyOnly: false })).to.deep.equal(in_testArray.original.serialize({ dirtyOnly: false }));
|
|
387
|
+
expect(deserialized).to.deep.equal(in_testArray.copy.serialize({ dirtyOnly: true }));
|
|
361
388
|
// Make sure the returned ChangeSet is correct
|
|
362
389
|
copy2.applyChangeSet(deserialized);
|
|
363
|
-
expect(copy2.serialize({
|
|
390
|
+
expect(copy2.serialize({ dirtyOnly: false })).to.deep.equal(in_testArray.original.serialize({ dirtyOnly: false }));
|
|
364
391
|
// Count insert, modify and remove operations
|
|
365
392
|
var insertedCount = _.reduce(deserialized.insert, function (last, insertedRange) {
|
|
366
393
|
return last + insertedRange[1].length;
|
|
@@ -381,7 +408,7 @@ describe('CustomArrayProperty', function () {
|
|
|
381
408
|
modifiedRanges: deserialized.modify ? deserialized.modify.length : 0,
|
|
382
409
|
};
|
|
383
410
|
};
|
|
384
|
-
it(
|
|
411
|
+
it("should report an empty ChangeSet for deserialize without changes", function () {
|
|
385
412
|
var testArray = initializeArrayForComparison(50);
|
|
386
413
|
// Check the returned ChangeSet
|
|
387
414
|
var changed = countChanges(testArray);
|
|
@@ -395,7 +422,7 @@ describe('CustomArrayProperty', function () {
|
|
|
395
422
|
modifiedRanges: 0,
|
|
396
423
|
});
|
|
397
424
|
});
|
|
398
|
-
it(
|
|
425
|
+
it("should report an empty ChangeSet for a length 0 array", function () {
|
|
399
426
|
var testArray = initializeArrayForComparison(0);
|
|
400
427
|
// Check the returned ChangeSet
|
|
401
428
|
var changed = countChanges(testArray);
|
|
@@ -409,7 +436,7 @@ describe('CustomArrayProperty', function () {
|
|
|
409
436
|
modifiedRanges: 0,
|
|
410
437
|
});
|
|
411
438
|
});
|
|
412
|
-
it(
|
|
439
|
+
it("should report a compact ChangeSet for simple move in an array of NamedProperties", function () {
|
|
413
440
|
var testArray = initializeArrayForComparison(50);
|
|
414
441
|
// Move a segment in the array
|
|
415
442
|
var entries = [
|
|
@@ -431,7 +458,7 @@ describe('CustomArrayProperty', function () {
|
|
|
431
458
|
modifiedRanges: 0,
|
|
432
459
|
});
|
|
433
460
|
});
|
|
434
|
-
it(
|
|
461
|
+
it("should report a compact ChangeSet for simple inserts in an array of NamedProperties", function () {
|
|
435
462
|
var testArray = initializeArrayForComparison(50);
|
|
436
463
|
testArray.original.insertRange(0, createRandomEntries(5));
|
|
437
464
|
testArray.original.insertRange(25, createRandomEntries(5));
|
|
@@ -447,7 +474,7 @@ describe('CustomArrayProperty', function () {
|
|
|
447
474
|
modifiedRanges: 0,
|
|
448
475
|
});
|
|
449
476
|
});
|
|
450
|
-
it(
|
|
477
|
+
it("should report a compact ChangeSet for simple removes in an array of NamedProperties", function () {
|
|
451
478
|
var testArray = initializeArrayForComparison(50);
|
|
452
479
|
testArray.original.removeRange(0, 5);
|
|
453
480
|
testArray.original.removeRange(15, 5);
|
|
@@ -463,7 +490,7 @@ describe('CustomArrayProperty', function () {
|
|
|
463
490
|
modifiedRanges: 0,
|
|
464
491
|
});
|
|
465
492
|
});
|
|
466
|
-
it(
|
|
493
|
+
it("should report a compact ChangeSet for simple replaces in an array of NamedProperties", function () {
|
|
467
494
|
var testArray = initializeArrayForComparison(50);
|
|
468
495
|
testArray.original.removeRange(0, 5);
|
|
469
496
|
testArray.original.insertRange(0, createRandomEntries(5));
|
|
@@ -482,14 +509,14 @@ describe('CustomArrayProperty', function () {
|
|
|
482
509
|
modifiedRanges: 0,
|
|
483
510
|
});
|
|
484
511
|
});
|
|
485
|
-
it(
|
|
512
|
+
it("should report a compact ChangeSet for modifies after inserts and removes", function () {
|
|
486
513
|
var testArray = initializeArrayForComparison(50);
|
|
487
514
|
testArray.original.removeRange(5, 5);
|
|
488
|
-
testArray.original.get(7)._properties.stringProperty.value =
|
|
515
|
+
testArray.original.get(7)._properties.stringProperty.value = "NewValue1";
|
|
489
516
|
testArray.original.insertRange(10, createRandomEntries(5));
|
|
490
|
-
testArray.original.get(20)._properties.stringProperty.value =
|
|
491
|
-
testArray.original.get(21)._properties.stringProperty.value =
|
|
492
|
-
testArray.original.get(22)._properties.stringProperty.value =
|
|
517
|
+
testArray.original.get(20)._properties.stringProperty.value = "NewValue2";
|
|
518
|
+
testArray.original.get(21)._properties.stringProperty.value = "NewValue3";
|
|
519
|
+
testArray.original.get(22)._properties.stringProperty.value = "NewValue4";
|
|
493
520
|
var changed = countChanges(testArray);
|
|
494
521
|
expect(changed).to.deep.equal({
|
|
495
522
|
insertedCount: 5,
|
|
@@ -501,8 +528,8 @@ describe('CustomArrayProperty', function () {
|
|
|
501
528
|
modifiedRanges: 2,
|
|
502
529
|
});
|
|
503
530
|
});
|
|
504
|
-
it(
|
|
505
|
-
var generator = new DeterministicRandomGenerator(
|
|
531
|
+
it("should report a compact ChangeSet for a randomized array of NamedProperties", function () {
|
|
532
|
+
var generator = new DeterministicRandomGenerator("931cff4d-392f-2f41-5c52-2e17965270dc");
|
|
506
533
|
this.timeout(90000);
|
|
507
534
|
for (var i = 0; i < 20; i++) {
|
|
508
535
|
var numInitialEntries = generator.irandom(300);
|
|
@@ -534,13 +561,13 @@ describe('CustomArrayProperty', function () {
|
|
|
534
561
|
var rangeStart = generator.irandom(testArray.original.length);
|
|
535
562
|
var rangeLength = generator.irandom(testArray.original.length - rangeStart);
|
|
536
563
|
for (var j = rangeStart; j < rangeStart + rangeLength; j++) {
|
|
537
|
-
testArray.original.get(j)._properties.stringProperty.value +=
|
|
564
|
+
testArray.original.get(j)._properties.stringProperty.value += "modified";
|
|
538
565
|
}
|
|
539
566
|
modifiedEntries += rangeLength;
|
|
540
567
|
}
|
|
541
568
|
break;
|
|
542
569
|
default:
|
|
543
|
-
throw new Error(
|
|
570
|
+
throw new Error("Should never happen");
|
|
544
571
|
}
|
|
545
572
|
}
|
|
546
573
|
// Check whether the reported changes are as compact as the modifications
|