@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reversibleChangeset.spec.js","sourceRoot":"","sources":["../../src/test/reversibleChangeset.spec.js"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* globals expect */\n/**\n * @fileoverview In this file, we will test the functions of the property factory.\n */\nconst _ = require('lodash');\nconst { ChangeSet } = require('@fluid-experimental/property-changeset');\nconst { Int64, Uint64 } = require('@fluid-experimental/property-common');\nconst { PropertyFactory } = require('..');\nconst deepCopy = _.cloneDeep;\n\ndescribe('Reversible ChangeSets', function() {\n var testRevAndInvCS = function(initialProperty, modificationFunction,\n expectedRevCS, expectedAfterCS, expectedInverseCS) {\n var initialChangeSet = new ChangeSet(initialProperty._serialize(false));\n initialChangeSet.setIsNormalized(true);\n var initialChangeSetBackup = deepCopy(initialChangeSet.getSerializedChangeSet());\n initialProperty.cleanDirty();\n\n var initialPropertyClone = initialProperty.clone();\n var initialPropertyBackup = initialProperty.clone();\n\n modificationFunction(initialProperty);\n\n var cs2 = new ChangeSet(initialProperty._serialize(true));\n\n var cs2Rev = cs2.clone();\n\n cs2Rev._stripReversibleChangeSet();\n expect(cs2.getSerializedChangeSet()).to.deep.equal(cs2Rev.getSerializedChangeSet());\n\n cs2Rev._toReversibleChangeSet(initialChangeSet.getSerializedChangeSet());\n\n var cs2Strip = cs2Rev.clone();\n cs2Strip._stripReversibleChangeSet();\n expect(cs2.getSerializedChangeSet()).to.deep.equal(cs2Strip.getSerializedChangeSet());\n\n cs2._toReversibleChangeSet(initialChangeSet.getSerializedChangeSet());\n var csR = cs2.clone();\n csR._toReversibleChangeSet(initialChangeSet.getSerializedChangeSet());\n\n if (expectedRevCS) {\n expect(csR.getSerializedChangeSet()).to.deep.equal(expectedRevCS);\n }\n\n // now apply cs2 on the initial changeset\n initialChangeSet.applyChangeSet(cs2);\n if (expectedAfterCS) {\n expect(initialChangeSet.getSerializedChangeSet()).to.deep.equal(expectedAfterCS);\n }\n // now apply cs2 on the initial property\n initialPropertyClone.applyChangeSet(cs2.getSerializedChangeSet());\n if (expectedAfterCS) {\n expect(initialPropertyClone._serialize(false)).to.deep.equal(initialProperty._serialize(false));\n }\n // now inverse the changeset\n var inverseCS = cs2.clone();\n inverseCS.toInverseChangeSet();\n if (expectedInverseCS) {\n expect(inverseCS.getSerializedChangeSet()).to.deep.equal(expectedInverseCS);\n }\n // applying the inverse change should get us back to the initial state\n // apply on changeset\n initialChangeSet.applyChangeSet(inverseCS);\n expect(initialChangeSet.getSerializedChangeSet()).to.deep.equal(initialChangeSetBackup);\n // apply on properties\n initialPropertyClone.applyChangeSet(inverseCS.getSerializedChangeSet());\n expect(initialPropertyClone._serialize(false)).to.deep.equal(initialPropertyBackup._serialize(false));\n };\n\n before(function() {\n var TaskSubjectParentTemplate = {\n typeid: 'autodesk.tests:ChangeSetApplyAfterTask.parentTemplate-1.0.0',\n properties: [\n { id: 'directMember', typeid: 'autodesk.tests:ChangeSetApplyAfterTask.memberTemplate-1.0.0' },\n {\n id: 'nested', properties: [\n { id: 'member', typeid: 'autodesk.tests:ChangeSetApplyAfterTask.nestedTemplate-1.0.0' },\n ],\n },\n ],\n };\n var TaskSubjectMemberTemplate = {\n typeid: 'autodesk.tests:ChangeSetApplyAfterTask.memberTemplate-1.0.0',\n properties: [\n { id: 'progress', typeid: 'Uint32' },\n { id: 'timeRemaining', typeid: 'Uint32' },\n ],\n };\n\n var TaskSubjectTestTemplate = {\n typeid: 'autodesk.tests:ChangeSetApplyAfterTask.nodeTemplate-1.0.0',\n properties: [\n { id: 'result', typeid: 'NodeProperty' },\n { id: 'integer', typeid: 'Uint32' },\n ],\n };\n\n // Register the templates from the discussion document\n var Vec3Template = {\n typeid: 'autodesk.test:vector3-1.0.0',\n properties: [\n { id: 'x', typeid: 'Float32' },\n { id: 'y', typeid: 'Float32' },\n { id: 'z', typeid: 'Float32' },\n ],\n };\n\n var Point2DTemplate = {\n typeid: 'autodesk.test:point2d-1.0.0',\n properties: [\n {\n id: 'position', properties: [\n { id: 'x', typeid: 'Float32' },\n { id: 'y', typeid: 'Float32' },\n ],\n },\n { id: 'normal', typeid: 'autodesk.test:vector3-1.0.0' },\n { id: 'neighbours', typeid: 'autodesk.test:vector3-1.0.0', context: 'map' },\n { id: 'temperature', typeid: 'Float32' },\n ],\n };\n\n var TestArrayFloat32 = {\n typeid: 'autodesk.test:test.arrayfloat32-1.0.0',\n properties: [\n { id: 'data', typeid: 'Float32', context: 'array' },\n ],\n };\n\n var SimpleStringTestPropertyTemplate = {\n typeid: 'autodesk.tests:DataStringTestProperty-1.0.0',\n properties: [\n { id: 'data', typeid: 'String' },\n ],\n };\n\n var SimpleRefTestPropertyTemplate = {\n typeid: 'autodesk.tests:DataRefTestProperty-1.0.0',\n properties: [\n { id: 'data', typeid: 'Reference' },\n ],\n };\n\n var SimpleMapTestPropertyTemplate = {\n typeid: 'autodesk.tests:MapTestPropertyID-1.0.0',\n properties: [\n { id: 'data', typeid: 'Float32', context: 'map' },\n ],\n };\n\n var TestPropertyTemplate = {\n typeid: 'autodesk.tests:MapTestNamedPropertyID-1.0.0',\n inherits: ['NamedProperty'],\n properties: [\n { id: 'stringProperty', typeid: 'String' },\n { id: 'stringProperty2', typeid: 'String' },\n { id: 'map', context: 'map', typeid: 'NamedProperty' },\n ],\n };\n var AnonymousTestPropertyTemplate = {\n typeid: 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0',\n properties: [\n { id: 'stringProperty', typeid: 'String' },\n ],\n };\n\n var CuststomArrayTemplate = {\n typeid: 'autodesk.tests:CustomArrayChangesetTestID-1.0.0',\n properties: [\n { id: 'data', typeid: 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0', context: 'array' },\n ],\n };\n\n var TestEnumTemplate = {\n typeid: 'autodesk.core:UnitsEnum-1.0.0',\n inherits: 'Enum',\n annotation: { description: 'The metric units' },\n properties: [\n { id: 'm', value: 1, annotation: { description: 'meter' } },\n { id: 'cm', value: 2, annotation: { description: 'centimeter' } },\n { id: 'mm', value: 3, annotation: { description: 'millimeter' } },\n ],\n };\n PropertyFactory._reregister(TestEnumTemplate);\n\n var TestBaseContainingEnumTemplate = {\n typeid: 'autodesk.core:CustomWithEnumID-1.0.0',\n properties: [{\n id: 'data', typeid: 'autodesk.core:UnitsEnum-1.0.0',\n }],\n };\n\n var TestInheritsNodePropertyObject = {\n inherits: ['NodeProperty'],\n typeid: 'autodesk.tests:SimpleInheritsNodeProperty-1.0.0',\n };\n\n PropertyFactory._reregister(TestInheritsNodePropertyObject);\n PropertyFactory._reregister(TestEnumTemplate);\n PropertyFactory._reregister(TestBaseContainingEnumTemplate);\n\n PropertyFactory._reregister(CuststomArrayTemplate);\n PropertyFactory._reregister(TestPropertyTemplate);\n PropertyFactory._reregister(AnonymousTestPropertyTemplate);\n\n PropertyFactory._reregister(SimpleMapTestPropertyTemplate);\n PropertyFactory._reregister(SimpleStringTestPropertyTemplate);\n PropertyFactory._reregister(SimpleRefTestPropertyTemplate);\n PropertyFactory._reregister(Vec3Template);\n PropertyFactory._reregister(Point2DTemplate);\n PropertyFactory._reregister(TaskSubjectParentTemplate);\n PropertyFactory._reregister(TaskSubjectMemberTemplate);\n PropertyFactory._reregister(TaskSubjectTestTemplate);\n PropertyFactory._reregister(TestArrayFloat32);\n });\n\n describe('Make inversible, apply and reverse for primitive properties.', function() {\n it('should work for modifying Int8', function() {\n var prop = PropertyFactory.create('Int8');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Uint8', function() {\n var prop = PropertyFactory.create('Uint8');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Int16', function() {\n var prop = PropertyFactory.create('Int16');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Uint16', function() {\n var prop = PropertyFactory.create('Uint16');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Int32', function() {\n var prop = PropertyFactory.create('Int32');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Uint32', function() {\n var prop = PropertyFactory.create('Uint32');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(10); },\n { 'oldValue': 0, 'value': 10 },\n 10,\n { 'oldValue': 10, 'value': 0 });\n });\n it('should work for modifying Int64', function() {\n var prop = PropertyFactory.create('Int64');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(new Int64(10, 10)); },\n { 'oldValue': [0, 0], 'value': [10, 10] },\n [10, 10],\n { 'oldValue': [10, 10], 'value': [0, 0] });\n });\n it('should work for modifying Uint64', function() {\n var prop = PropertyFactory.create('Uint64');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(new Uint64(10, 10)); },\n { 'oldValue': [0, 0], 'value': [10, 10] },\n [10, 10],\n { 'oldValue': [10, 10], 'value': [0, 0] });\n });\n it('should work for modifying Float32', function() {\n var prop = PropertyFactory.create('Float32');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(0.5); },\n { 'oldValue': 0, 'value': 0.5 },\n 0.5,\n { 'oldValue': 0.5, 'value': 0 });\n });\n it('should work for modifying Float64', function() {\n var prop = PropertyFactory.create('Float64');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(0.5); },\n { 'oldValue': 0, 'value': 0.5 },\n 0.5,\n { 'oldValue': 0.5, 'value': 0 });\n });\n it('should work for modifying Bool', function() {\n var prop = PropertyFactory.create('Bool');\n testRevAndInvCS(\n prop,\n function() { prop.setValue(true); },\n { 'oldValue': false, 'value': true },\n true,\n { 'oldValue': true, 'value': false });\n });\n // These tests have been disabled, since the interface of\n // the ChangeSet class is ambiguous when inserting a string\n it.skip('@bugfix should work for modifying String', function() {\n var prop = PropertyFactory.create('String');\n testRevAndInvCS(\n prop,\n function() { prop.setValue('test'); },\n { 'oldValue': '', 'value': 'test' },\n 'test',\n { 'oldValue': 'test', 'value': '' });\n });\n // These tests have been disabled, since the interface of\n // the ChangeSet class is ambiguous when inserting a string\n it.skip('@bugfix should work for modifying Reference', function() {\n var prop = PropertyFactory.create('Reference');\n testRevAndInvCS(\n prop,\n function() { prop.setValue('/'); },\n { 'oldValue': '', 'value': '/' },\n '/',\n { 'oldValue': '/', 'value': '' });\n });\n });\n\n describe('Make inversible, apply and reverse for primitive properties in a NodeProperty.', function() {\n it('should work for modifying Int8', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Int8');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(10); },\n { 'modify': { 'Int8': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Int8': { 'prop': 10 } } },\n { 'modify': { 'Int8': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Uint8', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Uint8');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(10); },\n { 'modify': { 'Uint8': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Uint8': { 'prop': 10 } } },\n { 'modify': { 'Uint8': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Int16', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Int16');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(10); },\n { 'modify': { 'Int16': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Int16': { 'prop': 10 } } },\n { 'modify': { 'Int16': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Uint16', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Uint16');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(10); },\n { 'modify': { 'Uint16': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Uint16': { 'prop': 10 } } },\n { 'modify': { 'Uint16': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Int32', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Int32');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(10); },\n { 'modify': { 'Int32': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Int32': { 'prop': 10 } } },\n { 'modify': { 'Int32': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Uint32', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Uint32');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(10); },\n { 'modify': { 'Uint32': { 'prop': { 'oldValue': 0, 'value': 10 } } } },\n { 'insert': { 'Uint32': { 'prop': 10 } } },\n { 'modify': { 'Uint32': { 'prop': { 'oldValue': 10, 'value': 0 } } } });\n });\n it('should work for modifying Int64', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Int64');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(new Int64(10, 10)); },\n { 'modify': { 'Int64': { 'prop': { 'oldValue': [0, 0], 'value': [10, 10] } } } },\n { 'insert': { 'Int64': { 'prop': [10, 10] } } },\n { 'modify': { 'Int64': { 'prop': { 'oldValue': [10, 10], 'value': [0, 0] } } } });\n });\n it('should work for modifying Uint64', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Uint64');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(new Uint64(10, 10)); },\n { 'modify': { 'Uint64': { 'prop': { 'oldValue': [0, 0], 'value': [10, 10] } } } },\n { 'insert': { 'Uint64': { 'prop': [10, 10] } } },\n { 'modify': { 'Uint64': { 'prop': { 'oldValue': [10, 10], 'value': [0, 0] } } } });\n });\n it('should work for modifying Float32', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Float32');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(0.5); },\n { 'modify': { 'Float32': { 'prop': { 'oldValue': 0, 'value': 0.5 } } } },\n { 'insert': { 'Float32': { 'prop': 0.5 } } },\n { 'modify': { 'Float32': { 'prop': { 'oldValue': 0.5, 'value': 0 } } } });\n });\n it('should work for modifying Float64', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Float64');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(0.5); },\n { 'modify': { 'Float64': { 'prop': { 'oldValue': 0, 'value': 0.5 } } } },\n { 'insert': { 'Float64': { 'prop': 0.5 } } },\n { 'modify': { 'Float64': { 'prop': { 'oldValue': 0.5, 'value': 0 } } } });\n });\n it('should work for modifying Bool', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Bool');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue(true); },\n { 'modify': { 'Bool': { 'prop': { 'oldValue': false, 'value': true } } } },\n { 'insert': { 'Bool': { 'prop': true } } },\n { 'modify': { 'Bool': { 'prop': { 'oldValue': true, 'value': false } } } });\n });\n it('should work for modifying String', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('String');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue('test'); },\n { 'modify': { 'String': { 'prop': { 'oldValue': '', 'value': 'test' } } } },\n { 'insert': { 'String': { 'prop': 'test' } } },\n { 'modify': { 'String': { 'prop': { 'oldValue': 'test', 'value': '' } } } });\n });\n it('should work for modifying Reference', function() {\n var node = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('Reference');\n node.insert('prop', prop);\n testRevAndInvCS(\n node,\n function() { prop.setValue('/'); },\n { 'modify': { 'Reference': { 'prop': { 'oldValue': '', 'value': '/' } } } },\n { 'insert': { 'Reference': { 'prop': '/' } } },\n { 'modify': { 'Reference': { 'prop': { 'oldValue': '/', 'value': '' } } } });\n });\n });\n\n describe('apply reversible ChangeSets on all properties', function() {\n it('should work for primitive properties', function() {\n var prop = PropertyFactory.create('autodesk.test:vector3-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.test:vector3-1.0.0');\n prop._properties.x.value = 2;\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n it('should work for string properties', function() {\n var prop = PropertyFactory.create('autodesk.tests:DataStringTestProperty-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.tests:DataStringTestProperty-1.0.0');\n prop._properties.data.value = 'A';\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n it('should work for reference properties', function() {\n var root = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('autodesk.tests:DataRefTestProperty-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.tests:DataRefTestProperty-1.0.0');\n var target = PropertyFactory.create('String');\n root.insert('target', target);\n root.insert('reference', prop);\n root.insert('referenceCopy', propCopy);\n prop._properties.data.set(target);\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n it('should work for enum properties', function() {\n var prop = PropertyFactory.create('autodesk.core:CustomWithEnumID-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.core:CustomWithEnumID-1.0.0');\n prop._properties.data.value = 'cm';\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n it('should work for indexed collections of complex types', function() {\n var prop = PropertyFactory.create('autodesk.tests:MapTestNamedPropertyID-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.tests:MapTestNamedPropertyID-1.0.0');\n\n var A = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var B = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var C = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n prop._properties.map.insert('A', A);\n prop._properties.map.insert('B', B);\n prop._properties.map.insert('C', C);\n propCopy.deserialize(prop._serialize());\n\n prop.cleanDirty();\n propCopy.cleanDirty();\n\n prop._properties.map.remove('B');\n prop._properties.map.get('A')._properties.stringProperty.value = 'hello';\n\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n it('should work for indexed collections of primitive types', function() {\n var prop = PropertyFactory.create('autodesk.tests:MapTestPropertyID-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.tests:MapTestPropertyID-1.0.0');\n\n prop._properties.data.insert('A', 1);\n prop._properties.data.insert('B', 2);\n prop._properties.data.insert('C', 3);\n propCopy.deserialize(prop._serialize());\n\n prop.cleanDirty();\n propCopy.cleanDirty();\n\n prop._properties.data.remove('B');\n prop._properties.data.set('C', 99);\n\n var changeSet = new ChangeSet(prop._serialize(true));\n changeSet._toReversibleChangeSet(propCopy._serialize(false));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop._serialize()).to.deep.equal(propCopy._serialize());\n expect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n });\n\n it('should work for custom array properties', function() {\n var prop = PropertyFactory.create('autodesk.tests:CustomArrayChangesetTestID-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.tests:CustomArrayChangesetTestID-1.0.0');\n\n var A = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var B = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var C = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n prop._properties.data.insertRange(0, [A, B, C]);\n propCopy.deserialize(prop.serialize());\n\n prop.cleanDirty();\n propCopy.cleanDirty();\n\n prop._properties.data.get(2)._properties.stringProperty.value = 'hello';\n prop._properties.data.removeRange(1, 1);\n\n var changeSet = new ChangeSet(prop.serialize({ 'dirtyOnly': true }));\n var baseState = propCopy.serialize({ 'dirtyOnly': false });\n changeSet._toReversibleChangeSet(baseState);\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop.serialize()).to.deep.equal(propCopy.serialize());\n expect(prop.serialize({ 'dirtyOnly': true })).to.deep.equal(propCopy.serialize({ 'dirtyOnly': true }));\n });\n\n it('should work for primitive array properties', function() {\n var prop = PropertyFactory.create('autodesk.test:test.arrayfloat32-1.0.0');\n var propCopy = PropertyFactory.create('autodesk.test:test.arrayfloat32-1.0.0');\n prop._properties.data.insertRange(0, [10, 11, 12, 13, 14, 15, 16]);\n propCopy._properties.data.insertRange(0, [10, 11, 12, 13, 14, 15, 16]);\n\n prop.cleanDirty();\n propCopy.cleanDirty();\n\n prop._properties.data.setRange(4, [24, 25]);\n prop._properties.data.removeRange(1, 2);\n\n var changeSet = new ChangeSet(prop.serialize({ 'dirtyOnly': true }));\n changeSet._toReversibleChangeSet(propCopy.serialize({ 'dirtyOnly': false }));\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop.serialize()).to.deep.equal(propCopy.serialize());\n expect(prop.serialize({ 'dirtyOnly': true })).to.deep.equal(propCopy.serialize({ 'dirtyOnly': true }));\n });\n\n it('should work for node properties', function() {\n var prop = PropertyFactory.create('NodeProperty');\n var propCopy = PropertyFactory.create('NodeProperty');\n\n var A = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var B = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var C = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var D = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n\n prop.insert('A', A);\n prop.insert('B', B);\n prop.insert('C', C);\n prop.insert('D', D);\n\n var initialChangeset = prop.serialize({ 'dirtyOnly': false });\n propCopy.deserialize(initialChangeset);\n\n prop.cleanDirty();\n propCopy.cleanDirty();\n\n prop._properties.A.stringProperty.value = 'test';\n prop.remove('B');\n prop.remove('C');\n\n var changeSet = new ChangeSet(prop.serialize({ 'dirtyOnly': true }));\n changeSet._toReversibleChangeSet(initialChangeset);\n propCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(prop.serialize()).to.deep.equal(propCopy.serialize());\n expect(prop.serialize({ 'dirtyOnly': true })).to.deep.equal(propCopy.serialize({ 'dirtyOnly': true }));\n });\n\n it('should work for inherits node properties', function() {\n var root = PropertyFactory.create('NodeProperty');\n var prop = PropertyFactory.create('autodesk.tests:SimpleInheritsNodeProperty-1.0.0');\n root.insert('prop', prop);\n\n var rootCopy = PropertyFactory.create('NodeProperty');\n var propCopy = PropertyFactory.create('autodesk.tests:SimpleInheritsNodeProperty-1.0.0');\n rootCopy.insert('prop', propCopy);\n\n var A = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var B = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var C = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var D = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n\n prop.insert('A', A);\n prop.insert('B', B);\n prop.insert('C', C);\n prop.insert('D', D);\n\n var initialChangeset = root.serialize({ 'dirtyOnly': false });\n rootCopy.deserialize(initialChangeset);\n\n root.cleanDirty();\n rootCopy.cleanDirty();\n\n prop._properties.A.stringProperty.value = 'test';\n prop.remove('B');\n prop.remove('C');\n\n var changeSet = new ChangeSet(root.serialize({ 'dirtyOnly': true }));\n changeSet._toReversibleChangeSet(initialChangeset);\n rootCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n expect(root.serialize()).to.deep.equal(rootCopy.serialize());\n expect(root.serialize({ 'dirtyOnly': true })).to.deep.equal(rootCopy.serialize({ 'dirtyOnly': true }));\n });\n });\n\n describe('Apply with reversible ChangeSets', function() {\n var overlapApplyTest = function(in_type, in_inputArrayOperations1, in_inputArrayOperations2,\n in_outputArrayOperations) {\n var convertModificationSetToArray = function(in_modificationSet) {\n return in_modificationSet.map((x) => {\n return x[2] === undefined ?\n [x[0], x[1].split('')] :\n [x[0], x[1].split(''), x[2].split('')];\n });\n };\n\n var performApplyTest = function(in_typeid, inputArrayOperations1, inputArrayOperations2, outputArrayOperations) {\n var CS1 = new ChangeSet({ 'modify': { [in_typeid]: { 'arr': { [in_type]: inputArrayOperations1 } } } });\n var CS2 = { 'modify': { [in_typeid]: { 'arr': { [in_type]: inputArrayOperations2 } } } };\n var CS2_copy = deepCopy(CS2);\n CS1.applyChangeSet(CS2);\n\n // CS2 should be unchanged\n expect(CS2).to.deep.equal(CS2_copy);\n\n // CS2 should no longer contain the removal of A\n expect(CS1.getSerializedChangeSet()).to.deep.equal({\n 'modify': { [in_typeid]: { 'arr': { [in_type]: outputArrayOperations } } },\n });\n };\n\n it('on strings', function() {\n performApplyTest('String',\n deepCopy(in_inputArrayOperations1),\n in_inputArrayOperations2,\n in_outputArrayOperations);\n });\n\n it('on arrays', function() {\n performApplyTest('array<String>',\n convertModificationSetToArray(in_inputArrayOperations1),\n convertModificationSetToArray(in_inputArrayOperations2),\n convertModificationSetToArray(in_outputArrayOperations));\n });\n };\n\n describe('for overlapping modifies 1', function() {\n overlapApplyTest('modify',\n [[3, 'abc', '123']],\n [[3, 'def', 'abc']],\n [[3, 'def', '123']]);\n });\n\n describe('for overlapping modifies 2', function() {\n overlapApplyTest('modify',\n [[0, 'abc', '123']],\n [[2, 'def', 'c45']],\n [[0, 'abdef', '12345']]);\n });\n });\n\n describe('Rebase with reversible ChangeSets', function() {\n var overlapRebaseTest = function(in_type, in_inputArrayOperations1, in_inputArrayOperations2,\n in_outputArrayOperations, in_expectedConflicts) {\n var convertModificationSetToArray = function(in_modificationSet) {\n return in_modificationSet.map((x) => {\n return x[2] === undefined ?\n [x[0], x[1].split('')] :\n [x[0], x[1].split(''), x[2].split('')];\n });\n };\n\n var performRebaseTest = function(in_typeid, inputArrayOperations1, inputArrayOperations2, outputArrayOperations) {\n var conflicts = [];\n var CS1_initial = { 'modify': { [in_typeid]: { 'arr': { [in_type]: inputArrayOperations1 } } } };\n var CS1 = new ChangeSet(deepCopy(CS1_initial));\n var CS2 = { 'modify': { [in_typeid]: { 'arr': { [in_type]: inputArrayOperations2 } } } };\n CS1._rebaseChangeSet(CS2, conflicts);\n\n // Duplicated remove is not a conflict\n expect(conflicts.length).to.equal(in_expectedConflicts);\n\n // CS1 should be unchanged\n expect(CS1.getSerializedChangeSet()).to.deep.equal(CS1_initial);\n\n // CS2 should no longer contain the removal of A\n expect(CS2).to.deep.equal({ 'modify': { [in_typeid]: { 'arr': { [in_type]: outputArrayOperations } } } });\n };\n\n it('on strings', function() {\n performRebaseTest('String',\n in_inputArrayOperations1,\n in_inputArrayOperations2,\n in_outputArrayOperations);\n });\n\n it('on arrays', function() {\n performRebaseTest('array<String>',\n convertModificationSetToArray(in_inputArrayOperations1),\n convertModificationSetToArray(in_inputArrayOperations2),\n convertModificationSetToArray(in_outputArrayOperations));\n });\n };\n\n describe('for overlapping removes', function() {\n overlapRebaseTest('remove',\n [[0, '<A'], [4, '>']],\n [[1, 'ABC']],\n [[0, 'BC']],\n 0);\n });\n\n describe('for overlapping removes 2', function() {\n overlapRebaseTest('remove',\n [[2, 'C>']],\n [[0, 'ABC']],\n [[0, 'AB']],\n 0);\n });\n\n describe('for overlapping removes 3', function() {\n overlapRebaseTest('remove',\n [[2, 'CD>']],\n [[0, 'ABC'], [4, '>']],\n [[0, 'AB']],\n 0);\n });\n\n describe('for overlapping modifies', function() {\n overlapRebaseTest('modify',\n [[0, '<A', '..'], [4, '>', '.']],\n [[1, '123', '---']],\n [[1, '123', 'A--']],\n 1);\n });\n\n describe('for overlapping modifies 2', function() {\n overlapRebaseTest('modify',\n [[2, 'C>', '..']],\n [[0, '123', '---']],\n [[0, '123', '--C']],\n 1);\n });\n\n describe('for overlapping modifies 3', function() {\n overlapRebaseTest('modify',\n [[2, 'CD>', '..']],\n [[0, '123', '---'], [4, '45', '--']],\n [[0, '123', '--C'], [4, '45', '>-']],\n 2);\n });\n\n it('for array modify rebases', function() {\n var CS = new ChangeSet({\n 'array<Float32>': {\n 'elements': {\n 'modify': [\n [1, [1, 2, 3], [0, 1, 2]],\n ],\n },\n },\n });\n\n var rebasedCS = CS._rebaseChangeSet({\n 'array<Float32>': {\n 'elements': {\n 'modify': [\n [\n 0,\n [0, 1, 2, 3],\n [1, 2, 3, 4],\n ],\n ],\n },\n },\n }, []);\n expect(rebasedCS['array<Float32>'].elements.modify[0].length).to.equal(3);\n });\n });\n\n describe('applying reversible CS to primitive string types', function() {\n it('should work for strings', function() {\n var CS = new ChangeSet({ 'String': { 'test': { 'value': '10', 'oldValue': '9' } } });\n CS.applyChangeSet({ 'String': { 'test': { 'value': '8', 'oldValue': '10' } } });\n expect(CS.getSerializedChangeSet()).to.deep.equal({ 'String': { 'test': { 'value': '8', 'oldValue': '9' } } });\n });\n\n it('should work for strings', function() {\n var CS = new ChangeSet({ 'Float64': { 'test': { 'value': 10, 'oldValue': 9 } } });\n CS.applyChangeSet({ 'Float64': { 'test': { 'value': 8, 'oldValue': 10 } } });\n expect(CS.getSerializedChangeSet()).to.deep.equal({ 'Float64': { 'test': { 'value': 8, 'oldValue': 9 } } });\n });\n\n it('should work for bool', function() {\n // TODO: This should become a NOP\n var CS = new ChangeSet({ 'Bool': { 'test': { 'value': false, 'oldValue': true } } });\n CS.applyChangeSet({ 'Bool': { 'test': { 'value': true, 'oldValue': false } } });\n expect(CS.getSerializedChangeSet()).to.deep.equal({ 'Bool': { 'test': { 'value': true, 'oldValue': true } } });\n });\n\n it('should work for bool', function() {\n // TODO: This should become a NOP\n var CS = new ChangeSet({});\n CS.applyChangeSet({ 'Bool': { 'test': { 'value': true, 'oldValue': false } } });\n expect(CS.getSerializedChangeSet()).to.deep.equal({ 'Bool': { 'test': { 'value': true, 'oldValue': false } } });\n });\n });\n\n describe('_stripReversibleChangeSet should', function() {\n it('correctly handle removes at the root', function() {\n var CS = new ChangeSet({\n remove: {\n String: {\n testString: 'abcde',\n },\n },\n });\n CS._stripReversibleChangeSet();\n expect(CS.getSerializedChangeSet()).to.deep.equal({\n remove: ['testString'],\n });\n });\n it('ignore the root when passing it a flag', function() {\n var SCS = {\n remove: {\n String: {\n testString: 'abcde',\n },\n },\n };\n var CS = new ChangeSet(SCS);\n CS._stripReversibleChangeSet(true);\n expect(CS.getSerializedChangeSet()).to.deep.equal(SCS);\n });\n });\n\n describe('should return a minimal CS when squashing', function() {\n it('matching primitive type remove/insert combinations in a polymorphic indexed collection', function() {\n // These two operations should cancel out\n var CS1 = new ChangeSet({ remove: { String: { A: 'A' } } });\n var CS2 = new ChangeSet({ insert: { String: { A: 'A' } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({});\n });\n it('non matching primitive type remove/insert combinations in a polymorphic indexed collection', function() {\n // These two operations should result in a modify\n var CS1 = new ChangeSet({ remove: { String: { A: 'A' } } });\n var CS2 = new ChangeSet({ insert: { String: { A: 'B' } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({ modify: { String: { A: 'B' } } });\n });\n it('matching remove/insert combinations in a primitive type indexed collection', function() {\n // These two operations should cancel out\n var CS1 = new ChangeSet({ modify: { 'map<String>': { test: { remove: { A: 'A' } } } } });\n var CS2 = new ChangeSet({ modify: { 'map<String>': { test: { insert: { A: 'A' } } } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({});\n });\n it('non matching primitive type remove/insert combinations in a polymorphic indexed collection', function() {\n // These two operations should result in a modify\n var CS1 = new ChangeSet({ modify: { 'map<String>': { test: { remove: { A: 'A' } } } } });\n var CS2 = new ChangeSet({ modify: { 'map<String>': { test: { insert: { A: 'B' } } } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({ modify: { 'map<String>': { test: { modify: { A: 'B' } } } } });\n });\n it('matching complex type remove/insert combinations in a polymorphic indexed collection', function() {\n // These two operations should cancel out\n var CS1 = new ChangeSet({ remove: { 'RepositoryTest:Nametag-1.0.0': { name: 'A' } } });\n var CS2 = new ChangeSet({ insert: { 'RepositoryTest:Nametag-1.0.0': { name: 'A' } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({});\n });\n it('non matching complex type remove/insert combinations in a polymorphic indexed collection', function() {\n // TODO: How should we treat these operations? Should they be rewritten to a modify?\n var CS1 = new ChangeSet({ remove: { 'RepositoryTest:Nametag-1.0.0': { name: 'A' } } });\n var CS2 = new ChangeSet({ insert: { 'RepositoryTest:Nametag-1.0.0': { name: 'B' } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({\n remove: { 'RepositoryTest:Nametag-1.0.0': { name: 'A' } },\n insert: { 'RepositoryTest:Nametag-1.0.0': { name: 'B' } },\n });\n });\n\n it('matching primitive type remove/insert operations in primitive type arrays', function() {\n // These two operations should cancel out\n var CS1 = new ChangeSet({ modify: { 'array<String>': { test: { remove: [[0, ['A', 'B', 'C']]] } } } });\n var CS2 = new ChangeSet({ modify: { 'array<String>': { test: { insert: [[0, ['A', 'B', 'C']]] } } } });\n CS1.applyChangeSet(CS2);\n expect(CS1.getSerializedChangeSet()).to.deep.equal({});\n });\n });\n\n it('should work for primitive array properties', function() {\n var prop = PropertyFactory.create('autodesk.test:test.arrayfloat32-1.0.0');\n prop._properties.data.insertRange(0, [10, 11, 12, 13, 14, 15, 16]);\n testRevAndInvCS(\n prop,\n function(in_prop) {\n in_prop._properties.data.setRange(1, [21, 22]);\n in_prop._properties.data.removeRange(4, 3);\n in_prop._properties.data.insert(0, 9);\n },\n {\n 'array<Float32>': {\n 'data': {\n 'modify': [[1, [21, 22], [11, 12]]],\n 'remove': [[4, [14, 15, 16]]],\n 'insert': [[0, [9]]],\n },\n },\n },\n {\n 'array<Float32>': {\n 'data': {\n 'insert': [[0, [9, 10, 21, 22, 13]]],\n },\n },\n },\n {\n 'array<Float32>': {\n 'data': {\n 'modify': [[2, [11, 12], [21, 22]]],\n 'insert': [[5, [14, 15, 16]]],\n 'remove': [[0, [9]]],\n },\n },\n },\n );\n });\n\n it('should work for insertions into empty primitive array properties', function() {\n var prop = PropertyFactory.create('autodesk.test:test.arrayfloat32-1.0.0');\n testRevAndInvCS(\n prop,\n function(in_prop) {\n in_prop._properties.data.insertRange(0, [1, 2, 3]);\n },\n {\n 'array<Float32>': {\n 'data': {\n 'insert': [[0, [1, 2, 3]]],\n },\n },\n },\n {\n 'array<Float32>': {\n 'data': {\n 'insert': [[0, [1, 2, 3]]],\n },\n },\n },\n {\n 'array<Float32>': {\n 'data': {\n 'remove': [[0, [1, 2, 3]]],\n },\n },\n },\n );\n });\n\n it('should not crash with an empty input if it is not needed in the actual CS', function() {\n var initialCS = {\n 'NodeProperty': {\n insert: {\n NodeProperty: {\n test2: {},\n },\n },\n },\n };\n var CS = new ChangeSet(deepCopy(initialCS));\n CS._toReversibleChangeSet({});\n expect(CS.getSerializedChangeSet()).to.deep.equal(initialCS);\n });\n\n it('should work for inserts, even if the corresponding property is missing in the initial state', function() {\n // This test checks, whether changesets with insert work, even if the corresponding property is not present in the\n // initial changeset. Since the initial changeset is not needed for the insert, we don't need to throw an\n // error in that case. This type of situation can occur in the materialized history, if an insert happens right\n // at a chunk boundary.\n var initialCS = {\n 'NodeProperty': {\n 'test': {\n insert: {\n NodeProperty: {\n test2: {},\n },\n },\n },\n },\n };\n var CS = new ChangeSet(deepCopy(initialCS));\n CS._toReversibleChangeSet({});\n expect(CS.getSerializedChangeSet()).to.deep.equal(initialCS);\n });\n\n it('should work for simple primitive properties', function() {\n var cs = new ChangeSet({\n insert: {\n 'Float32': {\n 'myFloat': 23,\n },\n },\n });\n var cs2 = new ChangeSet({\n modify: {\n 'Float32': {\n 'myFloat': 42,\n },\n },\n });\n\n var cs2Rev = cs2.clone();\n\n cs2Rev._stripReversibleChangeSet();\n expect(cs2.getSerializedChangeSet()).to.deep.equal(cs2Rev.getSerializedChangeSet());\n\n cs2Rev._toReversibleChangeSet(cs.getSerializedChangeSet());\n\n var cs2Strip = cs2Rev.clone();\n cs2Strip._stripReversibleChangeSet();\n expect(cs2.getSerializedChangeSet()).to.deep.equal(cs2Strip.getSerializedChangeSet());\n\n expect(cs2Rev.getSerializedChangeSet()).to.deep.equal(\n { 'modify': { 'Float32': { 'myFloat': { 'value': 42, 'oldValue': 23 } } } });\n\n // forward and reverse:\n cs.applyChangeSet(cs2Rev);\n // cs now should be 42\n expect(cs.getSerializedChangeSet()).to.deep.equal({ 'insert': { 'Float32': { 'myFloat': 42 } } });\n\n var invCS = cs2Rev.clone();\n invCS.toInverseChangeSet();\n expect(invCS.getSerializedChangeSet()).to.deep.equal(\n { 'modify': { 'Float32': { 'myFloat': { 'value': 23, 'oldValue': 42 } } } });\n\n cs.applyChangeSet(invCS);\n // cs now should be 23\n expect(cs.getSerializedChangeSet()).to.deep.equal({ 'insert': { 'Float32': { 'myFloat': 23 } } });\n });\n\n it('should work for templated properties', function() {\n var prop = PropertyFactory.create('autodesk.test:point2d-1.0.0');\n testRevAndInvCS(\n prop,\n function(in_prop) {\n in_prop._properties.position.x.value = 2;\n in_prop._properties.normal.y.value = 4;\n in_prop._properties.temperature.value = 21;\n },\n {\n 'Float32': {\n 'position.x': { 'value': 2, 'oldValue': 0 },\n 'temperature': { 'value': 21, 'oldValue': 0 },\n },\n 'autodesk.test:vector3-1.0.0': {\n 'normal': { 'Float32': { 'y': { 'value': 4, 'oldValue': 0 } } },\n },\n },\n {\n 'Float32': {\n 'position.x': 2, 'position.y': 0, 'temperature': 21,\n },\n 'autodesk.test:vector3-1.0.0': {\n 'normal': { 'Float32': { 'x': 0, 'y': 4, 'z': 0 } },\n },\n 'map<autodesk.test:vector3-1.0.0>': { 'neighbours': {} },\n },\n {\n 'Float32': {\n 'position.x': { 'value': 0, 'oldValue': 2 },\n 'temperature': { 'value': 0, 'oldValue': 21 },\n },\n 'autodesk.test:vector3-1.0.0': {\n 'normal': { 'Float32': { 'y': { 'value': 0, 'oldValue': 4 } } },\n },\n },\n );\n });\n\n it('should work for string properties initialized by set', function() {\n var prop = PropertyFactory.create('autodesk.tests:DataStringTestProperty-1.0.0');\n prop._properties.data.value = 'Hello world';\n testRevAndInvCS(\n prop,\n function(in_prop) {\n in_prop._properties.data.setRange(1, 'aih');\n in_prop._properties.data.removeRange(6, 5);\n in_prop._properties.data.insertRange(0, 'Hi, ');\n },\n { 'String': { 'data': { 'modify': [[1, 'aih', 'ell']], 'remove': [[6, 'world']], 'insert': [[0, 'Hi, ']] } } },\n { 'String': { 'data': 'Hi, Haiho ' } },\n { 'String': { 'data': { 'modify': [[5, 'ell', 'aih']], 'remove': [[0, 'Hi, ']], 'insert': [[10, 'world']] } } },\n );\n });\n\n it('should work for string properties initialized by insert', function() {\n var prop = PropertyFactory.create('autodesk.tests:DataStringTestProperty-1.0.0');\n prop._properties.data.insert(0, 'Hello world');\n testRevAndInvCS(\n prop,\n function(in_prop) {\n in_prop._properties.data.setRange(1, 'aih');\n in_prop._properties.data.removeRange(6, 5);\n in_prop._properties.data.insertRange(0, 'Hi, ');\n },\n { 'String': { 'data': { 'modify': [[1, 'aih', 'ell']], 'remove': [[6, 'world']], 'insert': [[0, 'Hi, ']] } } },\n { 'String': { 'data': 'Hi, Haiho ' } },\n { 'String': { 'data': { 'modify': [[5, 'ell', 'aih']], 'remove': [[0, 'Hi, ']], 'insert': [[10, 'world']] } } },\n );\n });\n\n it('should work for primitive map properties', function() {\n var property = PropertyFactory.create('autodesk.tests:MapTestPropertyID-1.0.0');\n var prop = property._properties.data;\n prop.insert('A', 3);\n prop.insert('B', 4);\n prop.insert('C', 5);\n prop.insert('D', 6);\n testRevAndInvCS(\n property,\n function(myProp) {\n myProp._properties.data.set('A', 7);\n myProp._properties.data.remove('B');\n myProp._properties.data.remove('C');\n myProp._properties.data.set('D', 8);\n myProp._properties.data.insert('F', 9);\n },\n {\n 'map<Float32>': {\n 'data': {\n 'remove': { 'B': 4, 'C': 5 },\n 'modify': { 'A': { 'value': 7, 'oldValue': 3 }, 'D': { 'value': 8, 'oldValue': 6 } },\n 'insert': { 'F': 9 },\n },\n },\n },\n {\n 'map<Float32>': {\n 'data': {\n 'insert': { 'A': 7, 'D': 8, 'F': 9 },\n },\n },\n },\n {\n 'map<Float32>': {\n 'data': {\n 'modify': { 'A': { 'value': 3, 'oldValue': 7 }, 'D': { 'value': 6, 'oldValue': 8 } },\n 'insert': { 'B': 4, 'C': 5 },\n 'remove': { 'F': 9 },\n },\n },\n },\n );\n });\n\n it('should work for custom map properties', function() {\n var rootNode = PropertyFactory.create('autodesk.tests:MapTestNamedPropertyID-1.0.0');\n\n var A = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var B = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var C = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n var D = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n rootNode._properties.map.insert('A', A);\n rootNode._properties.map.insert('B', B);\n rootNode._properties.map.insert('C', C);\n rootNode._properties.map.insert('D', D);\n testRevAndInvCS(\n rootNode,\n function(myProp) {\n var F = PropertyFactory.create('autodesk.tests:AnonymousMapTestPropertyID-1.0.0');\n myProp._properties.map.remove('B');\n myProp._properties.map.remove('C');\n myProp._properties.map.insert('F', F);\n myProp._properties.map.get('A')._properties.stringProperty.value = 'hello';\n },\n {\n 'map<NamedProperty>': {\n 'map': {\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'F': { 'String': { 'stringProperty': '' } },\n },\n },\n 'remove': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'B': { 'String': { 'stringProperty': '' } }, 'C': { 'String': { 'stringProperty': '' } },\n },\n },\n 'modify': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': { 'String': { 'stringProperty': { 'value': 'hello', 'oldValue': '' } } },\n },\n },\n },\n },\n },\n undefined,\n {\n 'map<NamedProperty>': {\n 'map': {\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'B': { 'String': { 'stringProperty': '' } },\n 'C': { 'String': { 'stringProperty': '' } },\n },\n },\n 'modify': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': { 'String': { 'stringProperty': { 'value': '', 'oldValue': 'hello' } } },\n },\n },\n 'remove': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'F': { 'String': { 'stringProperty': '' } },\n },\n },\n },\n },\n },\n );\n });\n\n it('should test reversible changeset for a NodeProperty', function() {\n var originalChangeSet = {\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'F': { 'String': { 'stringProperty': '' } },\n },\n },\n 'remove': ['B', 'C'],\n 'modify': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': { 'String': { 'stringProperty': 'hello' } },\n },\n },\n };\n var parentChangeSet = {\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': { 'String': { 'stringProperty': '' } },\n 'B': { 'String': { 'stringProperty': '' } },\n 'C': { 'String': { 'stringProperty': '' } },\n },\n },\n };\n\n var changeSet = new ChangeSet(originalChangeSet);\n changeSet._toReversibleChangeSet(parentChangeSet);\n\n expect(changeSet.getSerializedChangeSet()).to.eql({\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'F': { 'String': { 'stringProperty': '' } },\n },\n },\n 'remove': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'B': { 'String': { 'stringProperty': '' } },\n 'C': { 'String': { 'stringProperty': '' } },\n },\n }, 'modify': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': {\n 'String': {\n 'stringProperty': {\n 'value': 'hello',\n 'oldValue': '',\n },\n },\n },\n },\n },\n });\n\n changeSet.toInverseChangeSet();\n\n expect(changeSet.getSerializedChangeSet()).to.eql({\n 'insert': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'B': { 'String': { 'stringProperty': '' } },\n 'C': { 'String': { 'stringProperty': '' } },\n },\n },\n 'remove': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'F': { 'String': { 'stringProperty': '' } },\n },\n }, 'modify': {\n 'autodesk.tests:AnonymousMapTestPropertyID-1.0.0': {\n 'A': {\n 'String': {\n 'stringProperty': {\n 'value': '',\n 'oldValue': 'hello',\n },\n },\n },\n },\n },\n });\n\n var originalChangeSet2 = {\n 'insert': {\n 'mysample:point2d-1.0.0': {\n '7485af0e-c992-af6a-ef36-6a024eb4b4e5---2': {\n 'String': {\n 'guid': 'fb5f062f-9f56-55c3-f868-06caa5d8ce26',\n },\n 'Float64': {\n 'x': 0,\n 'y': 0,\n },\n },\n },\n },\n };\n\n var parentChangeSet2 = {};\n\n var changeSet2 = new ChangeSet(originalChangeSet2);\n changeSet2._toReversibleChangeSet(parentChangeSet2);\n\n expect(changeSet2.getSerializedChangeSet()).to.eql(changeSet2.getSerializedChangeSet());\n changeSet2.toInverseChangeSet();\n\n expect(changeSet2.getSerializedChangeSet()).to.eql({\n 'remove': {\n 'mysample:point2d-1.0.0': {\n '7485af0e-c992-af6a-ef36-6a024eb4b4e5---2': {\n 'String': {\n 'guid': 'fb5f062f-9f56-55c3-f868-06caa5d8ce26',\n },\n 'Float64': {\n 'x': 0,\n 'y': 0,\n },\n },\n },\n },\n });\n });\n\n it('should test reversible changeset for an array of non primitive types', function() {\n var originalChangeSet = {\n 'modify': {\n 'array<mysample:point2d-1.0.0>': {\n 'test2': {\n 'modify': [\n [\n 0,\n [\n {\n 'Float64': {\n 'x': 15.104284463262685,\n },\n 'typeid': 'mysample:point2d-1.0.0',\n },\n ],\n ],\n ],\n },\n },\n },\n };\n\n var parentChangeSet = {\n 'insert': {\n 'mysample:point2d-1.0.0': {\n 'test': {\n 'String': {\n 'guid': 'cd36cd32-0bd3-5c55-f94c-b95933fdc58b',\n },\n 'Float64': {\n 'x': 65.18242364168808,\n 'y': 0,\n },\n },\n },\n 'array<mysample:point2d-1.0.0>': {\n 'test2': {\n 'insert': [\n [\n 0,\n [\n {\n 'String': {\n 'guid': 'e66540ff-9e5e-d599-033e-d3dd55efc2a3',\n },\n 'Float64': {\n 'x': 0,\n 'y': 0,\n },\n 'typeid': 'mysample:point2d-1.0.0',\n },\n {\n 'String': {\n 'guid': 'daeb5439-baef-7986-f90a-6a3a2f082250',\n },\n 'Float64': {\n 'x': 0,\n 'y': 0,\n },\n 'typeid': 'mysample:point2d-1.0.0',\n },\n ],\n ],\n ],\n },\n 'test3': {},\n },\n },\n 'insertTemplates': {\n 'mysample:point2d-1.0.0': {\n 'typeid': 'mysample:point2d-1.0.0',\n 'inherits': 'NamedProperty',\n 'properties': [\n {\n 'id': 'x',\n 'typeid': 'Float64',\n },\n {\n 'id': 'y',\n 'typeid': 'Float64',\n },\n ],\n },\n },\n };\n\n var changeSet = new ChangeSet(originalChangeSet);\n changeSet._toReversibleChangeSet(parentChangeSet);\n\n expect(changeSet.getSerializedChangeSet()).to.eql({\n 'modify': {\n 'array<mysample:point2d-1.0.0>': {\n 'test2': {\n 'modify': [\n [\n 0,\n [\n {\n 'Float64': {\n 'x': {\n value: 15.104284463262685,\n oldValue: 0,\n },\n },\n 'typeid': 'mysample:point2d-1.0.0',\n },\n ],\n ],\n ],\n },\n },\n },\n });\n\n changeSet.toInverseChangeSet();\n\n expect(changeSet.getSerializedChangeSet()).to.eql({\n 'modify': {\n 'array<mysample:point2d-1.0.0>': {\n 'test2': {\n 'modify': [\n [\n 0,\n [\n {\n 'Float64': {\n 'x': {\n value: 0,\n oldValue: 15.104284463262685,\n },\n },\n 'typeid': 'mysample:point2d-1.0.0',\n },\n ],\n ],\n ],\n },\n },\n },\n });\n });\n\n it('should correctly reverse inserts of strings', function() {\n let CS = new ChangeSet({\n insert: {\n 'String': {\n 'test': 'xxx',\n },\n },\n });\n CS.toInverseChangeSet();\n expect(CS.getSerializedChangeSet()).to.deep.equal({\n 'remove': {\n 'String': {\n 'test': 'xxx',\n },\n },\n });\n });\n\n it('should correctly reverse inserts of literal strings within NodeProperties', function() {\n let CS = new ChangeSet({\n 'modify': {\n 'NodeProperty': {\n 'test': {\n insert: {\n 'String': {\n 'test': 'xxx',\n },\n },\n },\n },\n },\n });\n CS.toInverseChangeSet();\n expect(CS.getSerializedChangeSet()).to.deep.equal({\n 'modify': {\n 'NodeProperty': {\n 'test': {\n 'remove': {\n 'String': {\n 'test': 'xxx',\n },\n },\n },\n },\n },\n });\n });\n\n it('@regression should not fail when building reversible change sets', function() {\n var parentChangeSet = require('./validation/reversibleChangeSetTestData.js').parentChangeSet;\n var originalChangeSet = require('./validation/reversibleChangeSetTestData.js').originalChangeSet;\n\n var changeSet = new ChangeSet(originalChangeSet);\n changeSet._toReversibleChangeSet(parentChangeSet);\n });\n\n it('@regression should not fail when creating a reversible change set', function() {\n var cs = {\n 'modify': {\n 'autodesk.compute:graph-1.0.0': {\n '5eb6ebe1-92c8-52fa-984b-b0b65c46d2a7':\n {\n 'map<autodesk.compute:node-2.0.0>': {\n 'computeNodes': {\n 'modify': {\n 'autodesk.compute:fanOut-1.0.0':\n {\n 'a7e7d213-1202-9ee4-a3c1-8a33d6f36122': {\n 'autodesk.compute:context-1.0.0': {\n 'computeContext':\n { 'Reference<autodesk.compute:resource-2.0.0>': { 'resource': '/8ce10fdd-b2b6-7152-21dc-c0e199b579e3' } },\n },\n 'map<autodesk.compute:node-2.0.0>': {\n 'computeNodes': {\n 'modify': {\n 'autodesk.test:testCN-1.0.0':\n {\n '1e924300-92ef-eaad-391f-53b77fe01099': {\n 'enum<Enum>': { 'status': 1 }, 'autodesk.compute:context-1.0.0':\n {\n 'computeContext': {\n 'Reference<autodesk.compute:resource-2.0.0>': {\n 'resource':\n '/c1a811ea-608e-5fcc-1487-c74ab6939dee',\n },\n },\n }, 'Reference<autodesk.core:user-1.0.0>': {\n 'inputs.input':\n '/5eb6ebe1-92c8-52fa-984b-b0b65c46d2a7.computeNodes[a7e7d213-1202-9ee4-a3c1-8a33d6f36122]' +\n '.intermediateProperties[2c06da5c-8614-e9c2-3bd6-75ae739eba4f]',\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n };\n var parent = {\n 'insert': {\n 'autodesk.compute:graph-1.0.0': {\n '5eb6ebe1-92c8-52fa-984b-b0b65c46d2a7':\n {\n 'map<autodesk.compute:node-2.0.0>': {\n 'computeNodes': {\n 'insert': {\n 'autodesk.compute:fanOut-1.0.0':\n {\n 'a7e7d213-1202-9ee4-a3c1-8a33d6f36122': {\n 'autodesk.compute:context-1.0.0': {\n 'computeContext':\n { 'Reference<autodesk.compute:resource-2.0.0>': { 'resource': '' } },\n }, 'map<autodesk.compute:node-2.0.0>':\n {\n 'computeNodes': {\n 'insert': {\n 'autodesk.test:testCN-1.0.0': {\n '1e924300-92ef-eaad-391f-53b77fe01099':\n {\n 'enum<Enum>': { 'status': 0 }, 'autodesk.compute:context-1.0.0': {\n 'computeContext':\n { 'Reference<autodesk.compute:resource-2.0.0>': { 'resource': '' } },\n }, 'Reference<autodesk.core:user-1.0.0>':\n { 'inputs.input': '' },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n };\n\n var b = new ChangeSet(cs);\n b._toReversibleChangeSet(parent);\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"reversibleChangeset.spec.js","sourceRoot":"","sources":["../../src/test/reversibleChangeset.spec.js"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* globals expect */\n/**\n * @fileoverview In this file, we will test the functions of the property factory.\n */\nconst _ = require(\"lodash\");\nconst { ChangeSet } = require(\"@fluid-experimental/property-changeset\");\nconst { Int64, Uint64 } = require(\"@fluid-experimental/property-common\");\nconst { PropertyFactory } = require(\"..\");\nconst deepCopy = _.cloneDeep;\n\ndescribe(\"Reversible ChangeSets\", function () {\n\tvar testRevAndInvCS = function (\n\t\tinitialProperty,\n\t\tmodificationFunction,\n\t\texpectedRevCS,\n\t\texpectedAfterCS,\n\t\texpectedInverseCS,\n\t) {\n\t\tvar initialChangeSet = new ChangeSet(initialProperty._serialize(false));\n\t\tinitialChangeSet.setIsNormalized(true);\n\t\tvar initialChangeSetBackup = deepCopy(initialChangeSet.getSerializedChangeSet());\n\t\tinitialProperty.cleanDirty();\n\n\t\tvar initialPropertyClone = initialProperty.clone();\n\t\tvar initialPropertyBackup = initialProperty.clone();\n\n\t\tmodificationFunction(initialProperty);\n\n\t\tvar cs2 = new ChangeSet(initialProperty._serialize(true));\n\n\t\tvar cs2Rev = cs2.clone();\n\n\t\tcs2Rev._stripReversibleChangeSet();\n\t\texpect(cs2.getSerializedChangeSet()).to.deep.equal(cs2Rev.getSerializedChangeSet());\n\n\t\tcs2Rev._toReversibleChangeSet(initialChangeSet.getSerializedChangeSet());\n\n\t\tvar cs2Strip = cs2Rev.clone();\n\t\tcs2Strip._stripReversibleChangeSet();\n\t\texpect(cs2.getSerializedChangeSet()).to.deep.equal(cs2Strip.getSerializedChangeSet());\n\n\t\tcs2._toReversibleChangeSet(initialChangeSet.getSerializedChangeSet());\n\t\tvar csR = cs2.clone();\n\t\tcsR._toReversibleChangeSet(initialChangeSet.getSerializedChangeSet());\n\n\t\tif (expectedRevCS) {\n\t\t\texpect(csR.getSerializedChangeSet()).to.deep.equal(expectedRevCS);\n\t\t}\n\n\t\t// now apply cs2 on the initial changeset\n\t\tinitialChangeSet.applyChangeSet(cs2);\n\t\tif (expectedAfterCS) {\n\t\t\texpect(initialChangeSet.getSerializedChangeSet()).to.deep.equal(expectedAfterCS);\n\t\t}\n\t\t// now apply cs2 on the initial property\n\t\tinitialPropertyClone.applyChangeSet(cs2.getSerializedChangeSet());\n\t\tif (expectedAfterCS) {\n\t\t\texpect(initialPropertyClone._serialize(false)).to.deep.equal(\n\t\t\t\tinitialProperty._serialize(false),\n\t\t\t);\n\t\t}\n\t\t// now inverse the changeset\n\t\tvar inverseCS = cs2.clone();\n\t\tinverseCS.toInverseChangeSet();\n\t\tif (expectedInverseCS) {\n\t\t\texpect(inverseCS.getSerializedChangeSet()).to.deep.equal(expectedInverseCS);\n\t\t}\n\t\t// applying the inverse change should get us back to the initial state\n\t\t// apply on changeset\n\t\tinitialChangeSet.applyChangeSet(inverseCS);\n\t\texpect(initialChangeSet.getSerializedChangeSet()).to.deep.equal(initialChangeSetBackup);\n\t\t// apply on properties\n\t\tinitialPropertyClone.applyChangeSet(inverseCS.getSerializedChangeSet());\n\t\texpect(initialPropertyClone._serialize(false)).to.deep.equal(\n\t\t\tinitialPropertyBackup._serialize(false),\n\t\t);\n\t};\n\n\tbefore(function () {\n\t\tvar TaskSubjectParentTemplate = {\n\t\t\ttypeid: \"autodesk.tests:ChangeSetApplyAfterTask.parentTemplate-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"directMember\",\n\t\t\t\t\ttypeid: \"autodesk.tests:ChangeSetApplyAfterTask.memberTemplate-1.0.0\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: \"nested\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"member\",\n\t\t\t\t\t\t\ttypeid: \"autodesk.tests:ChangeSetApplyAfterTask.nestedTemplate-1.0.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t\tvar TaskSubjectMemberTemplate = {\n\t\t\ttypeid: \"autodesk.tests:ChangeSetApplyAfterTask.memberTemplate-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{ id: \"progress\", typeid: \"Uint32\" },\n\t\t\t\t{ id: \"timeRemaining\", typeid: \"Uint32\" },\n\t\t\t],\n\t\t};\n\n\t\tvar TaskSubjectTestTemplate = {\n\t\t\ttypeid: \"autodesk.tests:ChangeSetApplyAfterTask.nodeTemplate-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{ id: \"result\", typeid: \"NodeProperty\" },\n\t\t\t\t{ id: \"integer\", typeid: \"Uint32\" },\n\t\t\t],\n\t\t};\n\n\t\t// Register the templates from the discussion document\n\t\tvar Vec3Template = {\n\t\t\ttypeid: \"autodesk.test:vector3-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{ id: \"x\", typeid: \"Float32\" },\n\t\t\t\t{ id: \"y\", typeid: \"Float32\" },\n\t\t\t\t{ id: \"z\", typeid: \"Float32\" },\n\t\t\t],\n\t\t};\n\n\t\tvar Point2DTemplate = {\n\t\t\ttypeid: \"autodesk.test:point2d-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"position\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{ id: \"x\", typeid: \"Float32\" },\n\t\t\t\t\t\t{ id: \"y\", typeid: \"Float32\" },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t{ id: \"normal\", typeid: \"autodesk.test:vector3-1.0.0\" },\n\t\t\t\t{ id: \"neighbours\", typeid: \"autodesk.test:vector3-1.0.0\", context: \"map\" },\n\t\t\t\t{ id: \"temperature\", typeid: \"Float32\" },\n\t\t\t],\n\t\t};\n\n\t\tvar TestArrayFloat32 = {\n\t\t\ttypeid: \"autodesk.test:test.arrayfloat32-1.0.0\",\n\t\t\tproperties: [{ id: \"data\", typeid: \"Float32\", context: \"array\" }],\n\t\t};\n\n\t\tvar SimpleStringTestPropertyTemplate = {\n\t\t\ttypeid: \"autodesk.tests:DataStringTestProperty-1.0.0\",\n\t\t\tproperties: [{ id: \"data\", typeid: \"String\" }],\n\t\t};\n\n\t\tvar SimpleRefTestPropertyTemplate = {\n\t\t\ttypeid: \"autodesk.tests:DataRefTestProperty-1.0.0\",\n\t\t\tproperties: [{ id: \"data\", typeid: \"Reference\" }],\n\t\t};\n\n\t\tvar SimpleMapTestPropertyTemplate = {\n\t\t\ttypeid: \"autodesk.tests:MapTestPropertyID-1.0.0\",\n\t\t\tproperties: [{ id: \"data\", typeid: \"Float32\", context: \"map\" }],\n\t\t};\n\n\t\tvar TestPropertyTemplate = {\n\t\t\ttypeid: \"autodesk.tests:MapTestNamedPropertyID-1.0.0\",\n\t\t\tinherits: [\"NamedProperty\"],\n\t\t\tproperties: [\n\t\t\t\t{ id: \"stringProperty\", typeid: \"String\" },\n\t\t\t\t{ id: \"stringProperty2\", typeid: \"String\" },\n\t\t\t\t{ id: \"map\", context: \"map\", typeid: \"NamedProperty\" },\n\t\t\t],\n\t\t};\n\t\tvar AnonymousTestPropertyTemplate = {\n\t\t\ttypeid: \"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\",\n\t\t\tproperties: [{ id: \"stringProperty\", typeid: \"String\" }],\n\t\t};\n\n\t\tvar CuststomArrayTemplate = {\n\t\t\ttypeid: \"autodesk.tests:CustomArrayChangesetTestID-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"data\",\n\t\t\t\t\ttypeid: \"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\",\n\t\t\t\t\tcontext: \"array\",\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tvar TestEnumTemplate = {\n\t\t\ttypeid: \"autodesk.core:UnitsEnum-1.0.0\",\n\t\t\tinherits: \"Enum\",\n\t\t\tannotation: { description: \"The metric units\" },\n\t\t\tproperties: [\n\t\t\t\t{ id: \"m\", value: 1, annotation: { description: \"meter\" } },\n\t\t\t\t{ id: \"cm\", value: 2, annotation: { description: \"centimeter\" } },\n\t\t\t\t{ id: \"mm\", value: 3, annotation: { description: \"millimeter\" } },\n\t\t\t],\n\t\t};\n\t\tPropertyFactory._reregister(TestEnumTemplate);\n\n\t\tvar TestBaseContainingEnumTemplate = {\n\t\t\ttypeid: \"autodesk.core:CustomWithEnumID-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"data\",\n\t\t\t\t\ttypeid: \"autodesk.core:UnitsEnum-1.0.0\",\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tvar TestInheritsNodePropertyObject = {\n\t\t\tinherits: [\"NodeProperty\"],\n\t\t\ttypeid: \"autodesk.tests:SimpleInheritsNodeProperty-1.0.0\",\n\t\t};\n\n\t\tPropertyFactory._reregister(TestInheritsNodePropertyObject);\n\t\tPropertyFactory._reregister(TestEnumTemplate);\n\t\tPropertyFactory._reregister(TestBaseContainingEnumTemplate);\n\n\t\tPropertyFactory._reregister(CuststomArrayTemplate);\n\t\tPropertyFactory._reregister(TestPropertyTemplate);\n\t\tPropertyFactory._reregister(AnonymousTestPropertyTemplate);\n\n\t\tPropertyFactory._reregister(SimpleMapTestPropertyTemplate);\n\t\tPropertyFactory._reregister(SimpleStringTestPropertyTemplate);\n\t\tPropertyFactory._reregister(SimpleRefTestPropertyTemplate);\n\t\tPropertyFactory._reregister(Vec3Template);\n\t\tPropertyFactory._reregister(Point2DTemplate);\n\t\tPropertyFactory._reregister(TaskSubjectParentTemplate);\n\t\tPropertyFactory._reregister(TaskSubjectMemberTemplate);\n\t\tPropertyFactory._reregister(TaskSubjectTestTemplate);\n\t\tPropertyFactory._reregister(TestArrayFloat32);\n\t});\n\n\tdescribe(\"Make inversible, apply and reverse for primitive properties.\", function () {\n\t\tit(\"should work for modifying Int8\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"Int8\");\n\t\t\ttestRevAndInvCS(\n\t\t\t\tprop,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(10);\n\t\t\t\t},\n\t\t\t\t{ oldValue: 0, value: 10 },\n\t\t\t\t10,\n\t\t\t\t{ oldValue: 10, value: 0 },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Uint8\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"Uint8\");\n\t\t\ttestRevAndInvCS(\n\t\t\t\tprop,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(10);\n\t\t\t\t},\n\t\t\t\t{ oldValue: 0, value: 10 },\n\t\t\t\t10,\n\t\t\t\t{ oldValue: 10, value: 0 },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Int16\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"Int16\");\n\t\t\ttestRevAndInvCS(\n\t\t\t\tprop,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(10);\n\t\t\t\t},\n\t\t\t\t{ oldValue: 0, value: 10 },\n\t\t\t\t10,\n\t\t\t\t{ oldValue: 10, value: 0 },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Uint16\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"Uint16\");\n\t\t\ttestRevAndInvCS(\n\t\t\t\tprop,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(10);\n\t\t\t\t},\n\t\t\t\t{ oldValue: 0, value: 10 },\n\t\t\t\t10,\n\t\t\t\t{ oldValue: 10, value: 0 },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Int32\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"Int32\");\n\t\t\ttestRevAndInvCS(\n\t\t\t\tprop,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(10);\n\t\t\t\t},\n\t\t\t\t{ oldValue: 0, value: 10 },\n\t\t\t\t10,\n\t\t\t\t{ oldValue: 10, value: 0 },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Uint32\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"Uint32\");\n\t\t\ttestRevAndInvCS(\n\t\t\t\tprop,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(10);\n\t\t\t\t},\n\t\t\t\t{ oldValue: 0, value: 10 },\n\t\t\t\t10,\n\t\t\t\t{ oldValue: 10, value: 0 },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Int64\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"Int64\");\n\t\t\ttestRevAndInvCS(\n\t\t\t\tprop,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(new Int64(10, 10));\n\t\t\t\t},\n\t\t\t\t{ oldValue: [0, 0], value: [10, 10] },\n\t\t\t\t[10, 10],\n\t\t\t\t{ oldValue: [10, 10], value: [0, 0] },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Uint64\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"Uint64\");\n\t\t\ttestRevAndInvCS(\n\t\t\t\tprop,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(new Uint64(10, 10));\n\t\t\t\t},\n\t\t\t\t{ oldValue: [0, 0], value: [10, 10] },\n\t\t\t\t[10, 10],\n\t\t\t\t{ oldValue: [10, 10], value: [0, 0] },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Float32\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"Float32\");\n\t\t\ttestRevAndInvCS(\n\t\t\t\tprop,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(0.5);\n\t\t\t\t},\n\t\t\t\t{ oldValue: 0, value: 0.5 },\n\t\t\t\t0.5,\n\t\t\t\t{ oldValue: 0.5, value: 0 },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Float64\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"Float64\");\n\t\t\ttestRevAndInvCS(\n\t\t\t\tprop,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(0.5);\n\t\t\t\t},\n\t\t\t\t{ oldValue: 0, value: 0.5 },\n\t\t\t\t0.5,\n\t\t\t\t{ oldValue: 0.5, value: 0 },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Bool\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"Bool\");\n\t\t\ttestRevAndInvCS(\n\t\t\t\tprop,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(true);\n\t\t\t\t},\n\t\t\t\t{ oldValue: false, value: true },\n\t\t\t\ttrue,\n\t\t\t\t{ oldValue: true, value: false },\n\t\t\t);\n\t\t});\n\t\t// These tests have been disabled, since the interface of\n\t\t// the ChangeSet class is ambiguous when inserting a string\n\t\tit.skip(\"@bugfix should work for modifying String\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"String\");\n\t\t\ttestRevAndInvCS(\n\t\t\t\tprop,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(\"test\");\n\t\t\t\t},\n\t\t\t\t{ oldValue: \"\", value: \"test\" },\n\t\t\t\t\"test\",\n\t\t\t\t{ oldValue: \"test\", value: \"\" },\n\t\t\t);\n\t\t});\n\t\t// These tests have been disabled, since the interface of\n\t\t// the ChangeSet class is ambiguous when inserting a string\n\t\tit.skip(\"@bugfix should work for modifying Reference\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"Reference\");\n\t\t\ttestRevAndInvCS(\n\t\t\t\tprop,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(\"/\");\n\t\t\t\t},\n\t\t\t\t{ oldValue: \"\", value: \"/\" },\n\t\t\t\t\"/\",\n\t\t\t\t{ oldValue: \"/\", value: \"\" },\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"Make inversible, apply and reverse for primitive properties in a NodeProperty.\", function () {\n\t\tit(\"should work for modifying Int8\", function () {\n\t\t\tvar node = PropertyFactory.create(\"NodeProperty\");\n\t\t\tvar prop = PropertyFactory.create(\"Int8\");\n\t\t\tnode.insert(\"prop\", prop);\n\t\t\ttestRevAndInvCS(\n\t\t\t\tnode,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(10);\n\t\t\t\t},\n\t\t\t\t{ modify: { Int8: { prop: { oldValue: 0, value: 10 } } } },\n\t\t\t\t{ insert: { Int8: { prop: 10 } } },\n\t\t\t\t{ modify: { Int8: { prop: { oldValue: 10, value: 0 } } } },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Uint8\", function () {\n\t\t\tvar node = PropertyFactory.create(\"NodeProperty\");\n\t\t\tvar prop = PropertyFactory.create(\"Uint8\");\n\t\t\tnode.insert(\"prop\", prop);\n\t\t\ttestRevAndInvCS(\n\t\t\t\tnode,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(10);\n\t\t\t\t},\n\t\t\t\t{ modify: { Uint8: { prop: { oldValue: 0, value: 10 } } } },\n\t\t\t\t{ insert: { Uint8: { prop: 10 } } },\n\t\t\t\t{ modify: { Uint8: { prop: { oldValue: 10, value: 0 } } } },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Int16\", function () {\n\t\t\tvar node = PropertyFactory.create(\"NodeProperty\");\n\t\t\tvar prop = PropertyFactory.create(\"Int16\");\n\t\t\tnode.insert(\"prop\", prop);\n\t\t\ttestRevAndInvCS(\n\t\t\t\tnode,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(10);\n\t\t\t\t},\n\t\t\t\t{ modify: { Int16: { prop: { oldValue: 0, value: 10 } } } },\n\t\t\t\t{ insert: { Int16: { prop: 10 } } },\n\t\t\t\t{ modify: { Int16: { prop: { oldValue: 10, value: 0 } } } },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Uint16\", function () {\n\t\t\tvar node = PropertyFactory.create(\"NodeProperty\");\n\t\t\tvar prop = PropertyFactory.create(\"Uint16\");\n\t\t\tnode.insert(\"prop\", prop);\n\t\t\ttestRevAndInvCS(\n\t\t\t\tnode,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(10);\n\t\t\t\t},\n\t\t\t\t{ modify: { Uint16: { prop: { oldValue: 0, value: 10 } } } },\n\t\t\t\t{ insert: { Uint16: { prop: 10 } } },\n\t\t\t\t{ modify: { Uint16: { prop: { oldValue: 10, value: 0 } } } },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Int32\", function () {\n\t\t\tvar node = PropertyFactory.create(\"NodeProperty\");\n\t\t\tvar prop = PropertyFactory.create(\"Int32\");\n\t\t\tnode.insert(\"prop\", prop);\n\t\t\ttestRevAndInvCS(\n\t\t\t\tnode,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(10);\n\t\t\t\t},\n\t\t\t\t{ modify: { Int32: { prop: { oldValue: 0, value: 10 } } } },\n\t\t\t\t{ insert: { Int32: { prop: 10 } } },\n\t\t\t\t{ modify: { Int32: { prop: { oldValue: 10, value: 0 } } } },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Uint32\", function () {\n\t\t\tvar node = PropertyFactory.create(\"NodeProperty\");\n\t\t\tvar prop = PropertyFactory.create(\"Uint32\");\n\t\t\tnode.insert(\"prop\", prop);\n\t\t\ttestRevAndInvCS(\n\t\t\t\tnode,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(10);\n\t\t\t\t},\n\t\t\t\t{ modify: { Uint32: { prop: { oldValue: 0, value: 10 } } } },\n\t\t\t\t{ insert: { Uint32: { prop: 10 } } },\n\t\t\t\t{ modify: { Uint32: { prop: { oldValue: 10, value: 0 } } } },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Int64\", function () {\n\t\t\tvar node = PropertyFactory.create(\"NodeProperty\");\n\t\t\tvar prop = PropertyFactory.create(\"Int64\");\n\t\t\tnode.insert(\"prop\", prop);\n\t\t\ttestRevAndInvCS(\n\t\t\t\tnode,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(new Int64(10, 10));\n\t\t\t\t},\n\t\t\t\t{ modify: { Int64: { prop: { oldValue: [0, 0], value: [10, 10] } } } },\n\t\t\t\t{ insert: { Int64: { prop: [10, 10] } } },\n\t\t\t\t{ modify: { Int64: { prop: { oldValue: [10, 10], value: [0, 0] } } } },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Uint64\", function () {\n\t\t\tvar node = PropertyFactory.create(\"NodeProperty\");\n\t\t\tvar prop = PropertyFactory.create(\"Uint64\");\n\t\t\tnode.insert(\"prop\", prop);\n\t\t\ttestRevAndInvCS(\n\t\t\t\tnode,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(new Uint64(10, 10));\n\t\t\t\t},\n\t\t\t\t{ modify: { Uint64: { prop: { oldValue: [0, 0], value: [10, 10] } } } },\n\t\t\t\t{ insert: { Uint64: { prop: [10, 10] } } },\n\t\t\t\t{ modify: { Uint64: { prop: { oldValue: [10, 10], value: [0, 0] } } } },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Float32\", function () {\n\t\t\tvar node = PropertyFactory.create(\"NodeProperty\");\n\t\t\tvar prop = PropertyFactory.create(\"Float32\");\n\t\t\tnode.insert(\"prop\", prop);\n\t\t\ttestRevAndInvCS(\n\t\t\t\tnode,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(0.5);\n\t\t\t\t},\n\t\t\t\t{ modify: { Float32: { prop: { oldValue: 0, value: 0.5 } } } },\n\t\t\t\t{ insert: { Float32: { prop: 0.5 } } },\n\t\t\t\t{ modify: { Float32: { prop: { oldValue: 0.5, value: 0 } } } },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Float64\", function () {\n\t\t\tvar node = PropertyFactory.create(\"NodeProperty\");\n\t\t\tvar prop = PropertyFactory.create(\"Float64\");\n\t\t\tnode.insert(\"prop\", prop);\n\t\t\ttestRevAndInvCS(\n\t\t\t\tnode,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(0.5);\n\t\t\t\t},\n\t\t\t\t{ modify: { Float64: { prop: { oldValue: 0, value: 0.5 } } } },\n\t\t\t\t{ insert: { Float64: { prop: 0.5 } } },\n\t\t\t\t{ modify: { Float64: { prop: { oldValue: 0.5, value: 0 } } } },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Bool\", function () {\n\t\t\tvar node = PropertyFactory.create(\"NodeProperty\");\n\t\t\tvar prop = PropertyFactory.create(\"Bool\");\n\t\t\tnode.insert(\"prop\", prop);\n\t\t\ttestRevAndInvCS(\n\t\t\t\tnode,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(true);\n\t\t\t\t},\n\t\t\t\t{ modify: { Bool: { prop: { oldValue: false, value: true } } } },\n\t\t\t\t{ insert: { Bool: { prop: true } } },\n\t\t\t\t{ modify: { Bool: { prop: { oldValue: true, value: false } } } },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying String\", function () {\n\t\t\tvar node = PropertyFactory.create(\"NodeProperty\");\n\t\t\tvar prop = PropertyFactory.create(\"String\");\n\t\t\tnode.insert(\"prop\", prop);\n\t\t\ttestRevAndInvCS(\n\t\t\t\tnode,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(\"test\");\n\t\t\t\t},\n\t\t\t\t{ modify: { String: { prop: { oldValue: \"\", value: \"test\" } } } },\n\t\t\t\t{ insert: { String: { prop: \"test\" } } },\n\t\t\t\t{ modify: { String: { prop: { oldValue: \"test\", value: \"\" } } } },\n\t\t\t);\n\t\t});\n\t\tit(\"should work for modifying Reference\", function () {\n\t\t\tvar node = PropertyFactory.create(\"NodeProperty\");\n\t\t\tvar prop = PropertyFactory.create(\"Reference\");\n\t\t\tnode.insert(\"prop\", prop);\n\t\t\ttestRevAndInvCS(\n\t\t\t\tnode,\n\t\t\t\tfunction () {\n\t\t\t\t\tprop.setValue(\"/\");\n\t\t\t\t},\n\t\t\t\t{ modify: { Reference: { prop: { oldValue: \"\", value: \"/\" } } } },\n\t\t\t\t{ insert: { Reference: { prop: \"/\" } } },\n\t\t\t\t{ modify: { Reference: { prop: { oldValue: \"/\", value: \"\" } } } },\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"apply reversible ChangeSets on all properties\", function () {\n\t\tit(\"should work for primitive properties\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"autodesk.test:vector3-1.0.0\");\n\t\t\tvar propCopy = PropertyFactory.create(\"autodesk.test:vector3-1.0.0\");\n\t\t\tprop._properties.x.value = 2;\n\t\t\tvar changeSet = new ChangeSet(prop._serialize(true));\n\t\t\tchangeSet._toReversibleChangeSet(propCopy._serialize(false));\n\t\t\tpropCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n\t\t\texpect(prop._serialize()).to.deep.equal(propCopy._serialize());\n\t\t\texpect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n\t\t});\n\n\t\tit(\"should work for string properties\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"autodesk.tests:DataStringTestProperty-1.0.0\");\n\t\t\tvar propCopy = PropertyFactory.create(\"autodesk.tests:DataStringTestProperty-1.0.0\");\n\t\t\tprop._properties.data.value = \"A\";\n\t\t\tvar changeSet = new ChangeSet(prop._serialize(true));\n\t\t\tchangeSet._toReversibleChangeSet(propCopy._serialize(false));\n\t\t\tpropCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n\t\t\texpect(prop._serialize()).to.deep.equal(propCopy._serialize());\n\t\t\texpect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n\t\t});\n\n\t\tit(\"should work for reference properties\", function () {\n\t\t\tvar root = PropertyFactory.create(\"NodeProperty\");\n\t\t\tvar prop = PropertyFactory.create(\"autodesk.tests:DataRefTestProperty-1.0.0\");\n\t\t\tvar propCopy = PropertyFactory.create(\"autodesk.tests:DataRefTestProperty-1.0.0\");\n\t\t\tvar target = PropertyFactory.create(\"String\");\n\t\t\troot.insert(\"target\", target);\n\t\t\troot.insert(\"reference\", prop);\n\t\t\troot.insert(\"referenceCopy\", propCopy);\n\t\t\tprop._properties.data.set(target);\n\t\t\tvar changeSet = new ChangeSet(prop._serialize(true));\n\t\t\tchangeSet._toReversibleChangeSet(propCopy._serialize(false));\n\t\t\tpropCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n\t\t\texpect(prop._serialize()).to.deep.equal(propCopy._serialize());\n\t\t\texpect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n\t\t});\n\n\t\tit(\"should work for enum properties\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"autodesk.core:CustomWithEnumID-1.0.0\");\n\t\t\tvar propCopy = PropertyFactory.create(\"autodesk.core:CustomWithEnumID-1.0.0\");\n\t\t\tprop._properties.data.value = \"cm\";\n\t\t\tvar changeSet = new ChangeSet(prop._serialize(true));\n\t\t\tchangeSet._toReversibleChangeSet(propCopy._serialize(false));\n\t\t\tpropCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n\t\t\texpect(prop._serialize()).to.deep.equal(propCopy._serialize());\n\t\t\texpect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n\t\t});\n\n\t\tit(\"should work for indexed collections of complex types\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"autodesk.tests:MapTestNamedPropertyID-1.0.0\");\n\t\t\tvar propCopy = PropertyFactory.create(\"autodesk.tests:MapTestNamedPropertyID-1.0.0\");\n\n\t\t\tvar A = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\t\t\tvar B = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\t\t\tvar C = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\t\t\tprop._properties.map.insert(\"A\", A);\n\t\t\tprop._properties.map.insert(\"B\", B);\n\t\t\tprop._properties.map.insert(\"C\", C);\n\t\t\tpropCopy.deserialize(prop._serialize());\n\n\t\t\tprop.cleanDirty();\n\t\t\tpropCopy.cleanDirty();\n\n\t\t\tprop._properties.map.remove(\"B\");\n\t\t\tprop._properties.map.get(\"A\")._properties.stringProperty.value = \"hello\";\n\n\t\t\tvar changeSet = new ChangeSet(prop._serialize(true));\n\t\t\tchangeSet._toReversibleChangeSet(propCopy._serialize(false));\n\t\t\tpropCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n\t\t\texpect(prop._serialize()).to.deep.equal(propCopy._serialize());\n\t\t\texpect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n\t\t});\n\n\t\tit(\"should work for indexed collections of primitive types\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"autodesk.tests:MapTestPropertyID-1.0.0\");\n\t\t\tvar propCopy = PropertyFactory.create(\"autodesk.tests:MapTestPropertyID-1.0.0\");\n\n\t\t\tprop._properties.data.insert(\"A\", 1);\n\t\t\tprop._properties.data.insert(\"B\", 2);\n\t\t\tprop._properties.data.insert(\"C\", 3);\n\t\t\tpropCopy.deserialize(prop._serialize());\n\n\t\t\tprop.cleanDirty();\n\t\t\tpropCopy.cleanDirty();\n\n\t\t\tprop._properties.data.remove(\"B\");\n\t\t\tprop._properties.data.set(\"C\", 99);\n\n\t\t\tvar changeSet = new ChangeSet(prop._serialize(true));\n\t\t\tchangeSet._toReversibleChangeSet(propCopy._serialize(false));\n\t\t\tpropCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n\t\t\texpect(prop._serialize()).to.deep.equal(propCopy._serialize());\n\t\t\texpect(prop._serialize(true)).to.deep.equal(propCopy._serialize(true));\n\t\t});\n\n\t\tit(\"should work for custom array properties\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"autodesk.tests:CustomArrayChangesetTestID-1.0.0\");\n\t\t\tvar propCopy = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:CustomArrayChangesetTestID-1.0.0\",\n\t\t\t);\n\n\t\t\tvar A = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\t\t\tvar B = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\t\t\tvar C = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\t\t\tprop._properties.data.insertRange(0, [A, B, C]);\n\t\t\tpropCopy.deserialize(prop.serialize());\n\n\t\t\tprop.cleanDirty();\n\t\t\tpropCopy.cleanDirty();\n\n\t\t\tprop._properties.data.get(2)._properties.stringProperty.value = \"hello\";\n\t\t\tprop._properties.data.removeRange(1, 1);\n\n\t\t\tvar changeSet = new ChangeSet(prop.serialize({ dirtyOnly: true }));\n\t\t\tvar baseState = propCopy.serialize({ dirtyOnly: false });\n\t\t\tchangeSet._toReversibleChangeSet(baseState);\n\t\t\tpropCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n\t\t\texpect(prop.serialize()).to.deep.equal(propCopy.serialize());\n\t\t\texpect(prop.serialize({ dirtyOnly: true })).to.deep.equal(\n\t\t\t\tpropCopy.serialize({ dirtyOnly: true }),\n\t\t\t);\n\t\t});\n\n\t\tit(\"should work for primitive array properties\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"autodesk.test:test.arrayfloat32-1.0.0\");\n\t\t\tvar propCopy = PropertyFactory.create(\"autodesk.test:test.arrayfloat32-1.0.0\");\n\t\t\tprop._properties.data.insertRange(0, [10, 11, 12, 13, 14, 15, 16]);\n\t\t\tpropCopy._properties.data.insertRange(0, [10, 11, 12, 13, 14, 15, 16]);\n\n\t\t\tprop.cleanDirty();\n\t\t\tpropCopy.cleanDirty();\n\n\t\t\tprop._properties.data.setRange(4, [24, 25]);\n\t\t\tprop._properties.data.removeRange(1, 2);\n\n\t\t\tvar changeSet = new ChangeSet(prop.serialize({ dirtyOnly: true }));\n\t\t\tchangeSet._toReversibleChangeSet(propCopy.serialize({ dirtyOnly: false }));\n\t\t\tpropCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n\t\t\texpect(prop.serialize()).to.deep.equal(propCopy.serialize());\n\t\t\texpect(prop.serialize({ dirtyOnly: true })).to.deep.equal(\n\t\t\t\tpropCopy.serialize({ dirtyOnly: true }),\n\t\t\t);\n\t\t});\n\n\t\tit(\"should work for node properties\", function () {\n\t\t\tvar prop = PropertyFactory.create(\"NodeProperty\");\n\t\t\tvar propCopy = PropertyFactory.create(\"NodeProperty\");\n\n\t\t\tvar A = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\t\t\tvar B = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\t\t\tvar C = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\t\t\tvar D = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\n\t\t\tprop.insert(\"A\", A);\n\t\t\tprop.insert(\"B\", B);\n\t\t\tprop.insert(\"C\", C);\n\t\t\tprop.insert(\"D\", D);\n\n\t\t\tvar initialChangeset = prop.serialize({ dirtyOnly: false });\n\t\t\tpropCopy.deserialize(initialChangeset);\n\n\t\t\tprop.cleanDirty();\n\t\t\tpropCopy.cleanDirty();\n\n\t\t\tprop._properties.A.stringProperty.value = \"test\";\n\t\t\tprop.remove(\"B\");\n\t\t\tprop.remove(\"C\");\n\n\t\t\tvar changeSet = new ChangeSet(prop.serialize({ dirtyOnly: true }));\n\t\t\tchangeSet._toReversibleChangeSet(initialChangeset);\n\t\t\tpropCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n\t\t\texpect(prop.serialize()).to.deep.equal(propCopy.serialize());\n\t\t\texpect(prop.serialize({ dirtyOnly: true })).to.deep.equal(\n\t\t\t\tpropCopy.serialize({ dirtyOnly: true }),\n\t\t\t);\n\t\t});\n\n\t\tit(\"should work for inherits node properties\", function () {\n\t\t\tvar root = PropertyFactory.create(\"NodeProperty\");\n\t\t\tvar prop = PropertyFactory.create(\"autodesk.tests:SimpleInheritsNodeProperty-1.0.0\");\n\t\t\troot.insert(\"prop\", prop);\n\n\t\t\tvar rootCopy = PropertyFactory.create(\"NodeProperty\");\n\t\t\tvar propCopy = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:SimpleInheritsNodeProperty-1.0.0\",\n\t\t\t);\n\t\t\trootCopy.insert(\"prop\", propCopy);\n\n\t\t\tvar A = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\t\t\tvar B = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\t\t\tvar C = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\t\t\tvar D = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\n\t\t\tprop.insert(\"A\", A);\n\t\t\tprop.insert(\"B\", B);\n\t\t\tprop.insert(\"C\", C);\n\t\t\tprop.insert(\"D\", D);\n\n\t\t\tvar initialChangeset = root.serialize({ dirtyOnly: false });\n\t\t\trootCopy.deserialize(initialChangeset);\n\n\t\t\troot.cleanDirty();\n\t\t\trootCopy.cleanDirty();\n\n\t\t\tprop._properties.A.stringProperty.value = \"test\";\n\t\t\tprop.remove(\"B\");\n\t\t\tprop.remove(\"C\");\n\n\t\t\tvar changeSet = new ChangeSet(root.serialize({ dirtyOnly: true }));\n\t\t\tchangeSet._toReversibleChangeSet(initialChangeset);\n\t\t\trootCopy.applyChangeSet(changeSet.getSerializedChangeSet());\n\t\t\texpect(root.serialize()).to.deep.equal(rootCopy.serialize());\n\t\t\texpect(root.serialize({ dirtyOnly: true })).to.deep.equal(\n\t\t\t\trootCopy.serialize({ dirtyOnly: true }),\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"Apply with reversible ChangeSets\", function () {\n\t\tvar overlapApplyTest = function (\n\t\t\tin_type,\n\t\t\tin_inputArrayOperations1,\n\t\t\tin_inputArrayOperations2,\n\t\t\tin_outputArrayOperations,\n\t\t) {\n\t\t\tvar convertModificationSetToArray = function (in_modificationSet) {\n\t\t\t\treturn in_modificationSet.map((x) => {\n\t\t\t\t\treturn x[2] === undefined\n\t\t\t\t\t\t? [x[0], x[1].split(\"\")]\n\t\t\t\t\t\t: [x[0], x[1].split(\"\"), x[2].split(\"\")];\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tvar performApplyTest = function (\n\t\t\t\tin_typeid,\n\t\t\t\tinputArrayOperations1,\n\t\t\t\tinputArrayOperations2,\n\t\t\t\toutputArrayOperations,\n\t\t\t) {\n\t\t\t\tvar CS1 = new ChangeSet({\n\t\t\t\t\tmodify: { [in_typeid]: { arr: { [in_type]: inputArrayOperations1 } } },\n\t\t\t\t});\n\t\t\t\tvar CS2 = {\n\t\t\t\t\tmodify: { [in_typeid]: { arr: { [in_type]: inputArrayOperations2 } } },\n\t\t\t\t};\n\t\t\t\tvar CS2_copy = deepCopy(CS2);\n\t\t\t\tCS1.applyChangeSet(CS2);\n\n\t\t\t\t// CS2 should be unchanged\n\t\t\t\texpect(CS2).to.deep.equal(CS2_copy);\n\n\t\t\t\t// CS2 should no longer contain the removal of A\n\t\t\t\texpect(CS1.getSerializedChangeSet()).to.deep.equal({\n\t\t\t\t\tmodify: { [in_typeid]: { arr: { [in_type]: outputArrayOperations } } },\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tit(\"on strings\", function () {\n\t\t\t\tperformApplyTest(\n\t\t\t\t\t\"String\",\n\t\t\t\t\tdeepCopy(in_inputArrayOperations1),\n\t\t\t\t\tin_inputArrayOperations2,\n\t\t\t\t\tin_outputArrayOperations,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"on arrays\", function () {\n\t\t\t\tperformApplyTest(\n\t\t\t\t\t\"array<String>\",\n\t\t\t\t\tconvertModificationSetToArray(in_inputArrayOperations1),\n\t\t\t\t\tconvertModificationSetToArray(in_inputArrayOperations2),\n\t\t\t\t\tconvertModificationSetToArray(in_outputArrayOperations),\n\t\t\t\t);\n\t\t\t});\n\t\t};\n\n\t\tdescribe(\"for overlapping modifies 1\", function () {\n\t\t\toverlapApplyTest(\n\t\t\t\t\"modify\",\n\t\t\t\t[[3, \"abc\", \"123\"]],\n\t\t\t\t[[3, \"def\", \"abc\"]],\n\t\t\t\t[[3, \"def\", \"123\"]],\n\t\t\t);\n\t\t});\n\n\t\tdescribe(\"for overlapping modifies 2\", function () {\n\t\t\toverlapApplyTest(\n\t\t\t\t\"modify\",\n\t\t\t\t[[0, \"abc\", \"123\"]],\n\t\t\t\t[[2, \"def\", \"c45\"]],\n\t\t\t\t[[0, \"abdef\", \"12345\"]],\n\t\t\t);\n\t\t});\n\t});\n\n\tdescribe(\"Rebase with reversible ChangeSets\", function () {\n\t\tvar overlapRebaseTest = function (\n\t\t\tin_type,\n\t\t\tin_inputArrayOperations1,\n\t\t\tin_inputArrayOperations2,\n\t\t\tin_outputArrayOperations,\n\t\t\tin_expectedConflicts,\n\t\t) {\n\t\t\tvar convertModificationSetToArray = function (in_modificationSet) {\n\t\t\t\treturn in_modificationSet.map((x) => {\n\t\t\t\t\treturn x[2] === undefined\n\t\t\t\t\t\t? [x[0], x[1].split(\"\")]\n\t\t\t\t\t\t: [x[0], x[1].split(\"\"), x[2].split(\"\")];\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tvar performRebaseTest = function (\n\t\t\t\tin_typeid,\n\t\t\t\tinputArrayOperations1,\n\t\t\t\tinputArrayOperations2,\n\t\t\t\toutputArrayOperations,\n\t\t\t) {\n\t\t\t\tvar conflicts = [];\n\t\t\t\tvar CS1_initial = {\n\t\t\t\t\tmodify: { [in_typeid]: { arr: { [in_type]: inputArrayOperations1 } } },\n\t\t\t\t};\n\t\t\t\tvar CS1 = new ChangeSet(deepCopy(CS1_initial));\n\t\t\t\tvar CS2 = {\n\t\t\t\t\tmodify: { [in_typeid]: { arr: { [in_type]: inputArrayOperations2 } } },\n\t\t\t\t};\n\t\t\t\tCS1._rebaseChangeSet(CS2, conflicts);\n\n\t\t\t\t// Duplicated remove is not a conflict\n\t\t\t\texpect(conflicts.length).to.equal(in_expectedConflicts);\n\n\t\t\t\t// CS1 should be unchanged\n\t\t\t\texpect(CS1.getSerializedChangeSet()).to.deep.equal(CS1_initial);\n\n\t\t\t\t// CS2 should no longer contain the removal of A\n\t\t\t\texpect(CS2).to.deep.equal({\n\t\t\t\t\tmodify: { [in_typeid]: { arr: { [in_type]: outputArrayOperations } } },\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tit(\"on strings\", function () {\n\t\t\t\tperformRebaseTest(\n\t\t\t\t\t\"String\",\n\t\t\t\t\tin_inputArrayOperations1,\n\t\t\t\t\tin_inputArrayOperations2,\n\t\t\t\t\tin_outputArrayOperations,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"on arrays\", function () {\n\t\t\t\tperformRebaseTest(\n\t\t\t\t\t\"array<String>\",\n\t\t\t\t\tconvertModificationSetToArray(in_inputArrayOperations1),\n\t\t\t\t\tconvertModificationSetToArray(in_inputArrayOperations2),\n\t\t\t\t\tconvertModificationSetToArray(in_outputArrayOperations),\n\t\t\t\t);\n\t\t\t});\n\t\t};\n\n\t\tdescribe(\"for overlapping removes\", function () {\n\t\t\toverlapRebaseTest(\n\t\t\t\t\"remove\",\n\t\t\t\t[\n\t\t\t\t\t[0, \"<A\"],\n\t\t\t\t\t[4, \">\"],\n\t\t\t\t],\n\t\t\t\t[[1, \"ABC\"]],\n\t\t\t\t[[0, \"BC\"]],\n\t\t\t\t0,\n\t\t\t);\n\t\t});\n\n\t\tdescribe(\"for overlapping removes 2\", function () {\n\t\t\toverlapRebaseTest(\"remove\", [[2, \"C>\"]], [[0, \"ABC\"]], [[0, \"AB\"]], 0);\n\t\t});\n\n\t\tdescribe(\"for overlapping removes 3\", function () {\n\t\t\toverlapRebaseTest(\n\t\t\t\t\"remove\",\n\t\t\t\t[[2, \"CD>\"]],\n\t\t\t\t[\n\t\t\t\t\t[0, \"ABC\"],\n\t\t\t\t\t[4, \">\"],\n\t\t\t\t],\n\t\t\t\t[[0, \"AB\"]],\n\t\t\t\t0,\n\t\t\t);\n\t\t});\n\n\t\tdescribe(\"for overlapping modifies\", function () {\n\t\t\toverlapRebaseTest(\n\t\t\t\t\"modify\",\n\t\t\t\t[\n\t\t\t\t\t[0, \"<A\", \"..\"],\n\t\t\t\t\t[4, \">\", \".\"],\n\t\t\t\t],\n\t\t\t\t[[1, \"123\", \"---\"]],\n\t\t\t\t[[1, \"123\", \"A--\"]],\n\t\t\t\t1,\n\t\t\t);\n\t\t});\n\n\t\tdescribe(\"for overlapping modifies 2\", function () {\n\t\t\toverlapRebaseTest(\n\t\t\t\t\"modify\",\n\t\t\t\t[[2, \"C>\", \"..\"]],\n\t\t\t\t[[0, \"123\", \"---\"]],\n\t\t\t\t[[0, \"123\", \"--C\"]],\n\t\t\t\t1,\n\t\t\t);\n\t\t});\n\n\t\tdescribe(\"for overlapping modifies 3\", function () {\n\t\t\toverlapRebaseTest(\n\t\t\t\t\"modify\",\n\t\t\t\t[[2, \"CD>\", \"..\"]],\n\t\t\t\t[\n\t\t\t\t\t[0, \"123\", \"---\"],\n\t\t\t\t\t[4, \"45\", \"--\"],\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t[0, \"123\", \"--C\"],\n\t\t\t\t\t[4, \"45\", \">-\"],\n\t\t\t\t],\n\t\t\t\t2,\n\t\t\t);\n\t\t});\n\n\t\tit(\"for array modify rebases\", function () {\n\t\t\tvar CS = new ChangeSet({\n\t\t\t\t\"array<Float32>\": {\n\t\t\t\t\telements: {\n\t\t\t\t\t\tmodify: [[1, [1, 2, 3], [0, 1, 2]]],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tvar rebasedCS = CS._rebaseChangeSet(\n\t\t\t\t{\n\t\t\t\t\t\"array<Float32>\": {\n\t\t\t\t\t\telements: {\n\t\t\t\t\t\t\tmodify: [[0, [0, 1, 2, 3], [1, 2, 3, 4]]],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t[],\n\t\t\t);\n\t\t\texpect(rebasedCS[\"array<Float32>\"].elements.modify[0].length).to.equal(3);\n\t\t});\n\t});\n\n\tdescribe(\"applying reversible CS to primitive string types\", function () {\n\t\tit(\"should work for strings\", function () {\n\t\t\tvar CS = new ChangeSet({ String: { test: { value: \"10\", oldValue: \"9\" } } });\n\t\t\tCS.applyChangeSet({ String: { test: { value: \"8\", oldValue: \"10\" } } });\n\t\t\texpect(CS.getSerializedChangeSet()).to.deep.equal({\n\t\t\t\tString: { test: { value: \"8\", oldValue: \"9\" } },\n\t\t\t});\n\t\t});\n\n\t\tit(\"should work for strings\", function () {\n\t\t\tvar CS = new ChangeSet({ Float64: { test: { value: 10, oldValue: 9 } } });\n\t\t\tCS.applyChangeSet({ Float64: { test: { value: 8, oldValue: 10 } } });\n\t\t\texpect(CS.getSerializedChangeSet()).to.deep.equal({\n\t\t\t\tFloat64: { test: { value: 8, oldValue: 9 } },\n\t\t\t});\n\t\t});\n\n\t\tit(\"should work for bool\", function () {\n\t\t\t// TODO: This should become a NOP\n\t\t\tvar CS = new ChangeSet({ Bool: { test: { value: false, oldValue: true } } });\n\t\t\tCS.applyChangeSet({ Bool: { test: { value: true, oldValue: false } } });\n\t\t\texpect(CS.getSerializedChangeSet()).to.deep.equal({\n\t\t\t\tBool: { test: { value: true, oldValue: true } },\n\t\t\t});\n\t\t});\n\n\t\tit(\"should work for bool\", function () {\n\t\t\t// TODO: This should become a NOP\n\t\t\tvar CS = new ChangeSet({});\n\t\t\tCS.applyChangeSet({ Bool: { test: { value: true, oldValue: false } } });\n\t\t\texpect(CS.getSerializedChangeSet()).to.deep.equal({\n\t\t\t\tBool: { test: { value: true, oldValue: false } },\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"_stripReversibleChangeSet should\", function () {\n\t\tit(\"correctly handle removes at the root\", function () {\n\t\t\tvar CS = new ChangeSet({\n\t\t\t\tremove: {\n\t\t\t\t\tString: {\n\t\t\t\t\t\ttestString: \"abcde\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t\t\tCS._stripReversibleChangeSet();\n\t\t\texpect(CS.getSerializedChangeSet()).to.deep.equal({\n\t\t\t\tremove: [\"testString\"],\n\t\t\t});\n\t\t});\n\t\tit(\"ignore the root when passing it a flag\", function () {\n\t\t\tvar SCS = {\n\t\t\t\tremove: {\n\t\t\t\t\tString: {\n\t\t\t\t\t\ttestString: \"abcde\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t\tvar CS = new ChangeSet(SCS);\n\t\t\tCS._stripReversibleChangeSet(true);\n\t\t\texpect(CS.getSerializedChangeSet()).to.deep.equal(SCS);\n\t\t});\n\t});\n\n\tdescribe(\"should return a minimal CS when squashing\", function () {\n\t\tit(\"matching primitive type remove/insert combinations in a polymorphic indexed collection\", function () {\n\t\t\t// These two operations should cancel out\n\t\t\tvar CS1 = new ChangeSet({ remove: { String: { A: \"A\" } } });\n\t\t\tvar CS2 = new ChangeSet({ insert: { String: { A: \"A\" } } });\n\t\t\tCS1.applyChangeSet(CS2);\n\t\t\texpect(CS1.getSerializedChangeSet()).to.deep.equal({});\n\t\t});\n\t\tit(\"non matching primitive type remove/insert combinations in a polymorphic indexed collection\", function () {\n\t\t\t// These two operations should result in a modify\n\t\t\tvar CS1 = new ChangeSet({ remove: { String: { A: \"A\" } } });\n\t\t\tvar CS2 = new ChangeSet({ insert: { String: { A: \"B\" } } });\n\t\t\tCS1.applyChangeSet(CS2);\n\t\t\texpect(CS1.getSerializedChangeSet()).to.deep.equal({ modify: { String: { A: \"B\" } } });\n\t\t});\n\t\tit(\"matching remove/insert combinations in a primitive type indexed collection\", function () {\n\t\t\t// These two operations should cancel out\n\t\t\tvar CS1 = new ChangeSet({\n\t\t\t\tmodify: { \"map<String>\": { test: { remove: { A: \"A\" } } } },\n\t\t\t});\n\t\t\tvar CS2 = new ChangeSet({\n\t\t\t\tmodify: { \"map<String>\": { test: { insert: { A: \"A\" } } } },\n\t\t\t});\n\t\t\tCS1.applyChangeSet(CS2);\n\t\t\texpect(CS1.getSerializedChangeSet()).to.deep.equal({});\n\t\t});\n\t\tit(\"non matching primitive type remove/insert combinations in a polymorphic indexed collection\", function () {\n\t\t\t// These two operations should result in a modify\n\t\t\tvar CS1 = new ChangeSet({\n\t\t\t\tmodify: { \"map<String>\": { test: { remove: { A: \"A\" } } } },\n\t\t\t});\n\t\t\tvar CS2 = new ChangeSet({\n\t\t\t\tmodify: { \"map<String>\": { test: { insert: { A: \"B\" } } } },\n\t\t\t});\n\t\t\tCS1.applyChangeSet(CS2);\n\t\t\texpect(CS1.getSerializedChangeSet()).to.deep.equal({\n\t\t\t\tmodify: { \"map<String>\": { test: { modify: { A: \"B\" } } } },\n\t\t\t});\n\t\t});\n\t\tit(\"matching complex type remove/insert combinations in a polymorphic indexed collection\", function () {\n\t\t\t// These two operations should cancel out\n\t\t\tvar CS1 = new ChangeSet({ remove: { \"RepositoryTest:Nametag-1.0.0\": { name: \"A\" } } });\n\t\t\tvar CS2 = new ChangeSet({ insert: { \"RepositoryTest:Nametag-1.0.0\": { name: \"A\" } } });\n\t\t\tCS1.applyChangeSet(CS2);\n\t\t\texpect(CS1.getSerializedChangeSet()).to.deep.equal({});\n\t\t});\n\t\tit(\"non matching complex type remove/insert combinations in a polymorphic indexed collection\", function () {\n\t\t\t// TODO: How should we treat these operations? Should they be rewritten to a modify?\n\t\t\tvar CS1 = new ChangeSet({ remove: { \"RepositoryTest:Nametag-1.0.0\": { name: \"A\" } } });\n\t\t\tvar CS2 = new ChangeSet({ insert: { \"RepositoryTest:Nametag-1.0.0\": { name: \"B\" } } });\n\t\t\tCS1.applyChangeSet(CS2);\n\t\t\texpect(CS1.getSerializedChangeSet()).to.deep.equal({\n\t\t\t\tremove: { \"RepositoryTest:Nametag-1.0.0\": { name: \"A\" } },\n\t\t\t\tinsert: { \"RepositoryTest:Nametag-1.0.0\": { name: \"B\" } },\n\t\t\t});\n\t\t});\n\n\t\tit(\"matching primitive type remove/insert operations in primitive type arrays\", function () {\n\t\t\t// These two operations should cancel out\n\t\t\tvar CS1 = new ChangeSet({\n\t\t\t\tmodify: { \"array<String>\": { test: { remove: [[0, [\"A\", \"B\", \"C\"]]] } } },\n\t\t\t});\n\t\t\tvar CS2 = new ChangeSet({\n\t\t\t\tmodify: { \"array<String>\": { test: { insert: [[0, [\"A\", \"B\", \"C\"]]] } } },\n\t\t\t});\n\t\t\tCS1.applyChangeSet(CS2);\n\t\t\texpect(CS1.getSerializedChangeSet()).to.deep.equal({});\n\t\t});\n\t});\n\n\tit(\"should work for primitive array properties\", function () {\n\t\tvar prop = PropertyFactory.create(\"autodesk.test:test.arrayfloat32-1.0.0\");\n\t\tprop._properties.data.insertRange(0, [10, 11, 12, 13, 14, 15, 16]);\n\t\ttestRevAndInvCS(\n\t\t\tprop,\n\t\t\tfunction (in_prop) {\n\t\t\t\tin_prop._properties.data.setRange(1, [21, 22]);\n\t\t\t\tin_prop._properties.data.removeRange(4, 3);\n\t\t\t\tin_prop._properties.data.insert(0, 9);\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"array<Float32>\": {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmodify: [[1, [21, 22], [11, 12]]],\n\t\t\t\t\t\tremove: [[4, [14, 15, 16]]],\n\t\t\t\t\t\tinsert: [[0, [9]]],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"array<Float32>\": {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tinsert: [[0, [9, 10, 21, 22, 13]]],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"array<Float32>\": {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmodify: [[2, [11, 12], [21, 22]]],\n\t\t\t\t\t\tinsert: [[5, [14, 15, 16]]],\n\t\t\t\t\t\tremove: [[0, [9]]],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t});\n\n\tit(\"should work for insertions into empty primitive array properties\", function () {\n\t\tvar prop = PropertyFactory.create(\"autodesk.test:test.arrayfloat32-1.0.0\");\n\t\ttestRevAndInvCS(\n\t\t\tprop,\n\t\t\tfunction (in_prop) {\n\t\t\t\tin_prop._properties.data.insertRange(0, [1, 2, 3]);\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"array<Float32>\": {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tinsert: [[0, [1, 2, 3]]],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"array<Float32>\": {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tinsert: [[0, [1, 2, 3]]],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"array<Float32>\": {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tremove: [[0, [1, 2, 3]]],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t});\n\n\tit(\"should not crash with an empty input if it is not needed in the actual CS\", function () {\n\t\tvar initialCS = {\n\t\t\tNodeProperty: {\n\t\t\t\tinsert: {\n\t\t\t\t\tNodeProperty: {\n\t\t\t\t\t\ttest2: {},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t\tvar CS = new ChangeSet(deepCopy(initialCS));\n\t\tCS._toReversibleChangeSet({});\n\t\texpect(CS.getSerializedChangeSet()).to.deep.equal(initialCS);\n\t});\n\n\tit(\"should work for inserts, even if the corresponding property is missing in the initial state\", function () {\n\t\t// This test checks, whether changesets with insert work, even if the corresponding property is not present in the\n\t\t// initial changeset. Since the initial changeset is not needed for the insert, we don't need to throw an\n\t\t// error in that case. This type of situation can occur in the materialized history, if an insert happens right\n\t\t// at a chunk boundary.\n\t\tvar initialCS = {\n\t\t\tNodeProperty: {\n\t\t\t\ttest: {\n\t\t\t\t\tinsert: {\n\t\t\t\t\t\tNodeProperty: {\n\t\t\t\t\t\t\ttest2: {},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t\tvar CS = new ChangeSet(deepCopy(initialCS));\n\t\tCS._toReversibleChangeSet({});\n\t\texpect(CS.getSerializedChangeSet()).to.deep.equal(initialCS);\n\t});\n\n\tit(\"should work for simple primitive properties\", function () {\n\t\tvar cs = new ChangeSet({\n\t\t\tinsert: {\n\t\t\t\tFloat32: {\n\t\t\t\t\tmyFloat: 23,\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t\tvar cs2 = new ChangeSet({\n\t\t\tmodify: {\n\t\t\t\tFloat32: {\n\t\t\t\t\tmyFloat: 42,\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\tvar cs2Rev = cs2.clone();\n\n\t\tcs2Rev._stripReversibleChangeSet();\n\t\texpect(cs2.getSerializedChangeSet()).to.deep.equal(cs2Rev.getSerializedChangeSet());\n\n\t\tcs2Rev._toReversibleChangeSet(cs.getSerializedChangeSet());\n\n\t\tvar cs2Strip = cs2Rev.clone();\n\t\tcs2Strip._stripReversibleChangeSet();\n\t\texpect(cs2.getSerializedChangeSet()).to.deep.equal(cs2Strip.getSerializedChangeSet());\n\n\t\texpect(cs2Rev.getSerializedChangeSet()).to.deep.equal({\n\t\t\tmodify: { Float32: { myFloat: { value: 42, oldValue: 23 } } },\n\t\t});\n\n\t\t// forward and reverse:\n\t\tcs.applyChangeSet(cs2Rev);\n\t\t// cs now should be 42\n\t\texpect(cs.getSerializedChangeSet()).to.deep.equal({ insert: { Float32: { myFloat: 42 } } });\n\n\t\tvar invCS = cs2Rev.clone();\n\t\tinvCS.toInverseChangeSet();\n\t\texpect(invCS.getSerializedChangeSet()).to.deep.equal({\n\t\t\tmodify: { Float32: { myFloat: { value: 23, oldValue: 42 } } },\n\t\t});\n\n\t\tcs.applyChangeSet(invCS);\n\t\t// cs now should be 23\n\t\texpect(cs.getSerializedChangeSet()).to.deep.equal({ insert: { Float32: { myFloat: 23 } } });\n\t});\n\n\tit(\"should work for templated properties\", function () {\n\t\tvar prop = PropertyFactory.create(\"autodesk.test:point2d-1.0.0\");\n\t\ttestRevAndInvCS(\n\t\t\tprop,\n\t\t\tfunction (in_prop) {\n\t\t\t\tin_prop._properties.position.x.value = 2;\n\t\t\t\tin_prop._properties.normal.y.value = 4;\n\t\t\t\tin_prop._properties.temperature.value = 21;\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"Float32\": {\n\t\t\t\t\t\"position.x\": { value: 2, oldValue: 0 },\n\t\t\t\t\t\"temperature\": { value: 21, oldValue: 0 },\n\t\t\t\t},\n\t\t\t\t\"autodesk.test:vector3-1.0.0\": {\n\t\t\t\t\tnormal: { Float32: { y: { value: 4, oldValue: 0 } } },\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"Float32\": {\n\t\t\t\t\t\"position.x\": 2,\n\t\t\t\t\t\"position.y\": 0,\n\t\t\t\t\t\"temperature\": 21,\n\t\t\t\t},\n\t\t\t\t\"autodesk.test:vector3-1.0.0\": {\n\t\t\t\t\tnormal: { Float32: { x: 0, y: 4, z: 0 } },\n\t\t\t\t},\n\t\t\t\t\"map<autodesk.test:vector3-1.0.0>\": { neighbours: {} },\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"Float32\": {\n\t\t\t\t\t\"position.x\": { value: 0, oldValue: 2 },\n\t\t\t\t\t\"temperature\": { value: 0, oldValue: 21 },\n\t\t\t\t},\n\t\t\t\t\"autodesk.test:vector3-1.0.0\": {\n\t\t\t\t\tnormal: { Float32: { y: { value: 0, oldValue: 4 } } },\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t});\n\n\tit(\"should work for string properties initialized by set\", function () {\n\t\tvar prop = PropertyFactory.create(\"autodesk.tests:DataStringTestProperty-1.0.0\");\n\t\tprop._properties.data.value = \"Hello world\";\n\t\ttestRevAndInvCS(\n\t\t\tprop,\n\t\t\tfunction (in_prop) {\n\t\t\t\tin_prop._properties.data.setRange(1, \"aih\");\n\t\t\t\tin_prop._properties.data.removeRange(6, 5);\n\t\t\t\tin_prop._properties.data.insertRange(0, \"Hi, \");\n\t\t\t},\n\t\t\t{\n\t\t\t\tString: {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmodify: [[1, \"aih\", \"ell\"]],\n\t\t\t\t\t\tremove: [[6, \"world\"]],\n\t\t\t\t\t\tinsert: [[0, \"Hi, \"]],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ String: { data: \"Hi, Haiho \" } },\n\t\t\t{\n\t\t\t\tString: {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmodify: [[5, \"ell\", \"aih\"]],\n\t\t\t\t\t\tremove: [[0, \"Hi, \"]],\n\t\t\t\t\t\tinsert: [[10, \"world\"]],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t});\n\n\tit(\"should work for string properties initialized by insert\", function () {\n\t\tvar prop = PropertyFactory.create(\"autodesk.tests:DataStringTestProperty-1.0.0\");\n\t\tprop._properties.data.insert(0, \"Hello world\");\n\t\ttestRevAndInvCS(\n\t\t\tprop,\n\t\t\tfunction (in_prop) {\n\t\t\t\tin_prop._properties.data.setRange(1, \"aih\");\n\t\t\t\tin_prop._properties.data.removeRange(6, 5);\n\t\t\t\tin_prop._properties.data.insertRange(0, \"Hi, \");\n\t\t\t},\n\t\t\t{\n\t\t\t\tString: {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmodify: [[1, \"aih\", \"ell\"]],\n\t\t\t\t\t\tremove: [[6, \"world\"]],\n\t\t\t\t\t\tinsert: [[0, \"Hi, \"]],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ String: { data: \"Hi, Haiho \" } },\n\t\t\t{\n\t\t\t\tString: {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmodify: [[5, \"ell\", \"aih\"]],\n\t\t\t\t\t\tremove: [[0, \"Hi, \"]],\n\t\t\t\t\t\tinsert: [[10, \"world\"]],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t});\n\n\tit(\"should work for primitive map properties\", function () {\n\t\tvar property = PropertyFactory.create(\"autodesk.tests:MapTestPropertyID-1.0.0\");\n\t\tvar prop = property._properties.data;\n\t\tprop.insert(\"A\", 3);\n\t\tprop.insert(\"B\", 4);\n\t\tprop.insert(\"C\", 5);\n\t\tprop.insert(\"D\", 6);\n\t\ttestRevAndInvCS(\n\t\t\tproperty,\n\t\t\tfunction (myProp) {\n\t\t\t\tmyProp._properties.data.set(\"A\", 7);\n\t\t\t\tmyProp._properties.data.remove(\"B\");\n\t\t\t\tmyProp._properties.data.remove(\"C\");\n\t\t\t\tmyProp._properties.data.set(\"D\", 8);\n\t\t\t\tmyProp._properties.data.insert(\"F\", 9);\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"map<Float32>\": {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tremove: { B: 4, C: 5 },\n\t\t\t\t\t\tmodify: { A: { value: 7, oldValue: 3 }, D: { value: 8, oldValue: 6 } },\n\t\t\t\t\t\tinsert: { F: 9 },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"map<Float32>\": {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tinsert: { A: 7, D: 8, F: 9 },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"map<Float32>\": {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tmodify: { A: { value: 3, oldValue: 7 }, D: { value: 6, oldValue: 8 } },\n\t\t\t\t\t\tinsert: { B: 4, C: 5 },\n\t\t\t\t\t\tremove: { F: 9 },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t});\n\n\tit(\"should work for custom map properties\", function () {\n\t\tvar rootNode = PropertyFactory.create(\"autodesk.tests:MapTestNamedPropertyID-1.0.0\");\n\n\t\tvar A = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\t\tvar B = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\t\tvar C = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\t\tvar D = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\t\trootNode._properties.map.insert(\"A\", A);\n\t\trootNode._properties.map.insert(\"B\", B);\n\t\trootNode._properties.map.insert(\"C\", C);\n\t\trootNode._properties.map.insert(\"D\", D);\n\t\ttestRevAndInvCS(\n\t\t\trootNode,\n\t\t\tfunction (myProp) {\n\t\t\t\tvar F = PropertyFactory.create(\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\");\n\t\t\t\tmyProp._properties.map.remove(\"B\");\n\t\t\t\tmyProp._properties.map.remove(\"C\");\n\t\t\t\tmyProp._properties.map.insert(\"F\", F);\n\t\t\t\tmyProp._properties.map.get(\"A\")._properties.stringProperty.value = \"hello\";\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"map<NamedProperty>\": {\n\t\t\t\t\tmap: {\n\t\t\t\t\t\tinsert: {\n\t\t\t\t\t\t\t\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\": {\n\t\t\t\t\t\t\t\tF: { String: { stringProperty: \"\" } },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tremove: {\n\t\t\t\t\t\t\t\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\": {\n\t\t\t\t\t\t\t\tB: { String: { stringProperty: \"\" } },\n\t\t\t\t\t\t\t\tC: { String: { stringProperty: \"\" } },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmodify: {\n\t\t\t\t\t\t\t\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\": {\n\t\t\t\t\t\t\t\tA: { String: { stringProperty: { value: \"hello\", oldValue: \"\" } } },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\t\"map<NamedProperty>\": {\n\t\t\t\t\tmap: {\n\t\t\t\t\t\tinsert: {\n\t\t\t\t\t\t\t\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\": {\n\t\t\t\t\t\t\t\tB: { String: { stringProperty: \"\" } },\n\t\t\t\t\t\t\t\tC: { String: { stringProperty: \"\" } },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmodify: {\n\t\t\t\t\t\t\t\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\": {\n\t\t\t\t\t\t\t\tA: { String: { stringProperty: { value: \"\", oldValue: \"hello\" } } },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tremove: {\n\t\t\t\t\t\t\t\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\": {\n\t\t\t\t\t\t\t\tF: { String: { stringProperty: \"\" } },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t});\n\n\tit(\"should test reversible changeset for a NodeProperty\", function () {\n\t\tvar originalChangeSet = {\n\t\t\tinsert: {\n\t\t\t\t\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\": {\n\t\t\t\t\tF: { String: { stringProperty: \"\" } },\n\t\t\t\t},\n\t\t\t},\n\t\t\tremove: [\"B\", \"C\"],\n\t\t\tmodify: {\n\t\t\t\t\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\": {\n\t\t\t\t\tA: { String: { stringProperty: \"hello\" } },\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t\tvar parentChangeSet = {\n\t\t\tinsert: {\n\t\t\t\t\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\": {\n\t\t\t\t\tA: { String: { stringProperty: \"\" } },\n\t\t\t\t\tB: { String: { stringProperty: \"\" } },\n\t\t\t\t\tC: { String: { stringProperty: \"\" } },\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tvar changeSet = new ChangeSet(originalChangeSet);\n\t\tchangeSet._toReversibleChangeSet(parentChangeSet);\n\n\t\texpect(changeSet.getSerializedChangeSet()).to.eql({\n\t\t\tinsert: {\n\t\t\t\t\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\": {\n\t\t\t\t\tF: { String: { stringProperty: \"\" } },\n\t\t\t\t},\n\t\t\t},\n\t\t\tremove: {\n\t\t\t\t\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\": {\n\t\t\t\t\tB: { String: { stringProperty: \"\" } },\n\t\t\t\t\tC: { String: { stringProperty: \"\" } },\n\t\t\t\t},\n\t\t\t},\n\t\t\tmodify: {\n\t\t\t\t\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\": {\n\t\t\t\t\tA: {\n\t\t\t\t\t\tString: {\n\t\t\t\t\t\t\tstringProperty: {\n\t\t\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\t\t\toldValue: \"\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\tchangeSet.toInverseChangeSet();\n\n\t\texpect(changeSet.getSerializedChangeSet()).to.eql({\n\t\t\tinsert: {\n\t\t\t\t\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\": {\n\t\t\t\t\tB: { String: { stringProperty: \"\" } },\n\t\t\t\t\tC: { String: { stringProperty: \"\" } },\n\t\t\t\t},\n\t\t\t},\n\t\t\tremove: {\n\t\t\t\t\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\": {\n\t\t\t\t\tF: { String: { stringProperty: \"\" } },\n\t\t\t\t},\n\t\t\t},\n\t\t\tmodify: {\n\t\t\t\t\"autodesk.tests:AnonymousMapTestPropertyID-1.0.0\": {\n\t\t\t\t\tA: {\n\t\t\t\t\t\tString: {\n\t\t\t\t\t\t\tstringProperty: {\n\t\t\t\t\t\t\t\tvalue: \"\",\n\t\t\t\t\t\t\t\toldValue: \"hello\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\tvar originalChangeSet2 = {\n\t\t\tinsert: {\n\t\t\t\t\"mysample:point2d-1.0.0\": {\n\t\t\t\t\t\"7485af0e-c992-af6a-ef36-6a024eb4b4e5---2\": {\n\t\t\t\t\t\tString: {\n\t\t\t\t\t\t\tguid: \"fb5f062f-9f56-55c3-f868-06caa5d8ce26\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFloat64: {\n\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tvar parentChangeSet2 = {};\n\n\t\tvar changeSet2 = new ChangeSet(originalChangeSet2);\n\t\tchangeSet2._toReversibleChangeSet(parentChangeSet2);\n\n\t\texpect(changeSet2.getSerializedChangeSet()).to.eql(changeSet2.getSerializedChangeSet());\n\t\tchangeSet2.toInverseChangeSet();\n\n\t\texpect(changeSet2.getSerializedChangeSet()).to.eql({\n\t\t\tremove: {\n\t\t\t\t\"mysample:point2d-1.0.0\": {\n\t\t\t\t\t\"7485af0e-c992-af6a-ef36-6a024eb4b4e5---2\": {\n\t\t\t\t\t\tString: {\n\t\t\t\t\t\t\tguid: \"fb5f062f-9f56-55c3-f868-06caa5d8ce26\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFloat64: {\n\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t});\n\n\tit(\"should test reversible changeset for an array of non primitive types\", function () {\n\t\tvar originalChangeSet = {\n\t\t\tmodify: {\n\t\t\t\t\"array<mysample:point2d-1.0.0>\": {\n\t\t\t\t\ttest2: {\n\t\t\t\t\t\tmodify: [\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tFloat64: {\n\t\t\t\t\t\t\t\t\t\t\tx: 15.104284463262685,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\ttypeid: \"mysample:point2d-1.0.0\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tvar parentChangeSet = {\n\t\t\tinsert: {\n\t\t\t\t\"mysample:point2d-1.0.0\": {\n\t\t\t\t\ttest: {\n\t\t\t\t\t\tString: {\n\t\t\t\t\t\t\tguid: \"cd36cd32-0bd3-5c55-f94c-b95933fdc58b\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFloat64: {\n\t\t\t\t\t\t\tx: 65.18242364168808,\n\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\"array<mysample:point2d-1.0.0>\": {\n\t\t\t\t\ttest2: {\n\t\t\t\t\t\tinsert: [\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tString: {\n\t\t\t\t\t\t\t\t\t\t\tguid: \"e66540ff-9e5e-d599-033e-d3dd55efc2a3\",\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tFloat64: {\n\t\t\t\t\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\ttypeid: \"mysample:point2d-1.0.0\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tString: {\n\t\t\t\t\t\t\t\t\t\t\tguid: \"daeb5439-baef-7986-f90a-6a3a2f082250\",\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tFloat64: {\n\t\t\t\t\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\ttypeid: \"mysample:point2d-1.0.0\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\ttest3: {},\n\t\t\t\t},\n\t\t\t},\n\t\t\tinsertTemplates: {\n\t\t\t\t\"mysample:point2d-1.0.0\": {\n\t\t\t\t\ttypeid: \"mysample:point2d-1.0.0\",\n\t\t\t\t\tinherits: \"NamedProperty\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"x\",\n\t\t\t\t\t\t\ttypeid: \"Float64\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"y\",\n\t\t\t\t\t\t\ttypeid: \"Float64\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tvar changeSet = new ChangeSet(originalChangeSet);\n\t\tchangeSet._toReversibleChangeSet(parentChangeSet);\n\n\t\texpect(changeSet.getSerializedChangeSet()).to.eql({\n\t\t\tmodify: {\n\t\t\t\t\"array<mysample:point2d-1.0.0>\": {\n\t\t\t\t\ttest2: {\n\t\t\t\t\t\tmodify: [\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tFloat64: {\n\t\t\t\t\t\t\t\t\t\t\tx: {\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: 15.104284463262685,\n\t\t\t\t\t\t\t\t\t\t\t\toldValue: 0,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\ttypeid: \"mysample:point2d-1.0.0\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\tchangeSet.toInverseChangeSet();\n\n\t\texpect(changeSet.getSerializedChangeSet()).to.eql({\n\t\t\tmodify: {\n\t\t\t\t\"array<mysample:point2d-1.0.0>\": {\n\t\t\t\t\ttest2: {\n\t\t\t\t\t\tmodify: [\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tFloat64: {\n\t\t\t\t\t\t\t\t\t\t\tx: {\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: 0,\n\t\t\t\t\t\t\t\t\t\t\t\toldValue: 15.104284463262685,\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\ttypeid: \"mysample:point2d-1.0.0\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t});\n\n\tit(\"should correctly reverse inserts of strings\", function () {\n\t\tlet CS = new ChangeSet({\n\t\t\tinsert: {\n\t\t\t\tString: {\n\t\t\t\t\ttest: \"xxx\",\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t\tCS.toInverseChangeSet();\n\t\texpect(CS.getSerializedChangeSet()).to.deep.equal({\n\t\t\tremove: {\n\t\t\t\tString: {\n\t\t\t\t\ttest: \"xxx\",\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t});\n\n\tit(\"should correctly reverse inserts of literal strings within NodeProperties\", function () {\n\t\tlet CS = new ChangeSet({\n\t\t\tmodify: {\n\t\t\t\tNodeProperty: {\n\t\t\t\t\ttest: {\n\t\t\t\t\t\tinsert: {\n\t\t\t\t\t\t\tString: {\n\t\t\t\t\t\t\t\ttest: \"xxx\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t\tCS.toInverseChangeSet();\n\t\texpect(CS.getSerializedChangeSet()).to.deep.equal({\n\t\t\tmodify: {\n\t\t\t\tNodeProperty: {\n\t\t\t\t\ttest: {\n\t\t\t\t\t\tremove: {\n\t\t\t\t\t\t\tString: {\n\t\t\t\t\t\t\t\ttest: \"xxx\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t});\n\n\tit(\"@regression should not fail when building reversible change sets\", function () {\n\t\tvar parentChangeSet =\n\t\t\trequire(\"./validation/reversibleChangeSetTestData.js\").parentChangeSet;\n\t\tvar originalChangeSet =\n\t\t\trequire(\"./validation/reversibleChangeSetTestData.js\").originalChangeSet;\n\n\t\tvar changeSet = new ChangeSet(originalChangeSet);\n\t\tchangeSet._toReversibleChangeSet(parentChangeSet);\n\t});\n\n\tit(\"@regression should not fail when creating a reversible change set\", function () {\n\t\tvar cs = {\n\t\t\tmodify: {\n\t\t\t\t\"autodesk.compute:graph-1.0.0\": {\n\t\t\t\t\t\"5eb6ebe1-92c8-52fa-984b-b0b65c46d2a7\": {\n\t\t\t\t\t\t\"map<autodesk.compute:node-2.0.0>\": {\n\t\t\t\t\t\t\tcomputeNodes: {\n\t\t\t\t\t\t\t\tmodify: {\n\t\t\t\t\t\t\t\t\t\"autodesk.compute:fanOut-1.0.0\": {\n\t\t\t\t\t\t\t\t\t\t\"a7e7d213-1202-9ee4-a3c1-8a33d6f36122\": {\n\t\t\t\t\t\t\t\t\t\t\t\"autodesk.compute:context-1.0.0\": {\n\t\t\t\t\t\t\t\t\t\t\t\tcomputeContext: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"Reference<autodesk.compute:resource-2.0.0>\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresource:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"/8ce10fdd-b2b6-7152-21dc-c0e199b579e3\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"map<autodesk.compute:node-2.0.0>\": {\n\t\t\t\t\t\t\t\t\t\t\t\tcomputeNodes: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodify: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"autodesk.test:testCN-1.0.0\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"1e924300-92ef-eaad-391f-53b77fe01099\":\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"enum<Enum>\": { status: 1 },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"autodesk.compute:context-1.0.0\":\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomputeContext: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Reference<autodesk.compute:resource-2.0.0>\":\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresource:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"/c1a811ea-608e-5fcc-1487-c74ab6939dee\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Reference<autodesk.core:user-1.0.0>\":\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"inputs.input\":\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"/5eb6ebe1-92c8-52fa-984b-b0b65c46d2a7.computeNodes[a7e7d213-1202-9ee4-a3c1-8a33d6f36122]\" +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\".intermediateProperties[2c06da5c-8614-e9c2-3bd6-75ae739eba4f]\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t\tvar parent = {\n\t\t\tinsert: {\n\t\t\t\t\"autodesk.compute:graph-1.0.0\": {\n\t\t\t\t\t\"5eb6ebe1-92c8-52fa-984b-b0b65c46d2a7\": {\n\t\t\t\t\t\t\"map<autodesk.compute:node-2.0.0>\": {\n\t\t\t\t\t\t\tcomputeNodes: {\n\t\t\t\t\t\t\t\tinsert: {\n\t\t\t\t\t\t\t\t\t\"autodesk.compute:fanOut-1.0.0\": {\n\t\t\t\t\t\t\t\t\t\t\"a7e7d213-1202-9ee4-a3c1-8a33d6f36122\": {\n\t\t\t\t\t\t\t\t\t\t\t\"autodesk.compute:context-1.0.0\": {\n\t\t\t\t\t\t\t\t\t\t\t\tcomputeContext: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"Reference<autodesk.compute:resource-2.0.0>\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresource: \"\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"map<autodesk.compute:node-2.0.0>\": {\n\t\t\t\t\t\t\t\t\t\t\t\tcomputeNodes: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tinsert: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"autodesk.test:testCN-1.0.0\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"1e924300-92ef-eaad-391f-53b77fe01099\":\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"enum<Enum>\": { status: 0 },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"autodesk.compute:context-1.0.0\":\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomputeContext: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Reference<autodesk.compute:resource-2.0.0>\":\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresource:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Reference<autodesk.core:user-1.0.0>\":\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ \"inputs.input\": \"\" },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tvar b = new ChangeSet(cs);\n\t\tb._toReversibleChangeSet(parent);\n\t});\n});\n"]}
|