@fluid-experimental/property-properties 2.93.0 → 2.101.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.
Files changed (30) hide show
  1. package/dist/test/properties/arrayProperty.spec.js +11 -12
  2. package/dist/test/properties/arrayProperty.spec.js.map +1 -1
  3. package/dist/test/properties/baseProperty.spec.js +4 -1
  4. package/dist/test/properties/baseProperty.spec.js.map +1 -1
  5. package/dist/test/properties/containerProperty.spec.js +1 -1
  6. package/dist/test/properties/containerProperty.spec.js.map +1 -1
  7. package/dist/test/properties/customArrayProperty.spec.js +2 -2
  8. package/dist/test/properties/customArrayProperty.spec.js.map +1 -1
  9. package/dist/test/properties/int64ArrayProperty.spec.js +4 -4
  10. package/dist/test/properties/int64ArrayProperty.spec.js.map +1 -1
  11. package/dist/test/properties/int64Property.spec.js +2 -2
  12. package/dist/test/properties/int64Property.spec.js.map +1 -1
  13. package/dist/test/properties/isLeafNode.spec.js +1 -7
  14. package/dist/test/properties/isLeafNode.spec.js.map +1 -1
  15. package/dist/test/properties/namedNodeProperty.spec.js +1 -2
  16. package/dist/test/properties/namedNodeProperty.spec.js.map +1 -1
  17. package/dist/test/properties/nodeProperty.spec.js +1 -1
  18. package/dist/test/properties/nodeProperty.spec.js.map +1 -1
  19. package/dist/test/properties/stringProperty.spec.js +6 -5
  20. package/dist/test/properties/stringProperty.spec.js.map +1 -1
  21. package/dist/test/properties/valueMapProperty.spec.js +8 -3
  22. package/dist/test/properties/valueMapProperty.spec.js.map +1 -1
  23. package/dist/test/properties/valueProperty.spec.js +5 -1
  24. package/dist/test/properties/valueProperty.spec.js.map +1 -1
  25. package/dist/test/propertyFactory.spec.js +15 -10
  26. package/dist/test/propertyFactory.spec.js.map +1 -1
  27. package/dist/test/tsconfig.tsbuildinfo +1 -1
  28. package/dist/test/utils.spec.js +13 -7
  29. package/dist/test/utils.spec.js.map +1 -1
  30. package/package.json +7 -6
@@ -1 +1 @@
1
- {"version":3,"file":"customArrayProperty.spec.js","sourceRoot":"","sources":["../../../src/test/properties/customArrayProperty.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\n/**\n * @fileoverview In this file, we will test the functions of a BaseProperty object\n * described in /src/properties/baseProperty.js\n */\n\nvar PropertyFactory,\n\tBaseProperty,\n\tOurTestTemplate,\n\tOurArrayTestTemplate2,\n\terror,\n\tDeterministicRandomGenerator,\n\t_,\n\tChangeSet,\n\tdeepCopy;\n\nvar possibleChanges = {\n\t0: \"insert\",\n\t1: \"modify\",\n\t2: \"remove\",\n\t3: \"set\",\n};\n\nvar createTestArrayProp = function () {\n\treturn PropertyFactory.create(\"autodesk.tests:CustomArrayTestID-1.0.0\")._properties\n\t\t.MyCustomArray;\n};\n\nvar createRandomProperty = function () {\n\tvar node1 = PropertyFactory.create(\"autodesk.tests:TestID-1.0.0\");\n\tnode1._properties.MyFloatProp.value = Math.random() * 100;\n\tnode1._properties.MyIntProp.value = Math.random() * 100;\n\treturn node1;\n};\n\ndescribe(\"CustomArrayProperty\", function () {\n\t/**\n\t * Get all the objects we need in this test here.\n\t */\n\tbefore(function () {\n\t\tPropertyFactory = require(\"../..\").PropertyFactory;\n\t\tBaseProperty = require(\"../..\").BaseProperty;\n\t\tDeterministicRandomGenerator =\n\t\t\trequire(\"@fluid-experimental/property-common\").DeterministicRandomGenerator;\n\t\tChangeSet = require(\"@fluid-experimental/property-changeset\").ChangeSet;\n\t\t_ = require(\"lodash\");\n\t\tdeepCopy = _.cloneDeep;\n\n\t\tOurTestTemplate = {\n\t\t\ttypeid: \"autodesk.tests:TestID-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"MyFloatProp\",\n\t\t\t\t\ttypeid: \"Float32\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: \"MyIntProp\",\n\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t\tPropertyFactory._reregister(OurTestTemplate);\n\n\t\tOurArrayTestTemplate2 = {\n\t\t\ttypeid: \"autodesk.tests:CustomArrayTestID-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{ id: \"MyCustomArray\", typeid: \"autodesk.tests:TestID-1.0.0\", context: \"array\" },\n\t\t\t\t{ id: \"SomeOtherProperty\", typeid: \"String\" },\n\t\t\t],\n\t\t};\n\t\tPropertyFactory._reregister(OurArrayTestTemplate2);\n\n\t\tvar NamedPropertyWithStringTemplate = {\n\t\t\ttypeid: \"autodesk.tests:Array.NamedPropertyWithString-1.0.0\",\n\t\t\tinherits: \"NamedProperty\",\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"stringProperty\",\n\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t\tPropertyFactory._reregister(NamedPropertyWithStringTemplate);\n\t});\n\n\tdescribe(\"Checking the generalized squash function of a CustomPropertyArrayProperty\", function () {\n\t\tit(\"[random number test] should be squashed to the expected changeset\", function (done) {\n\t\t\ttry {\n\t\t\t\tvar arrayProp = createTestArrayProp();\n\n\t\t\t\tvar currentArrayLength = 0;\n\n\t\t\t\tarrayProp.insertRange(0, [\n\t\t\t\t\tcreateRandomProperty(),\n\t\t\t\t\tcreateRandomProperty(),\n\t\t\t\t\tcreateRandomProperty(),\n\t\t\t\t\tcreateRandomProperty(),\n\t\t\t\t]);\n\t\t\t\tarrayProp.cleanDirty();\n\n\t\t\t\t// Create a copy of this state\n\t\t\t\tvar arrayPropCopy = createTestArrayProp();\n\t\t\t\tarrayPropCopy.deserialize(arrayProp.serialize({ dirtyOnly: false }));\n\t\t\t\tarrayPropCopy.cleanDirty();\n\n\t\t\t\tfor (var i = 0; i < 500; ++i) {\n\t\t\t\t\tcurrentArrayLength = arrayProp.length;\n\t\t\t\t\tvar nextOpType = \"insert\";\n\t\t\t\t\tvar opOffset = 0;\n\n\t\t\t\t\tif (currentArrayLength > 0) {\n\t\t\t\t\t\tnextOpType = possibleChanges[Math.floor(Math.random() * 4)];\n\t\t\t\t\t\topOffset = Math.min(\n\t\t\t\t\t\t\tMath.floor(Math.random() * currentArrayLength),\n\t\t\t\t\t\t\tcurrentArrayLength - 1,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tvar opLength =\n\t\t\t\t\t\t1 +\n\t\t\t\t\t\tMath.min(\n\t\t\t\t\t\t\tMath.floor(Math.random() * (currentArrayLength - opOffset)),\n\t\t\t\t\t\t\tcurrentArrayLength - opOffset - 1,\n\t\t\t\t\t\t);\n\n\t\t\t\t\tswitch (nextOpType) {\n\t\t\t\t\t\tcase \"remove\": {\n\t\t\t\t\t\t\tarrayProp.removeRange(opOffset, opLength);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"insert\": {\n\t\t\t\t\t\t\tarrayProp.insertRange(opOffset, [createRandomProperty()]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"modify\": {\n\t\t\t\t\t\t\tvar childProperty = arrayProp.get(opOffset);\n\t\t\t\t\t\t\tchildProperty._properties.MyFloatProp.value = Math.random() * 100;\n\t\t\t\t\t\t\tchildProperty._properties.MyIntProp.value = Math.random() * 100;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"set\": {\n\t\t\t\t\t\t\tarrayProp.set(opOffset, createRandomProperty());\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// no default\n\t\t\t\t\t}\n\n\t\t\t\t\tvar serializedDirtyChanges = arrayProp.serialize({\n\t\t\t\t\t\tdirtyOnly: true,\n\t\t\t\t\t\tincludeRootTypeid: false,\n\t\t\t\t\t\tdirtinessType: BaseProperty.MODIFIED_STATE_FLAGS.DIRTY,\n\t\t\t\t\t});\n\t\t\t\t\tvar arrayPropTest = createTestArrayProp();\n\t\t\t\t\tarrayPropTest.deserialize(arrayPropCopy.serialize({ dirtyOnly: false }));\n\t\t\t\t\tarrayPropTest.cleanDirty();\n\t\t\t\t\tarrayPropTest.applyChangeSet(serializedDirtyChanges);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t} finally {\n\t\t\t\texpect(error).to.equal(undefined);\n\t\t\t\texpect(arrayProp).to.not.equal(null);\n\t\t\t\texpect(arrayProp.serialize({ dirtyOnly: false })).to.deep.equal(\n\t\t\t\t\tarrayPropTest.serialize({ dirtyOnly: false }),\n\t\t\t\t);\n\t\t\t\tdone();\n\t\t\t}\n\t\t});\n\t});\n\n\tdescribe(\"Path resolution\", function () {\n\t\tit(\"should work for array properties\", function () {\n\t\t\tvar arrayParent = PropertyFactory.create(\"autodesk.tests:CustomArrayTestID-1.0.0\");\n\t\t\tvar arrayProp = arrayParent._properties.MyCustomArray;\n\n\t\t\t// prepare initial state\n\t\t\tvar entries = [];\n\t\t\tfor (var i = 0; i < 10; i++) {\n\t\t\t\tvar entry = PropertyFactory.create(\"autodesk.tests:TestID-1.0.0\");\n\t\t\t\tentry._properties.MyIntProp.value = i;\n\t\t\t\tentries.push(entry);\n\t\t\t}\n\n\t\t\tarrayParent._properties.MyCustomArray.insertRange(0, entries);\n\n\t\t\t// Make sure that arrray access works\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[0]\")._properties.MyIntProp.value).to.equal(\n\t\t\t\t0,\n\t\t\t);\n\t\t\texpect(arrayProp.resolvePath(\"[2]\")._properties.MyIntProp.value).to.equal(2);\n\n\t\t\t// Test out of bounds access\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[-1]\")).to.be.undefined;\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[10]\")).to.be.undefined;\n\n\t\t\tvar myTestArrayProp = arrayProp.get(5);\n\t\t\texpect(myTestArrayProp.getAbsolutePath()).to.equal(\"/MyCustomArray[5]\");\n\t\t\texpect(myTestArrayProp.getRelativePath(arrayProp)).to.equal(\"[5]\");\n\n\t\t\t// Test exception on parsing error\n\t\t\texpect(function () {\n\t\t\t\tarrayParent.resolvePath('MyCustomArray[\"abcd\"]');\n\t\t\t}).to.throw();\n\n\t\t\t// Test path resolution after insertion\n\t\t\tvar newEntry = PropertyFactory.create(\"autodesk.tests:TestID-1.0.0\");\n\t\t\tnewEntry._properties.MyIntProp.value = -1;\n\t\t\tarrayParent._properties.MyCustomArray.insertRange(0, [newEntry]);\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[0]\")._properties.MyIntProp.value).to.equal(\n\t\t\t\t-1,\n\t\t\t);\n\t\t\texpect(myTestArrayProp.getAbsolutePath()).to.equal(\"/MyCustomArray[6]\");\n\n\t\t\t// Test path resolution after setting\n\t\t\t// TODO: set currently broken\n\t\t\tvar newEntry2 = PropertyFactory.create(\"autodesk.tests:TestID-1.0.0\");\n\t\t\tnewEntry2._properties.MyIntProp.value = -2;\n\t\t\tarrayParent._properties.MyCustomArray.set(0, newEntry2);\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[0]\")._properties.MyIntProp.value).to.equal(\n\t\t\t\t-2,\n\t\t\t);\n\n\t\t\t// Test path resolution after removal\n\t\t\tarrayParent._properties.MyCustomArray.removeRange(0, 1);\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[0]\")._properties.MyIntProp.value).to.equal(\n\t\t\t\t0,\n\t\t\t);\n\t\t\texpect(myTestArrayProp.getAbsolutePath()).to.equal(\"/MyCustomArray[5]\");\n\n\t\t\t// Test path resolution after insertion via applyChangeSet\n\t\t\tarrayParent._properties.MyCustomArray.applyChangeSet({\n\t\t\t\tinsert: [\n\t\t\t\t\t[\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttypeid: \"autodesk.tests:TestID-1.0.0\",\n\t\t\t\t\t\t\t\tFloat32: {\n\t\t\t\t\t\t\t\t\tMyFloatProp: 16,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tInt32: {\n\t\t\t\t\t\t\t\t\tMyIntProp: 17,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttypeid: \"autodesk.tests:TestID-1.0.0\",\n\t\t\t\t\t\t\t\tFloat32: {\n\t\t\t\t\t\t\t\t\tMyFloatProp: 18,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tInt32: {\n\t\t\t\t\t\t\t\t\tMyIntProp: 19,\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\texpect(arrayParent.resolvePath(\"MyCustomArray[0]\")._properties.MyIntProp.value).to.equal(\n\t\t\t\t17,\n\t\t\t);\n\t\t\texpect(myTestArrayProp.getAbsolutePath()).to.equal(\"/MyCustomArray[7]\");\n\n\t\t\tvar serialied = arrayParent._properties.MyCustomArray.serialize({ dirtyOnly: false });\n\n\t\t\t// Test path resolution after removal\n\t\t\tarrayParent._properties.MyCustomArray.applyChangeSet({\n\t\t\t\tremove: [[0, 1]],\n\t\t\t});\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[0]\")._properties.MyIntProp.value).to.equal(\n\t\t\t\t19,\n\t\t\t);\n\t\t\texpect(myTestArrayProp.getAbsolutePath()).to.equal(\"/MyCustomArray[6]\");\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[11]\")).to.be.undefined;\n\n\t\t\t// Test Path resolution after deserialize\n\t\t\tarrayParent._properties.MyCustomArray.deserialize(serialied);\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[0]\")._properties.MyIntProp.value).to.equal(\n\t\t\t\t17,\n\t\t\t);\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[11]\")).not.to.be.undefined;\n\n\t\t\tarrayParent._properties.MyCustomArray.deserialize({});\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[0]\")).to.be.undefined;\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[11]\")).to.be.undefined;\n\n\t\t\t// Try multiple levels\n\t\t\tvar leaf = PropertyFactory.create(\"NodeProperty\");\n\t\t\texpect(leaf.resolvePath(\"/\")).to.equal(leaf);\n\t\t\tvar array1 = PropertyFactory.create(\"NodeProperty\", \"array\");\n\t\t\tarray1.push(leaf);\n\t\t\texpect(leaf.resolvePath(\"/\")).to.equal(array1);\n\n\t\t\tvar array2 = PropertyFactory.create(undefined, \"array\");\n\t\t\tarray2.push(array1);\n\t\t\texpect(leaf.resolvePath(\"/\")).to.equal(array2);\n\n\t\t\tvar array3 = PropertyFactory.create(undefined, \"array\");\n\t\t\tarray3.push(array2);\n\t\t\texpect(leaf.resolvePath(\"/\")).to.equal(array3);\n\t\t});\n\t});\n\n\tdescribe(\"Sized arrays\", function () {\n\t\t// Test fix for an issue where custom array templates with non-zero sizes\n\t\t// resulted in the array initially containing objects without a parent.\n\t\tit(\"should work for custom array property templates with size specified\", function () {\n\t\t\tvar TestString = {\n\t\t\t\ttypeid: \"autodesk.test:test.string-1.0.0\",\n\t\t\t\tproperties: [{ id: \"data\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar TestCustomArray = {\n\t\t\t\ttypeid: \"autodesk.test:test.customarray-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"data\",\n\t\t\t\t\t\ttypeid: \"autodesk.test:test.string-1.0.0\",\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\tlength: 3,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tPropertyFactory._reregister(TestString);\n\t\t\tPropertyFactory._reregister(TestCustomArray);\n\n\t\t\tvar sizedArray = PropertyFactory.create(\"autodesk.test:test.customarray-1.0.0\");\n\t\t\t// Prior to the fix to properly parent initial elements, clear() would result in an exception with\n\t\t\t// the message 'Trying to remove a property from an array that has not the array as parent.'\n\t\t\tvar clearArrayFn = function () {\n\t\t\t\tsizedArray.resolvePath(\"data\").clear();\n\t\t\t};\n\t\t\texpect(clearArrayFn).to.not.throw();\n\t\t});\n\t});\n\n\tdescribe(\"Commit\", function () {\n\t\t/* it('should not appear in the changeset when committing a change on its sibling', function() {\n // TODO: This test cannot be implemented in Fluid\n let cm = new HFDM();\n let workspace = cm.createWorkspace();\n let checkoutView = workspace._getCheckoutView();\n let pset = PropertyFactory.create('autodesk.tests:CustomArrayTestID-1.0.0');\n\n return cm._createRepository({local: true}).then(function(params) {\n return cm._checkoutAttempt(params.branch.getUrn(), checkoutView);\n }).then(function() {\n checkoutView.getRoot().insert('pset', pset);\n return cm._commit(null, checkoutView);\n }).then(function(commitNode) {\n\n checkoutView.register('modified', function(cv, changeSet) {\n expect(changeSet).to.not.be.undefined;\n expect(\n changeSet.getSerializedChangeSet()\n .modify['autodesk.tests:CustomArrayTestID-1.0.0']['array<autodesk.tests:TestID-1.0.0>']\n ).to.not.exist;\n });\n checkoutView.getRoot().resolvePath('pset.SomeOtherProperty').setValue('foobar');\n return cm._commit(null, checkoutView);\n });\n }); */\n\n\t\tdescribe(\"Nested collections\", function () {\n\t\t\tit(\"should support squashing of nested maps\", function () {\n\t\t\t\tvar nodeProp = PropertyFactory.create(\"NodeProperty\");\n\t\t\t\tvar arrayProp = PropertyFactory.create(\"array<BaseProperty>\");\n\t\t\t\tvar testMap = PropertyFactory.create(\"map<Bool>\");\n\n\t\t\t\tnodeProp.insert(\"array\", arrayProp);\n\t\t\t\ttestMap.set(\"test\", true);\n\t\t\t\tarrayProp.push(testMap);\n\t\t\t\tvar CS1 = nodeProp.serialize({ dirtyOnly: false });\n\n\t\t\t\tnodeProp.cleanDirty();\n\t\t\t\ttestMap.set(\"test\", false);\n\t\t\t\tvar CS2 = nodeProp.serialize({ dirtyOnly: true });\n\n\t\t\t\tvar CS = new ChangeSet(CS1);\n\t\t\t\tCS.applyChangeSet(new ChangeSet(CS2));\n\t\t\t\tvar arrayChanges = CS.getSerializedChangeSet().insert[\"array<>\"].array;\n\t\t\t\texpect(arrayChanges.insert[0][1][0]).to.have.all.keys(\"insert\", \"typeid\");\n\t\t\t\texpect(arrayChanges.insert[0][1][0].insert[\"test\"]).to.equal(false);\n\t\t\t});\n\n\t\t\tit(\"should support basic rebasing of nested maps\", function () {\n\t\t\t\tvar nodeProp = PropertyFactory.create(\"NodeProperty\");\n\t\t\t\tvar arrayProp = PropertyFactory.create(\"array<BaseProperty>\");\n\t\t\t\tvar testMap = PropertyFactory.create(\"map<Bool>\");\n\n\t\t\t\tnodeProp.insert(\"array\", arrayProp);\n\t\t\t\ttestMap.set(\"test\", true);\n\t\t\t\tarrayProp.push(testMap);\n\n\t\t\t\tnodeProp.cleanDirty();\n\t\t\t\ttestMap.set(\"test\", false);\n\t\t\t\tvar CS1 = nodeProp.serialize({ dirtyOnly: true });\n\t\t\t\tvar CS2 = deepCopy(CS1);\n\n\t\t\t\tvar CS = new ChangeSet(CS1);\n\t\t\t\tvar conflicts = [];\n\t\t\t\tCS._rebaseChangeSet(CS2, conflicts);\n\t\t\t\texpect(conflicts.length).to.equal(1);\n\t\t\t\texpect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);\n\t\t\t\texpect(conflicts[0].path).to.be.equal(\"array[0][test]\");\n\t\t\t});\n\n\t\t\tit(\"should be deserializable\", function () {\n\t\t\t\tvar testArray = PropertyFactory.create(\"array<>\");\n\t\t\t\ttestArray.push(PropertyFactory.create(\"array<>\"));\n\t\t\t\tvar serialized = testArray.serialize({ dirtyOnly: false });\n\n\t\t\t\tvar testArray2 = PropertyFactory.create(\"array<>\");\n\t\t\t\ttestArray2.deserialize(serialized);\n\t\t\t\texpect(testArray2.serialize({ dirtyOnly: false })).to.deep.equal(\n\t\t\t\t\ttestArray.serialize({ dirtyOnly: false }),\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"deserialize\", function () {\n\t\t\t// Returns a sequence of random NamedProperties\n\t\t\tvar createRandomEntries = function (in_count) {\n\t\t\t\treturn _.map(_.range(in_count), function () {\n\t\t\t\t\tvar property = PropertyFactory.create(\n\t\t\t\t\t\t\"autodesk.tests:Array.NamedPropertyWithString-1.0.0\",\n\t\t\t\t\t);\n\t\t\t\t\tproperty._properties.stringProperty.value = \"initial\";\n\t\t\t\t\treturn property;\n\t\t\t\t});\n\t\t\t};\n\n\t\t\t// Manually copy the array (we don't use deserialize for the copy\n\t\t\t// here since we want to test that function below and don't want\n\t\t\t// an error here to affect the comparison)\n\t\t\tvar manuallyCopyArray = function (arrayProperty) {\n\t\t\t\tvar copiedArray = PropertyFactory.create(\n\t\t\t\t\t\"autodesk.tests:Array.NamedPropertyWithString-1.0.0\",\n\t\t\t\t\t\"array\",\n\t\t\t\t);\n\t\t\t\tvar copiedEntries = _.map(arrayProperty.getEntriesReadOnly(), function (entry) {\n\t\t\t\t\t// Create a named property with the same guid\n\t\t\t\t\tvar newNode = PropertyFactory.create(\n\t\t\t\t\t\t\"autodesk.tests:Array.NamedPropertyWithString-1.0.0\",\n\t\t\t\t\t);\n\t\t\t\t\tnewNode._properties.guid.value = entry.getGuid();\n\t\t\t\t\tnewNode._properties.stringProperty.value = entry._properties.stringProperty.value;\n\t\t\t\t\treturn newNode;\n\t\t\t\t});\n\t\t\t\tcopiedArray.insertRange(0, copiedEntries);\n\n\t\t\t\treturn copiedArray;\n\t\t\t};\n\n\t\t\t// Prepare the initial state\n\t\t\tvar initializeArrayForComparison = function (in_count) {\n\t\t\t\t// Create an array with named properties\n\t\t\t\tvar arrayProperty = PropertyFactory.create(\"NamedProperty\", \"array\");\n\t\t\t\tvar entries = createRandomEntries(in_count);\n\t\t\t\tarrayProperty.insertRange(0, entries);\n\n\t\t\t\tvar copiedArray = manuallyCopyArray(arrayProperty);\n\n\t\t\t\treturn {\n\t\t\t\t\toriginal: arrayProperty,\n\t\t\t\t\tcopy: copiedArray,\n\t\t\t\t};\n\t\t\t};\n\n\t\t\t// Counts the changes in the array\n\t\t\tvar countChanges = function (in_testArray) {\n\t\t\t\t// First create a copy of the copy to check afterwards whether the changeset is correct\n\t\t\t\tvar copy2 = manuallyCopyArray(in_testArray.copy);\n\n\t\t\t\t// deserialize the changes into the copied array property\n\t\t\t\tin_testArray.copy.cleanDirty();\n\t\t\t\tvar deserialized = in_testArray.copy.deserialize(\n\t\t\t\t\tin_testArray.original.serialize({ dirtyOnly: false }),\n\t\t\t\t);\n\n\t\t\t\texpect(in_testArray.copy.serialize({ dirtyOnly: false })).to.deep.equal(\n\t\t\t\t\tin_testArray.original.serialize({ dirtyOnly: false }),\n\t\t\t\t);\n\t\t\t\texpect(deserialized).to.deep.equal(in_testArray.copy.serialize({ dirtyOnly: true }));\n\n\t\t\t\t// Make sure the returned ChangeSet is correct\n\t\t\t\tcopy2.applyChangeSet(deserialized);\n\t\t\t\texpect(copy2.serialize({ dirtyOnly: false })).to.deep.equal(\n\t\t\t\t\tin_testArray.original.serialize({ dirtyOnly: false }),\n\t\t\t\t);\n\n\t\t\t\t// Count insert, modify and remove operations\n\t\t\t\tvar insertedCount = _.reduce(\n\t\t\t\t\tdeserialized.insert,\n\t\t\t\t\tfunction (last, insertedRange) {\n\t\t\t\t\t\treturn last + insertedRange[1].length;\n\t\t\t\t\t},\n\t\t\t\t\t0,\n\t\t\t\t);\n\t\t\t\tvar removedCount = _.reduce(\n\t\t\t\t\tdeserialized.remove,\n\t\t\t\t\tfunction (last, removedRange) {\n\t\t\t\t\t\treturn last + removedRange[1];\n\t\t\t\t\t},\n\t\t\t\t\t0,\n\t\t\t\t);\n\t\t\t\tvar modifiedCount = _.reduce(\n\t\t\t\t\tdeserialized.modify,\n\t\t\t\t\tfunction (last, modifiedRange) {\n\t\t\t\t\t\treturn last + modifiedRange[1].length;\n\t\t\t\t\t},\n\t\t\t\t\t0,\n\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\tinsertedCount: insertedCount,\n\t\t\t\t\tremovedCount: removedCount,\n\t\t\t\t\tmodifiedCount: modifiedCount,\n\t\t\t\t\ttotalCount: insertedCount + removedCount + modifiedCount,\n\t\t\t\t\tinsertedRanges: deserialized.insert ? deserialized.insert.length : 0,\n\t\t\t\t\tremovedRanges: deserialized.remove ? deserialized.remove.length : 0,\n\t\t\t\t\tmodifiedRanges: deserialized.modify ? deserialized.modify.length : 0,\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tit(\"should report an empty ChangeSet for deserialize without changes\", function () {\n\t\t\t\tvar testArray = initializeArrayForComparison(50);\n\n\t\t\t\t// Check the returned ChangeSet\n\t\t\t\tvar changed = countChanges(testArray);\n\t\t\t\texpect(changed).to.deep.equal({\n\t\t\t\t\tinsertedCount: 0,\n\t\t\t\t\tremovedCount: 0,\n\t\t\t\t\tmodifiedCount: 0,\n\t\t\t\t\ttotalCount: 0,\n\t\t\t\t\tinsertedRanges: 0,\n\t\t\t\t\tremovedRanges: 0,\n\t\t\t\t\tmodifiedRanges: 0,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(\"should report an empty ChangeSet for a length 0 array\", function () {\n\t\t\t\tvar testArray = initializeArrayForComparison(0);\n\n\t\t\t\t// Check the returned ChangeSet\n\t\t\t\tvar changed = countChanges(testArray);\n\t\t\t\texpect(changed).to.deep.equal({\n\t\t\t\t\tinsertedCount: 0,\n\t\t\t\t\tremovedCount: 0,\n\t\t\t\t\tmodifiedCount: 0,\n\t\t\t\t\ttotalCount: 0,\n\t\t\t\t\tinsertedRanges: 0,\n\t\t\t\t\tremovedRanges: 0,\n\t\t\t\t\tmodifiedRanges: 0,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(\"should report a compact ChangeSet for simple move in an array of NamedProperties\", function () {\n\t\t\t\tvar testArray = initializeArrayForComparison(50);\n\n\t\t\t\t// Move a segment in the array\n\t\t\t\tvar entries = [\n\t\t\t\t\ttestArray.original.get(45),\n\t\t\t\t\ttestArray.original.get(46),\n\t\t\t\t\ttestArray.original.get(47),\n\t\t\t\t];\n\t\t\t\ttestArray.original.removeRange(45, 3);\n\t\t\t\ttestArray.original.insertRange(3, entries);\n\n\t\t\t\t// Check the returned ChangeSet\n\t\t\t\tvar changed = countChanges(testArray);\n\t\t\t\texpect(changed).to.deep.equal({\n\t\t\t\t\tinsertedCount: 3,\n\t\t\t\t\tremovedCount: 3,\n\t\t\t\t\tmodifiedCount: 0,\n\t\t\t\t\ttotalCount: 6,\n\t\t\t\t\tinsertedRanges: 1,\n\t\t\t\t\tremovedRanges: 1,\n\t\t\t\t\tmodifiedRanges: 0,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(\"should report a compact ChangeSet for simple inserts in an array of NamedProperties\", function () {\n\t\t\t\tvar testArray = initializeArrayForComparison(50);\n\n\t\t\t\ttestArray.original.insertRange(0, createRandomEntries(5));\n\t\t\t\ttestArray.original.insertRange(25, createRandomEntries(5));\n\t\t\t\ttestArray.original.insertRange(testArray.original.length, createRandomEntries(5));\n\n\t\t\t\tvar changed = countChanges(testArray);\n\t\t\t\texpect(changed).to.deep.equal({\n\t\t\t\t\tinsertedCount: 15,\n\t\t\t\t\tremovedCount: 0,\n\t\t\t\t\tmodifiedCount: 0,\n\t\t\t\t\ttotalCount: 15,\n\t\t\t\t\tinsertedRanges: 3,\n\t\t\t\t\tremovedRanges: 0,\n\t\t\t\t\tmodifiedRanges: 0,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(\"should report a compact ChangeSet for simple removes in an array of NamedProperties\", function () {\n\t\t\t\tvar testArray = initializeArrayForComparison(50);\n\n\t\t\t\ttestArray.original.removeRange(0, 5);\n\t\t\t\ttestArray.original.removeRange(15, 5);\n\t\t\t\ttestArray.original.removeRange(testArray.original.length - 5, 5);\n\n\t\t\t\tvar changed = countChanges(testArray);\n\t\t\t\texpect(changed).to.deep.equal({\n\t\t\t\t\tinsertedCount: 0,\n\t\t\t\t\tremovedCount: 15,\n\t\t\t\t\tmodifiedCount: 0,\n\t\t\t\t\ttotalCount: 15,\n\t\t\t\t\tinsertedRanges: 0,\n\t\t\t\t\tremovedRanges: 3,\n\t\t\t\t\tmodifiedRanges: 0,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(\"should report a compact ChangeSet for simple replaces in an array of NamedProperties\", function () {\n\t\t\t\tvar testArray = initializeArrayForComparison(50);\n\n\t\t\t\ttestArray.original.removeRange(0, 5);\n\t\t\t\ttestArray.original.insertRange(0, createRandomEntries(5));\n\n\t\t\t\ttestArray.original.removeRange(15, 5);\n\t\t\t\ttestArray.original.insertRange(15, createRandomEntries(5));\n\n\t\t\t\ttestArray.original.removeRange(testArray.original.length - 5, 5);\n\t\t\t\ttestArray.original.insertRange(testArray.original.length, createRandomEntries(5));\n\n\t\t\t\tvar changed = countChanges(testArray);\n\t\t\t\texpect(changed).to.deep.equal({\n\t\t\t\t\tinsertedCount: 15,\n\t\t\t\t\tremovedCount: 15,\n\t\t\t\t\tmodifiedCount: 0,\n\t\t\t\t\ttotalCount: 30,\n\t\t\t\t\tinsertedRanges: 3,\n\t\t\t\t\tremovedRanges: 3,\n\t\t\t\t\tmodifiedRanges: 0,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(\"should report a compact ChangeSet for modifies after inserts and removes\", function () {\n\t\t\t\tvar testArray = initializeArrayForComparison(50);\n\n\t\t\t\ttestArray.original.removeRange(5, 5);\n\t\t\t\ttestArray.original.get(7)._properties.stringProperty.value = \"NewValue1\";\n\t\t\t\ttestArray.original.insertRange(10, createRandomEntries(5));\n\t\t\t\ttestArray.original.get(20)._properties.stringProperty.value = \"NewValue2\";\n\t\t\t\ttestArray.original.get(21)._properties.stringProperty.value = \"NewValue3\";\n\t\t\t\ttestArray.original.get(22)._properties.stringProperty.value = \"NewValue4\";\n\n\t\t\t\tvar changed = countChanges(testArray);\n\t\t\t\texpect(changed).to.deep.equal({\n\t\t\t\t\tinsertedCount: 5,\n\t\t\t\t\tremovedCount: 5,\n\t\t\t\t\tmodifiedCount: 4,\n\t\t\t\t\ttotalCount: 14,\n\t\t\t\t\tinsertedRanges: 1,\n\t\t\t\t\tremovedRanges: 1,\n\t\t\t\t\tmodifiedRanges: 2,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(\"should report a compact ChangeSet for a randomized array of NamedProperties\", function () {\n\t\t\t\tvar generator = new DeterministicRandomGenerator(\n\t\t\t\t\t\"931cff4d-392f-2f41-5c52-2e17965270dc\",\n\t\t\t\t);\n\t\t\t\tthis.timeout(90000);\n\n\t\t\t\tfor (var i = 0; i < 20; i++) {\n\t\t\t\t\tvar numInitialEntries = generator.irandom(300);\n\t\t\t\t\tvar testArray = initializeArrayForComparison(numInitialEntries);\n\n\t\t\t\t\t// Perform modifications to the array\n\t\t\t\t\tvar numModification = generator.irandom(10);\n\t\t\t\t\tvar modifiedEntries = 0;\n\t\t\t\t\tfor (var j = 0; j < numModification; j++) {\n\t\t\t\t\t\tswitch (generator.irandom(3)) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t// Remove entries from the array\n\t\t\t\t\t\t\t\tif (testArray.original.length > 0) {\n\t\t\t\t\t\t\t\t\tvar rangeStart = generator.irandom(testArray.original.length);\n\t\t\t\t\t\t\t\t\tvar rangeLength =\n\t\t\t\t\t\t\t\t\t\tgenerator.irandom(testArray.original.length - rangeStart - 1) + 1;\n\t\t\t\t\t\t\t\t\ttestArray.original.removeRange(rangeStart, rangeLength);\n\n\t\t\t\t\t\t\t\t\tmodifiedEntries += rangeLength;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t// Insert entries into the array\n\t\t\t\t\t\t\t\tvar rangeStart = generator.irandom(testArray.original.length + 1);\n\t\t\t\t\t\t\t\tvar rangeLength = generator.irandom(50);\n\t\t\t\t\t\t\t\ttestArray.original.insertRange(rangeStart, createRandomEntries(rangeLength));\n\n\t\t\t\t\t\t\t\tmodifiedEntries += rangeLength;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tif (testArray.original.length > 0) {\n\t\t\t\t\t\t\t\t\t// Modify entries in the array\n\t\t\t\t\t\t\t\t\tvar rangeStart = generator.irandom(testArray.original.length);\n\t\t\t\t\t\t\t\t\tvar rangeLength = generator.irandom(testArray.original.length - rangeStart);\n\t\t\t\t\t\t\t\t\tfor (var j = rangeStart; j < rangeStart + rangeLength; j++) {\n\t\t\t\t\t\t\t\t\t\ttestArray.original.get(j)._properties.stringProperty.value += \"modified\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tmodifiedEntries += rangeLength;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tthrow new Error(\"Should never happen\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check whether the reported changes are as compact as the modifications\n\t\t\t\t\tvar changed = countChanges(testArray);\n\n\t\t\t\t\t// Make sure the reported ChangeSet is not longer than the acutally performed modifications\n\t\t\t\t\texpect(changed.totalCount).to.be.at.most(modifiedEntries);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t});\n});\n"]}
1
+ {"version":3,"file":"customArrayProperty.spec.js","sourceRoot":"","sources":["../../../src/test/properties/customArrayProperty.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\n/**\n * @fileoverview In this file, we will test the functions of a BaseProperty object\n * described in /src/properties/baseProperty.js\n */\n\nvar PropertyFactory,\n\tBaseProperty,\n\tOurTestTemplate,\n\tOurArrayTestTemplate2,\n\terror,\n\tDeterministicRandomGenerator,\n\t_,\n\tChangeSet,\n\tdeepCopy;\n\nvar possibleChanges = {\n\t0: \"insert\",\n\t1: \"modify\",\n\t2: \"remove\",\n\t3: \"set\",\n};\n\nvar createTestArrayProp = function () {\n\treturn PropertyFactory.create(\"autodesk.tests:CustomArrayTestID-1.0.0\")._properties\n\t\t.MyCustomArray;\n};\n\nvar createRandomProperty = function () {\n\tvar node1 = PropertyFactory.create(\"autodesk.tests:TestID-1.0.0\");\n\tnode1._properties.MyFloatProp.value = Math.random() * 100;\n\tnode1._properties.MyIntProp.value = Math.random() * 100;\n\treturn node1;\n};\n\ndescribe(\"CustomArrayProperty\", function () {\n\t/**\n\t * Get all the objects we need in this test here.\n\t */\n\tbefore(function () {\n\t\tPropertyFactory = require(\"../..\").PropertyFactory;\n\t\tBaseProperty = require(\"../..\").BaseProperty;\n\t\tDeterministicRandomGenerator =\n\t\t\trequire(\"@fluid-experimental/property-common\").DeterministicRandomGenerator;\n\t\tChangeSet = require(\"@fluid-experimental/property-changeset\").ChangeSet;\n\t\t_ = require(\"lodash\");\n\t\tdeepCopy = _.cloneDeep;\n\n\t\tOurTestTemplate = {\n\t\t\ttypeid: \"autodesk.tests:TestID-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"MyFloatProp\",\n\t\t\t\t\ttypeid: \"Float32\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: \"MyIntProp\",\n\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t\tPropertyFactory._reregister(OurTestTemplate);\n\n\t\tOurArrayTestTemplate2 = {\n\t\t\ttypeid: \"autodesk.tests:CustomArrayTestID-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{ id: \"MyCustomArray\", typeid: \"autodesk.tests:TestID-1.0.0\", context: \"array\" },\n\t\t\t\t{ id: \"SomeOtherProperty\", typeid: \"String\" },\n\t\t\t],\n\t\t};\n\t\tPropertyFactory._reregister(OurArrayTestTemplate2);\n\n\t\tvar NamedPropertyWithStringTemplate = {\n\t\t\ttypeid: \"autodesk.tests:Array.NamedPropertyWithString-1.0.0\",\n\t\t\tinherits: \"NamedProperty\",\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"stringProperty\",\n\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t\tPropertyFactory._reregister(NamedPropertyWithStringTemplate);\n\t});\n\n\tdescribe(\"Checking the generalized squash function of a CustomPropertyArrayProperty\", function () {\n\t\tit(\"[random number test] should be squashed to the expected changeset\", function (done) {\n\t\t\ttry {\n\t\t\t\tvar arrayProp = createTestArrayProp();\n\n\t\t\t\tvar currentArrayLength = 0;\n\n\t\t\t\tarrayProp.insertRange(0, [\n\t\t\t\t\tcreateRandomProperty(),\n\t\t\t\t\tcreateRandomProperty(),\n\t\t\t\t\tcreateRandomProperty(),\n\t\t\t\t\tcreateRandomProperty(),\n\t\t\t\t]);\n\t\t\t\tarrayProp.cleanDirty();\n\n\t\t\t\t// Create a copy of this state\n\t\t\t\tvar arrayPropCopy = createTestArrayProp();\n\t\t\t\tarrayPropCopy.deserialize(arrayProp.serialize({ dirtyOnly: false }));\n\t\t\t\tarrayPropCopy.cleanDirty();\n\n\t\t\t\tfor (var i = 0; i < 500; ++i) {\n\t\t\t\t\tcurrentArrayLength = arrayProp.length;\n\t\t\t\t\tvar nextOpType = \"insert\";\n\t\t\t\t\tvar opOffset = 0;\n\n\t\t\t\t\tif (currentArrayLength > 0) {\n\t\t\t\t\t\tnextOpType = possibleChanges[Math.floor(Math.random() * 4)];\n\t\t\t\t\t\topOffset = Math.min(\n\t\t\t\t\t\t\tMath.floor(Math.random() * currentArrayLength),\n\t\t\t\t\t\t\tcurrentArrayLength - 1,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tvar opLength =\n\t\t\t\t\t\t1 +\n\t\t\t\t\t\tMath.min(\n\t\t\t\t\t\t\tMath.floor(Math.random() * (currentArrayLength - opOffset)),\n\t\t\t\t\t\t\tcurrentArrayLength - opOffset - 1,\n\t\t\t\t\t\t);\n\n\t\t\t\t\tswitch (nextOpType) {\n\t\t\t\t\t\tcase \"remove\": {\n\t\t\t\t\t\t\tarrayProp.removeRange(opOffset, opLength);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"insert\": {\n\t\t\t\t\t\t\tarrayProp.insertRange(opOffset, [createRandomProperty()]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"modify\": {\n\t\t\t\t\t\t\tvar childProperty = arrayProp.get(opOffset);\n\t\t\t\t\t\t\tchildProperty._properties.MyFloatProp.value = Math.random() * 100;\n\t\t\t\t\t\t\tchildProperty._properties.MyIntProp.value = Math.random() * 100;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"set\": {\n\t\t\t\t\t\t\tarrayProp.set(opOffset, createRandomProperty());\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// no default\n\t\t\t\t\t}\n\n\t\t\t\t\tvar serializedDirtyChanges = arrayProp.serialize({\n\t\t\t\t\t\tdirtyOnly: true,\n\t\t\t\t\t\tincludeRootTypeid: false,\n\t\t\t\t\t\tdirtinessType: BaseProperty.MODIFIED_STATE_FLAGS.DIRTY,\n\t\t\t\t\t});\n\t\t\t\t\tvar arrayPropTest = createTestArrayProp();\n\t\t\t\t\tarrayPropTest.deserialize(arrayPropCopy.serialize({ dirtyOnly: false }));\n\t\t\t\t\tarrayPropTest.cleanDirty();\n\t\t\t\t\tarrayPropTest.applyChangeSet(serializedDirtyChanges);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t} finally {\n\t\t\t\texpect(error).to.equal(undefined);\n\t\t\t\texpect(arrayProp).to.not.equal(null);\n\t\t\t\texpect(arrayProp.serialize({ dirtyOnly: false })).to.deep.equal(\n\t\t\t\t\tarrayPropTest.serialize({ dirtyOnly: false }),\n\t\t\t\t);\n\t\t\t\tdone();\n\t\t\t}\n\t\t});\n\t});\n\n\tdescribe(\"Path resolution\", function () {\n\t\tit(\"should work for array properties\", function () {\n\t\t\tvar arrayParent = PropertyFactory.create(\"autodesk.tests:CustomArrayTestID-1.0.0\");\n\t\t\tvar arrayProp = arrayParent._properties.MyCustomArray;\n\n\t\t\t// prepare initial state\n\t\t\tvar entries = [];\n\t\t\tfor (var i = 0; i < 10; i++) {\n\t\t\t\tvar entry = PropertyFactory.create(\"autodesk.tests:TestID-1.0.0\");\n\t\t\t\tentry._properties.MyIntProp.value = i;\n\t\t\t\tentries.push(entry);\n\t\t\t}\n\n\t\t\tarrayParent._properties.MyCustomArray.insertRange(0, entries);\n\n\t\t\t// Make sure that arrray access works\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[0]\")._properties.MyIntProp.value).to.equal(\n\t\t\t\t0,\n\t\t\t);\n\t\t\texpect(arrayProp.resolvePath(\"[2]\")._properties.MyIntProp.value).to.equal(2);\n\n\t\t\t// Test out of bounds access\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[-1]\")).to.be.undefined;\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[10]\")).to.be.undefined;\n\n\t\t\tvar myTestArrayProp = arrayProp.get(5);\n\t\t\texpect(myTestArrayProp.getAbsolutePath()).to.equal(\"/MyCustomArray[5]\");\n\t\t\texpect(myTestArrayProp.getRelativePath(arrayProp)).to.equal(\"[5]\");\n\n\t\t\t// Test exception on parsing error\n\t\t\texpect(function () {\n\t\t\t\tarrayParent.resolvePath('MyCustomArray[\"abcd\"]');\n\t\t\t}).to.throw();\n\n\t\t\t// Test path resolution after insertion\n\t\t\tvar newEntry = PropertyFactory.create(\"autodesk.tests:TestID-1.0.0\");\n\t\t\tnewEntry._properties.MyIntProp.value = -1;\n\t\t\tarrayParent._properties.MyCustomArray.insertRange(0, [newEntry]);\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[0]\")._properties.MyIntProp.value).to.equal(\n\t\t\t\t-1,\n\t\t\t);\n\t\t\texpect(myTestArrayProp.getAbsolutePath()).to.equal(\"/MyCustomArray[6]\");\n\n\t\t\t// Test path resolution after setting\n\t\t\t// TODO: set currently broken\n\t\t\tvar newEntry2 = PropertyFactory.create(\"autodesk.tests:TestID-1.0.0\");\n\t\t\tnewEntry2._properties.MyIntProp.value = -2;\n\t\t\tarrayParent._properties.MyCustomArray.set(0, newEntry2);\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[0]\")._properties.MyIntProp.value).to.equal(\n\t\t\t\t-2,\n\t\t\t);\n\n\t\t\t// Test path resolution after removal\n\t\t\tarrayParent._properties.MyCustomArray.removeRange(0, 1);\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[0]\")._properties.MyIntProp.value).to.equal(\n\t\t\t\t0,\n\t\t\t);\n\t\t\texpect(myTestArrayProp.getAbsolutePath()).to.equal(\"/MyCustomArray[5]\");\n\n\t\t\t// Test path resolution after insertion via applyChangeSet\n\t\t\tarrayParent._properties.MyCustomArray.applyChangeSet({\n\t\t\t\tinsert: [\n\t\t\t\t\t[\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttypeid: \"autodesk.tests:TestID-1.0.0\",\n\t\t\t\t\t\t\t\tFloat32: {\n\t\t\t\t\t\t\t\t\tMyFloatProp: 16,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tInt32: {\n\t\t\t\t\t\t\t\t\tMyIntProp: 17,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttypeid: \"autodesk.tests:TestID-1.0.0\",\n\t\t\t\t\t\t\t\tFloat32: {\n\t\t\t\t\t\t\t\t\tMyFloatProp: 18,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tInt32: {\n\t\t\t\t\t\t\t\t\tMyIntProp: 19,\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\texpect(arrayParent.resolvePath(\"MyCustomArray[0]\")._properties.MyIntProp.value).to.equal(\n\t\t\t\t17,\n\t\t\t);\n\t\t\texpect(myTestArrayProp.getAbsolutePath()).to.equal(\"/MyCustomArray[7]\");\n\n\t\t\tvar serialied = arrayParent._properties.MyCustomArray.serialize({ dirtyOnly: false });\n\n\t\t\t// Test path resolution after removal\n\t\t\tarrayParent._properties.MyCustomArray.applyChangeSet({\n\t\t\t\tremove: [[0, 1]],\n\t\t\t});\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[0]\")._properties.MyIntProp.value).to.equal(\n\t\t\t\t19,\n\t\t\t);\n\t\t\texpect(myTestArrayProp.getAbsolutePath()).to.equal(\"/MyCustomArray[6]\");\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[11]\")).to.be.undefined;\n\n\t\t\t// Test Path resolution after deserialize\n\t\t\tarrayParent._properties.MyCustomArray.deserialize(serialied);\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[0]\")._properties.MyIntProp.value).to.equal(\n\t\t\t\t17,\n\t\t\t);\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[11]\")).not.to.be.undefined;\n\n\t\t\tarrayParent._properties.MyCustomArray.deserialize({});\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[0]\")).to.be.undefined;\n\t\t\texpect(arrayParent.resolvePath(\"MyCustomArray[11]\")).to.be.undefined;\n\n\t\t\t// Try multiple levels\n\t\t\tvar leaf = PropertyFactory.create(\"NodeProperty\");\n\t\t\texpect(leaf.resolvePath(\"/\")).to.equal(leaf);\n\t\t\tvar array1 = PropertyFactory.create(\"NodeProperty\", \"array\");\n\t\t\tarray1.push(leaf);\n\t\t\texpect(leaf.resolvePath(\"/\")).to.equal(array1);\n\n\t\t\tvar array2 = PropertyFactory.create(undefined, \"array\");\n\t\t\tarray2.push(array1);\n\t\t\texpect(leaf.resolvePath(\"/\")).to.equal(array2);\n\n\t\t\tvar array3 = PropertyFactory.create(undefined, \"array\");\n\t\t\tarray3.push(array2);\n\t\t\texpect(leaf.resolvePath(\"/\")).to.equal(array3);\n\t\t});\n\t});\n\n\tdescribe(\"Sized arrays\", function () {\n\t\t// Test fix for an issue where custom array templates with non-zero sizes\n\t\t// resulted in the array initially containing objects without a parent.\n\t\tit(\"should work for custom array property templates with size specified\", function () {\n\t\t\tvar TestString = {\n\t\t\t\ttypeid: \"autodesk.test:test.string-1.0.0\",\n\t\t\t\tproperties: [{ id: \"data\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar TestCustomArray = {\n\t\t\t\ttypeid: \"autodesk.test:test.customarray-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"data\",\n\t\t\t\t\t\ttypeid: \"autodesk.test:test.string-1.0.0\",\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\tlength: 3,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tPropertyFactory._reregister(TestString);\n\t\t\tPropertyFactory._reregister(TestCustomArray);\n\n\t\t\tvar sizedArray = PropertyFactory.create(\"autodesk.test:test.customarray-1.0.0\");\n\t\t\t// Prior to the fix to properly parent initial elements, clear() would result in an exception with\n\t\t\t// the message 'Trying to remove a property from an array that has not the array as parent.'\n\t\t\tvar clearArrayFn = function () {\n\t\t\t\tsizedArray.resolvePath(\"data\").clear();\n\t\t\t};\n\t\t\texpect(clearArrayFn).to.not.throw();\n\t\t});\n\t});\n\n\tdescribe(\"Commit\", function () {\n\t\t/* it('should not appear in the changeset when committing a change on its sibling', function() {\n // TODO: This test cannot be implemented in Fluid\n let cm = new HFDM();\n let workspace = cm.createWorkspace();\n let checkoutView = workspace._getCheckoutView();\n let pset = PropertyFactory.create('autodesk.tests:CustomArrayTestID-1.0.0');\n\n return cm._createRepository({local: true}).then(function(params) {\n return cm._checkoutAttempt(params.branch.getUrn(), checkoutView);\n }).then(function() {\n checkoutView.getRoot().insert('pset', pset);\n return cm._commit(null, checkoutView);\n }).then(function(commitNode) {\n\n checkoutView.register('modified', function(cv, changeSet) {\n expect(changeSet).to.not.be.undefined;\n expect(\n changeSet.getSerializedChangeSet()\n .modify['autodesk.tests:CustomArrayTestID-1.0.0']['array<autodesk.tests:TestID-1.0.0>']\n ).to.not.exist;\n });\n checkoutView.getRoot().resolvePath('pset.SomeOtherProperty').setValue('foobar');\n return cm._commit(null, checkoutView);\n });\n }); */\n\n\t\tdescribe(\"Nested collections\", function () {\n\t\t\tit(\"should support squashing of nested maps\", function () {\n\t\t\t\tvar nodeProp = PropertyFactory.create(\"NodeProperty\");\n\t\t\t\tvar arrayProp = PropertyFactory.create(\"array<BaseProperty>\");\n\t\t\t\tvar testMap = PropertyFactory.create(\"map<Bool>\");\n\n\t\t\t\tnodeProp.insert(\"array\", arrayProp);\n\t\t\t\ttestMap.set(\"test\", true);\n\t\t\t\tarrayProp.push(testMap);\n\t\t\t\tvar CS1 = nodeProp.serialize({ dirtyOnly: false });\n\n\t\t\t\tnodeProp.cleanDirty();\n\t\t\t\ttestMap.set(\"test\", false);\n\t\t\t\tvar CS2 = nodeProp.serialize({ dirtyOnly: true });\n\n\t\t\t\tvar CS = new ChangeSet(CS1);\n\t\t\t\tCS.applyChangeSet(new ChangeSet(CS2));\n\t\t\t\tvar arrayChanges = CS.getSerializedChangeSet().insert[\"array<>\"].array;\n\t\t\t\texpect(arrayChanges.insert[0][1][0]).to.have.all.keys(\"insert\", \"typeid\");\n\t\t\t\texpect(arrayChanges.insert[0][1][0].insert[\"test\"]).to.equal(false);\n\t\t\t});\n\n\t\t\tit(\"should support basic rebasing of nested maps\", function () {\n\t\t\t\tvar nodeProp = PropertyFactory.create(\"NodeProperty\");\n\t\t\t\tvar arrayProp = PropertyFactory.create(\"array<BaseProperty>\");\n\t\t\t\tvar testMap = PropertyFactory.create(\"map<Bool>\");\n\n\t\t\t\tnodeProp.insert(\"array\", arrayProp);\n\t\t\t\ttestMap.set(\"test\", true);\n\t\t\t\tarrayProp.push(testMap);\n\n\t\t\t\tnodeProp.cleanDirty();\n\t\t\t\ttestMap.set(\"test\", false);\n\t\t\t\tvar CS1 = nodeProp.serialize({ dirtyOnly: true });\n\t\t\t\tvar CS2 = deepCopy(CS1);\n\n\t\t\t\tvar CS = new ChangeSet(CS1);\n\t\t\t\tvar conflicts = [];\n\t\t\t\tCS._rebaseChangeSet(CS2, conflicts);\n\t\t\t\texpect(conflicts.length).to.equal(1);\n\t\t\t\texpect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);\n\t\t\t\texpect(conflicts[0].path).to.be.equal(\"array[0][test]\");\n\t\t\t});\n\n\t\t\tit(\"should be deserializable\", function () {\n\t\t\t\tvar testArray = PropertyFactory.create(\"array<>\");\n\t\t\t\ttestArray.push(PropertyFactory.create(\"array<>\"));\n\t\t\t\tvar serialized = testArray.serialize({ dirtyOnly: false });\n\n\t\t\t\tvar testArray2 = PropertyFactory.create(\"array<>\");\n\t\t\t\ttestArray2.deserialize(serialized);\n\t\t\t\texpect(testArray2.serialize({ dirtyOnly: false })).to.deep.equal(\n\t\t\t\t\ttestArray.serialize({ dirtyOnly: false }),\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"deserialize\", function () {\n\t\t\t// Returns a sequence of random NamedProperties\n\t\t\tvar createRandomEntries = function (in_count) {\n\t\t\t\treturn _.map(_.range(in_count), function () {\n\t\t\t\t\tvar property = PropertyFactory.create(\n\t\t\t\t\t\t\"autodesk.tests:Array.NamedPropertyWithString-1.0.0\",\n\t\t\t\t\t);\n\t\t\t\t\tproperty._properties.stringProperty.value = \"initial\";\n\t\t\t\t\treturn property;\n\t\t\t\t});\n\t\t\t};\n\n\t\t\t// Manually copy the array (we don't use deserialize for the copy\n\t\t\t// here since we want to test that function below and don't want\n\t\t\t// an error here to affect the comparison)\n\t\t\tvar manuallyCopyArray = function (arrayProperty) {\n\t\t\t\tvar copiedArray = PropertyFactory.create(\n\t\t\t\t\t\"autodesk.tests:Array.NamedPropertyWithString-1.0.0\",\n\t\t\t\t\t\"array\",\n\t\t\t\t);\n\t\t\t\tvar copiedEntries = _.map(arrayProperty.getEntriesReadOnly(), function (entry) {\n\t\t\t\t\t// Create a named property with the same guid\n\t\t\t\t\tvar newNode = PropertyFactory.create(\n\t\t\t\t\t\t\"autodesk.tests:Array.NamedPropertyWithString-1.0.0\",\n\t\t\t\t\t);\n\t\t\t\t\tnewNode._properties.guid.value = entry.getGuid();\n\t\t\t\t\tnewNode._properties.stringProperty.value = entry._properties.stringProperty.value;\n\t\t\t\t\treturn newNode;\n\t\t\t\t});\n\t\t\t\tcopiedArray.insertRange(0, copiedEntries);\n\n\t\t\t\treturn copiedArray;\n\t\t\t};\n\n\t\t\t// Prepare the initial state\n\t\t\tvar initializeArrayForComparison = function (in_count) {\n\t\t\t\t// Create an array with named properties\n\t\t\t\tvar arrayProperty = PropertyFactory.create(\"NamedProperty\", \"array\");\n\t\t\t\tvar entries = createRandomEntries(in_count);\n\t\t\t\tarrayProperty.insertRange(0, entries);\n\n\t\t\t\tvar copiedArray = manuallyCopyArray(arrayProperty);\n\n\t\t\t\treturn {\n\t\t\t\t\toriginal: arrayProperty,\n\t\t\t\t\tcopy: copiedArray,\n\t\t\t\t};\n\t\t\t};\n\n\t\t\t// Counts the changes in the array\n\t\t\tvar countChanges = function (in_testArray) {\n\t\t\t\t// First create a copy of the copy to check afterwards whether the changeset is correct\n\t\t\t\tvar copy2 = manuallyCopyArray(in_testArray.copy);\n\n\t\t\t\t// deserialize the changes into the copied array property\n\t\t\t\tin_testArray.copy.cleanDirty();\n\t\t\t\tvar deserialized = in_testArray.copy.deserialize(\n\t\t\t\t\tin_testArray.original.serialize({ dirtyOnly: false }),\n\t\t\t\t);\n\n\t\t\t\texpect(in_testArray.copy.serialize({ dirtyOnly: false })).to.deep.equal(\n\t\t\t\t\tin_testArray.original.serialize({ dirtyOnly: false }),\n\t\t\t\t);\n\t\t\t\texpect(deserialized).to.deep.equal(in_testArray.copy.serialize({ dirtyOnly: true }));\n\n\t\t\t\t// Make sure the returned ChangeSet is correct\n\t\t\t\tcopy2.applyChangeSet(deserialized);\n\t\t\t\texpect(copy2.serialize({ dirtyOnly: false })).to.deep.equal(\n\t\t\t\t\tin_testArray.original.serialize({ dirtyOnly: false }),\n\t\t\t\t);\n\n\t\t\t\t// Count insert, modify and remove operations\n\t\t\t\tvar insertedCount = _.reduce(\n\t\t\t\t\tdeserialized.insert,\n\t\t\t\t\tfunction (last, insertedRange) {\n\t\t\t\t\t\treturn last + insertedRange[1].length;\n\t\t\t\t\t},\n\t\t\t\t\t0,\n\t\t\t\t);\n\t\t\t\tvar removedCount = _.reduce(\n\t\t\t\t\tdeserialized.remove,\n\t\t\t\t\tfunction (last, removedRange) {\n\t\t\t\t\t\treturn last + removedRange[1];\n\t\t\t\t\t},\n\t\t\t\t\t0,\n\t\t\t\t);\n\t\t\t\tvar modifiedCount = _.reduce(\n\t\t\t\t\tdeserialized.modify,\n\t\t\t\t\tfunction (last, modifiedRange) {\n\t\t\t\t\t\treturn last + modifiedRange[1].length;\n\t\t\t\t\t},\n\t\t\t\t\t0,\n\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\tinsertedCount: insertedCount,\n\t\t\t\t\tremovedCount: removedCount,\n\t\t\t\t\tmodifiedCount: modifiedCount,\n\t\t\t\t\ttotalCount: insertedCount + removedCount + modifiedCount,\n\t\t\t\t\tinsertedRanges: deserialized.insert ? deserialized.insert.length : 0,\n\t\t\t\t\tremovedRanges: deserialized.remove ? deserialized.remove.length : 0,\n\t\t\t\t\tmodifiedRanges: deserialized.modify ? deserialized.modify.length : 0,\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tit(\"should report an empty ChangeSet for deserialize without changes\", function () {\n\t\t\t\tvar testArray = initializeArrayForComparison(50);\n\n\t\t\t\t// Check the returned ChangeSet\n\t\t\t\tvar changed = countChanges(testArray);\n\t\t\t\texpect(changed).to.deep.equal({\n\t\t\t\t\tinsertedCount: 0,\n\t\t\t\t\tremovedCount: 0,\n\t\t\t\t\tmodifiedCount: 0,\n\t\t\t\t\ttotalCount: 0,\n\t\t\t\t\tinsertedRanges: 0,\n\t\t\t\t\tremovedRanges: 0,\n\t\t\t\t\tmodifiedRanges: 0,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(\"should report an empty ChangeSet for a length 0 array\", function () {\n\t\t\t\tvar testArray = initializeArrayForComparison(0);\n\n\t\t\t\t// Check the returned ChangeSet\n\t\t\t\tvar changed = countChanges(testArray);\n\t\t\t\texpect(changed).to.deep.equal({\n\t\t\t\t\tinsertedCount: 0,\n\t\t\t\t\tremovedCount: 0,\n\t\t\t\t\tmodifiedCount: 0,\n\t\t\t\t\ttotalCount: 0,\n\t\t\t\t\tinsertedRanges: 0,\n\t\t\t\t\tremovedRanges: 0,\n\t\t\t\t\tmodifiedRanges: 0,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(\"should report a compact ChangeSet for simple move in an array of NamedProperties\", function () {\n\t\t\t\tvar testArray = initializeArrayForComparison(50);\n\n\t\t\t\t// Move a segment in the array\n\t\t\t\tvar entries = [\n\t\t\t\t\ttestArray.original.get(45),\n\t\t\t\t\ttestArray.original.get(46),\n\t\t\t\t\ttestArray.original.get(47),\n\t\t\t\t];\n\t\t\t\ttestArray.original.removeRange(45, 3);\n\t\t\t\ttestArray.original.insertRange(3, entries);\n\n\t\t\t\t// Check the returned ChangeSet\n\t\t\t\tvar changed = countChanges(testArray);\n\t\t\t\texpect(changed).to.deep.equal({\n\t\t\t\t\tinsertedCount: 3,\n\t\t\t\t\tremovedCount: 3,\n\t\t\t\t\tmodifiedCount: 0,\n\t\t\t\t\ttotalCount: 6,\n\t\t\t\t\tinsertedRanges: 1,\n\t\t\t\t\tremovedRanges: 1,\n\t\t\t\t\tmodifiedRanges: 0,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(\"should report a compact ChangeSet for simple inserts in an array of NamedProperties\", function () {\n\t\t\t\tvar testArray = initializeArrayForComparison(50);\n\n\t\t\t\ttestArray.original.insertRange(0, createRandomEntries(5));\n\t\t\t\ttestArray.original.insertRange(25, createRandomEntries(5));\n\t\t\t\ttestArray.original.insertRange(testArray.original.length, createRandomEntries(5));\n\n\t\t\t\tvar changed = countChanges(testArray);\n\t\t\t\texpect(changed).to.deep.equal({\n\t\t\t\t\tinsertedCount: 15,\n\t\t\t\t\tremovedCount: 0,\n\t\t\t\t\tmodifiedCount: 0,\n\t\t\t\t\ttotalCount: 15,\n\t\t\t\t\tinsertedRanges: 3,\n\t\t\t\t\tremovedRanges: 0,\n\t\t\t\t\tmodifiedRanges: 0,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(\"should report a compact ChangeSet for simple removes in an array of NamedProperties\", function () {\n\t\t\t\tvar testArray = initializeArrayForComparison(50);\n\n\t\t\t\ttestArray.original.removeRange(0, 5);\n\t\t\t\ttestArray.original.removeRange(15, 5);\n\t\t\t\ttestArray.original.removeRange(testArray.original.length - 5, 5);\n\n\t\t\t\tvar changed = countChanges(testArray);\n\t\t\t\texpect(changed).to.deep.equal({\n\t\t\t\t\tinsertedCount: 0,\n\t\t\t\t\tremovedCount: 15,\n\t\t\t\t\tmodifiedCount: 0,\n\t\t\t\t\ttotalCount: 15,\n\t\t\t\t\tinsertedRanges: 0,\n\t\t\t\t\tremovedRanges: 3,\n\t\t\t\t\tmodifiedRanges: 0,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(\"should report a compact ChangeSet for simple replaces in an array of NamedProperties\", function () {\n\t\t\t\tvar testArray = initializeArrayForComparison(50);\n\n\t\t\t\ttestArray.original.removeRange(0, 5);\n\t\t\t\ttestArray.original.insertRange(0, createRandomEntries(5));\n\n\t\t\t\ttestArray.original.removeRange(15, 5);\n\t\t\t\ttestArray.original.insertRange(15, createRandomEntries(5));\n\n\t\t\t\ttestArray.original.removeRange(testArray.original.length - 5, 5);\n\t\t\t\ttestArray.original.insertRange(testArray.original.length, createRandomEntries(5));\n\n\t\t\t\tvar changed = countChanges(testArray);\n\t\t\t\texpect(changed).to.deep.equal({\n\t\t\t\t\tinsertedCount: 15,\n\t\t\t\t\tremovedCount: 15,\n\t\t\t\t\tmodifiedCount: 0,\n\t\t\t\t\ttotalCount: 30,\n\t\t\t\t\tinsertedRanges: 3,\n\t\t\t\t\tremovedRanges: 3,\n\t\t\t\t\tmodifiedRanges: 0,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(\"should report a compact ChangeSet for modifies after inserts and removes\", function () {\n\t\t\t\tvar testArray = initializeArrayForComparison(50);\n\n\t\t\t\ttestArray.original.removeRange(5, 5);\n\t\t\t\ttestArray.original.get(7)._properties.stringProperty.value = \"NewValue1\";\n\t\t\t\ttestArray.original.insertRange(10, createRandomEntries(5));\n\t\t\t\ttestArray.original.get(20)._properties.stringProperty.value = \"NewValue2\";\n\t\t\t\ttestArray.original.get(21)._properties.stringProperty.value = \"NewValue3\";\n\t\t\t\ttestArray.original.get(22)._properties.stringProperty.value = \"NewValue4\";\n\n\t\t\t\tvar changed = countChanges(testArray);\n\t\t\t\texpect(changed).to.deep.equal({\n\t\t\t\t\tinsertedCount: 5,\n\t\t\t\t\tremovedCount: 5,\n\t\t\t\t\tmodifiedCount: 4,\n\t\t\t\t\ttotalCount: 14,\n\t\t\t\t\tinsertedRanges: 1,\n\t\t\t\t\tremovedRanges: 1,\n\t\t\t\t\tmodifiedRanges: 2,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tit(\"should report a compact ChangeSet for a randomized array of NamedProperties\", function () {\n\t\t\t\tvar generator = new DeterministicRandomGenerator(\n\t\t\t\t\t\"931cff4d-392f-2f41-5c52-2e17965270dc\",\n\t\t\t\t);\n\t\t\t\tthis.timeout(90000);\n\n\t\t\t\tfor (var i = 0; i < 20; i++) {\n\t\t\t\t\tvar numInitialEntries = generator.irandom(300);\n\t\t\t\t\tvar testArray = initializeArrayForComparison(numInitialEntries);\n\n\t\t\t\t\t// Perform modifications to the array\n\t\t\t\t\tvar numModification = generator.irandom(10);\n\t\t\t\t\tvar modifiedEntries = 0;\n\t\t\t\t\tfor (var j = 0; j < numModification; j++) {\n\t\t\t\t\t\tswitch (generator.irandom(3)) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t// Remove entries from the array\n\t\t\t\t\t\t\t\tif (testArray.original.length > 0) {\n\t\t\t\t\t\t\t\t\tvar rangeStart = generator.irandom(testArray.original.length);\n\t\t\t\t\t\t\t\t\tvar rangeLength =\n\t\t\t\t\t\t\t\t\t\tgenerator.irandom(testArray.original.length - rangeStart - 1) + 1;\n\t\t\t\t\t\t\t\t\ttestArray.original.removeRange(rangeStart, rangeLength);\n\n\t\t\t\t\t\t\t\t\tmodifiedEntries += rangeLength;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t// Insert entries into the array\n\t\t\t\t\t\t\t\tvar rangeStart = generator.irandom(testArray.original.length + 1);\n\t\t\t\t\t\t\t\tvar rangeLength = generator.irandom(50);\n\t\t\t\t\t\t\t\ttestArray.original.insertRange(rangeStart, createRandomEntries(rangeLength));\n\n\t\t\t\t\t\t\t\tmodifiedEntries += rangeLength;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tif (testArray.original.length > 0) {\n\t\t\t\t\t\t\t\t\t// Modify entries in the array\n\t\t\t\t\t\t\t\t\tvar rangeStart = generator.irandom(testArray.original.length);\n\t\t\t\t\t\t\t\t\tvar rangeLength = generator.irandom(testArray.original.length - rangeStart);\n\t\t\t\t\t\t\t\t\tfor (var k = rangeStart; k < rangeStart + rangeLength; k++) {\n\t\t\t\t\t\t\t\t\t\ttestArray.original.get(k)._properties.stringProperty.value += \"modified\";\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tmodifiedEntries += rangeLength;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tthrow new Error(\"Should never happen\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check whether the reported changes are as compact as the modifications\n\t\t\t\t\tvar changed = countChanges(testArray);\n\n\t\t\t\t\t// Make sure the reported ChangeSet is not longer than the acutally performed modifications\n\t\t\t\t\texpect(changed.totalCount).to.be.at.most(modifiedEntries);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t});\n});\n"]}
@@ -214,17 +214,17 @@ describe("Int64ArrayProperty", function () {
214
214
  if (in_options.pre) {
215
215
  in_options.pre(testProperty._properties.int64Property);
216
216
  }
217
- var initialChangeset = new ChangeSet(testProperty.serialize({ dirtyOnly: false }));
217
+ const initialChangeset = new ChangeSet(testProperty.serialize({ dirtyOnly: false }));
218
218
  initialChangeset.setIsNormalized(true);
219
219
  innerTestChangeSetSquashing(testProperty, testProperty._properties.int64Property, initialChangeset, in_options);
220
- var initialChangeset = initialChangeset.getSerializedChangeSet();
221
- if (ChangeSet.isEmptyChangeSet(initialChangeset)) {
220
+ const initialChangesetSerialized = initialChangeset.getSerializedChangeSet();
221
+ if (ChangeSet.isEmptyChangeSet(initialChangesetSerialized)) {
222
222
  // if one is empty the other should be empty, too
223
223
  expect(testProperty.serialize({ dirtyOnly: false })).to.be.empty;
224
224
  }
225
225
  else {
226
226
  // else they must be deep equal
227
- expect(initialChangeset["array<Int64>"].int64Property).to.deep.equal(testProperty.serialize({ dirtyOnly: false })["array<Int64>"].int64Property);
227
+ expect(initialChangesetSerialized["array<Int64>"].int64Property).to.deep.equal(testProperty.serialize({ dirtyOnly: false })["array<Int64>"].int64Property);
228
228
  }
229
229
  };
230
230
  it("should work for multiple independent inserts", function () {
@@ -1 +1 @@
1
- {"version":3,"file":"int64ArrayProperty.spec.js","sourceRoot":"","sources":["../../../src/test/properties/int64ArrayProperty.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\n/**\n * @fileoverview In this file, we will test the Int64ArrayProperty object described in /src/properties/arrayProperty.js\n */\n\ndescribe(\"Int64ArrayProperty\", function () {\n\tvar PropertyFactory, BaseProperty, ChangeSet, MSG;\n\tvar changeSetWithEntries, removalChangeSet;\n\tvar myInt64Prop, Int64;\n\n\tbefore(function () {\n\t\t// Get all the objects we need in this test here.\n\t\tPropertyFactory = require(\"../..\").PropertyFactory;\n\t\tBaseProperty = require(\"../..\").BaseProperty;\n\t\tChangeSet = require(\"@fluid-experimental/property-changeset\").ChangeSet;\n\t\tInt64 = require(\"@fluid-experimental/property-common\").Int64;\n\t\tMSG = require(\"@fluid-experimental/property-common\").constants.MSG;\n\n\t\t// Register a template with a set property for the tests\n\t\tvar SimpleInt64TestPropertyTemplate = {\n\t\t\ttypeid: \"autodesk.tests:SimpleInt64TestProperty-1.0.0\",\n\t\t\tproperties: [{ id: \"int64Property\", typeid: \"Int64\", context: \"array\" }],\n\t\t};\n\t\tPropertyFactory._reregister(SimpleInt64TestPropertyTemplate);\n\n\t\tmyInt64Prop = PropertyFactory.create(\"Int64\", \"array\");\n\t});\n\n\t// Inserts an Int64 value into the array\n\tvar insertInt64Value = function (int64Prop) {\n\t\tint64Prop.insertRange(0, [new Int64(0, 1)]);\n\t};\n\n\t// Removes the first element from the array\n\tvar removeArrayElement = function (int64Prop) {\n\t\tint64Prop.removeRange(0, 1);\n\t};\n\n\t// Modifies an array value\n\tvar modifyInt64Value = function (int64Prop) {\n\t\tint64Prop.setRange(0, [new Int64(0, 2)]);\n\t};\n\n\tdescribe(\"Testing creation, assignment and serialization\", function () {\n\t\tit(\"should be empty at the beginning\", function () {\n\t\t\texpect(myInt64Prop.length).to.equal(0);\n\t\t\texpect(myInt64Prop.serialize({ dirtyOnly: true })).to.be.empty;\n\t\t\texpect(myInt64Prop.serialize({ dirtyOnly: false })).to.be.empty;\n\t\t});\n\n\t\tit(\"should be possible to insert into the 64 bit array\", function () {\n\t\t\t// Text insertion\n\t\t\tmyInt64Prop.insertRange(0, [new Int64(1, 2), \"12345678987654321\"]);\n\t\t\texpect(myInt64Prop.get(0)).to.deep.equal(new Int64(1, 2));\n\t\t\tmyInt64Prop.insertRange(2, [5]);\n\t\t\texpect(myInt64Prop.get(1)).to.deep.equal(new Int64(1653732529, 2874452));\n\t\t\tchangeSetWithEntries = myInt64Prop.serialize({ dirtyOnly: true });\n\t\t\texpect(myInt64Prop.serialize({ dirtyOnly: false })).to.deep.equal({\n\t\t\t\tinsert: [\n\t\t\t\t\t[\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t[1, 2],\n\t\t\t\t\t\t\t[1653732529, 2874452],\n\t\t\t\t\t\t\t[5, 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\texpect(myInt64Prop.serialize({ dirtyOnly: true })).to.deep.equal({\n\t\t\t\tinsert: [\n\t\t\t\t\t[\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t[1, 2],\n\t\t\t\t\t\t\t[1653732529, 2874452],\n\t\t\t\t\t\t\t[5, 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\tit(\"should be possible to set values in the 64 bit array\", function () {\n\t\t\tmyInt64Prop.setRange(0, [1, \"123\", new Int64(2, 2)]);\n\t\t\texpect(myInt64Prop.get(0)).to.deep.equal(new Int64(1, 0));\n\t\t\tmyInt64Prop.setRange(2, [new Int64(4, 5)]);\n\t\t\tchangeSetWithEntries = myInt64Prop.serialize({ dirtyOnly: true });\n\t\t\texpect(myInt64Prop.serialize({ dirtyOnly: false })).to.deep.equal({\n\t\t\t\tinsert: [\n\t\t\t\t\t[\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t[1, 0],\n\t\t\t\t\t\t\t[123, 0],\n\t\t\t\t\t\t\t[4, 5],\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\texpect(myInt64Prop.serialize({ dirtyOnly: true })).to.deep.equal({\n\t\t\t\tinsert: [\n\t\t\t\t\t[\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t[1, 0],\n\t\t\t\t\t\t\t[123, 0],\n\t\t\t\t\t\t\t[4, 5],\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\tit(\".setRange should throw an error when in_offset is not an integer\", function () {\n\t\t\texpect(() => {\n\t\t\t\tmyInt64Prop.setRange(\"test\", [new Int64(2, 2)]);\n\t\t\t}).to.throw(MSG.NOT_NUMBER);\n\t\t});\n\n\t\tit(\".setRange should throw an error when in_array is not an array\", function () {\n\t\t\texpect(() => {\n\t\t\t\tmyInt64Prop.setRange(0, new Int64(2, 2));\n\t\t\t}).to.throw(MSG.IN_ARRAY_NOT_ARRAY + \"Int64ArrayProperty.setRange\");\n\t\t});\n\n\t\tit(\"Should handle removals correctly\", function () {\n\t\t\tmyInt64Prop.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY);\n\t\t\tmyInt64Prop.removeRange(0, 2);\n\t\t\texpect(myInt64Prop.get(0)).to.deep.equal(new Int64(4, 5));\n\t\t\tremovalChangeSet = myInt64Prop.serialize({\n\t\t\t\tdirtyOnly: true,\n\t\t\t\tincludeRootTypeid: false,\n\t\t\t\tdirtinessType: BaseProperty.MODIFIED_STATE_FLAGS.DIRTY,\n\t\t\t});\n\t\t\texpect(removalChangeSet).to.have.all.keys([\"remove\"]);\n\t\t\texpect(removalChangeSet.remove).to.have.length(1);\n\t\t\texpect(removalChangeSet.remove[0]).to.deep.equal([0, 2]);\n\t\t});\n\n\t\tit(\"Should support deserialization\", function () {\n\t\t\tvar deserializedNode = PropertyFactory.create(\"Int64\", \"array\");\n\t\t\tvar deserializedChanges1 = deserializedNode.deserialize(changeSetWithEntries);\n\t\t\texpect(deserializedChanges1).to.deep.equal(changeSetWithEntries);\n\n\t\t\tvar deserializedChanges3 = deserializedNode.deserialize({});\n\t\t\texpect(deserializedChanges3).to.deep.equal({ remove: [[0, 3]] });\n\t\t});\n\n\t\tit(\"inserting at a bad position should throw an exception\", function () {\n\t\t\texpect(function () {\n\t\t\t\tmyInt64Prop.insertRange(2242, new Int64(4, 5));\n\t\t\t}).to.throw();\n\t\t});\n\n\t\tit(\"Should support applying changeset\", function () {\n\t\t\tvar node = PropertyFactory.create(\"Int64\", \"array\");\n\t\t\tnode._applyChangeset(changeSetWithEntries);\n\t\t\texpect(node.get(0)).to.deep.equal(new Int64(1));\n\t\t\texpect(node.serialize()).to.deep.equal({\n\t\t\t\tinsert: [\n\t\t\t\t\t[\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t[1, 0],\n\t\t\t\t\t\t\t[123, 0],\n\t\t\t\t\t\t\t[4, 5],\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\tdescribe(\"change set specification should be met\", function () {\n\t\tit(\"Should handle push correctly\", function () {\n\t\t\tvar t = PropertyFactory.create(\"Int64\", \"array\");\n\t\t\tt.insertRange(0, [new Int64(1, 2), new Int64(3, 4)]);\n\t\t\tt.cleanDirty();\n\t\t\tt.push(new Int64(4, 5));\n\t\t\texpect(t.serialize({ dirtyOnly: true })).to.deep.equal({\n\t\t\t\tinsert: [[2, [[4, 5]]]],\n\t\t\t});\n\t\t});\n\n\t\tit(\"Should handle modifies correctly\", function () {\n\t\t\tvar t = PropertyFactory.create(\"Int64\", \"array\");\n\t\t\tt.insertRange(0, [new Int64(1, 2), new Int64(3, 4)]);\n\t\t\tt.cleanDirty();\n\t\t\tt.set(1, new Int64(4, 5));\n\t\t\texpect(t.serialize({ dirtyOnly: true })).to.deep.equal({\n\t\t\t\tmodify: [[1, [[4, 5]]]],\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"squashing\", function () {\n\t\t// Helper function to test the squashing for different containers\n\t\tvar innerTestChangeSetSquashing = function (\n\t\t\tio_testProperty,\n\t\t\tio_int64Property,\n\t\t\tio_initialChangeset,\n\t\t\tin_options,\n\t\t\tin_collection,\n\t\t) {\n\t\t\tvar squashedChangeset = new ChangeSet();\n\t\t\tio_initialChangeset.setIsNormalized(true);\n\t\t\tio_testProperty.cleanDirty(\n\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n\t\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE,\n\t\t\t);\n\t\t\tvar callbacks = in_options.callbacks;\n\t\t\tfor (var i = 0; i < callbacks.length; i++) {\n\t\t\t\tcallbacks[i](io_int64Property);\n\t\t\t\tvar changes = io_testProperty.serialize({ dirtyOnly: true });\n\t\t\t\tio_testProperty.cleanDirty(\n\t\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n\t\t\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE,\n\t\t\t\t);\n\t\t\t\tsquashedChangeset.applyChangeSet(changes);\n\t\t\t}\n\n\t\t\tif (in_options.post) {\n\t\t\t\tvar SC = squashedChangeset.getSerializedChangeSet();\n\t\t\t\tif (in_collection && SC.modify) {\n\t\t\t\t\tSC = SC.modify;\n\t\t\t\t}\n\t\t\t\tin_options.post(SC);\n\t\t\t}\n\t\t\tio_initialChangeset.applyChangeSet(squashedChangeset.getSerializedChangeSet());\n\t\t};\n\n\t\t//\n\t\t// Helper function which takes a sequence of callbacks that are successively executed\n\t\t// and the changes applied by the callbacks are separately tracked and squashed in a\n\t\t// a ChangeSet. This ChangeSet is then compared to the state in the property object\n\t\t//\n\t\t// Optionally, a a callback which controls the initial state before the squashing can\n\t\t// be given as first parameter\n\t\t//\n\t\tvar testChangeSetSquashing = function (in_options) {\n\t\t\tvar testProperty = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:SimpleInt64TestProperty-1.0.0\",\n\t\t\t);\n\n\t\t\tif (in_options.pre) {\n\t\t\t\tin_options.pre(testProperty._properties.int64Property);\n\t\t\t}\n\n\t\t\tvar initialChangeset = new ChangeSet(testProperty.serialize({ dirtyOnly: false }));\n\t\t\tinitialChangeset.setIsNormalized(true);\n\n\t\t\tinnerTestChangeSetSquashing(\n\t\t\t\ttestProperty,\n\t\t\t\ttestProperty._properties.int64Property,\n\t\t\t\tinitialChangeset,\n\t\t\t\tin_options,\n\t\t\t);\n\n\t\t\tvar initialChangeset = initialChangeset.getSerializedChangeSet();\n\t\t\tif (ChangeSet.isEmptyChangeSet(initialChangeset)) {\n\t\t\t\t// if one is empty the other should be empty, too\n\t\t\t\texpect(testProperty.serialize({ dirtyOnly: false })).to.be.empty;\n\t\t\t} else {\n\t\t\t\t// else they must be deep equal\n\t\t\t\texpect(initialChangeset[\"array<Int64>\"].int64Property).to.deep.equal(\n\t\t\t\t\ttestProperty.serialize({ dirtyOnly: false })[\"array<Int64>\"].int64Property,\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\tit(\"should work for multiple independent inserts\", function () {\n\t\t\ttestChangeSetSquashing({\n\t\t\t\tcallbacks: [insertInt64Value, insertInt64Value, insertInt64Value],\n\t\t\t});\n\t\t});\n\n\t\tit(\"should work for inserts followed by removes\", function () {\n\t\t\ttestChangeSetSquashing({\n\t\t\t\tcallbacks: [\n\t\t\t\t\tinsertInt64Value,\n\t\t\t\t\tinsertInt64Value,\n\t\t\t\t\tremoveArrayElement,\n\t\t\t\t\tremoveArrayElement,\n\t\t\t\t],\n\t\t\t\tpost: function (changeset) {\n\t\t\t\t\texpect(changeset).to.be.empty;\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tit(\"should work for mixed modifies and inserts\", function () {\n\t\t\ttestChangeSetSquashing({\n\t\t\t\tcallbacks: [insertInt64Value, modifyInt64Value, insertInt64Value, modifyInt64Value],\n\t\t\t});\n\t\t});\n\n\t\tit(\"an insert, modify and a remove should give an empty changeset\", function () {\n\t\t\ttestChangeSetSquashing({\n\t\t\t\tcallbacks: [insertInt64Value, modifyInt64Value, removeArrayElement],\n\t\t\t\tpost: function (changeset) {\n\t\t\t\t\texpect(changeset).to.be.empty;\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t\tit(\"work for modifies after an already existing insert\", function () {\n\t\t\ttestChangeSetSquashing({\n\t\t\t\tpre: insertInt64Value,\n\t\t\t\tcallbacks: [modifyInt64Value, modifyInt64Value],\n\t\t\t});\n\t\t});\n\t\tit(\"of modify and remove after an already existing insert should work\", function () {\n\t\t\ttestChangeSetSquashing({\n\t\t\t\tpre: insertInt64Value,\n\t\t\t\tcallbacks: [modifyInt64Value, removeArrayElement],\n\t\t\t\tpost: function (changeset) {\n\t\t\t\t\texpect(changeset[\"array<Int64>\"].int64Property).to.have.all.keys(\"remove\");\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"Rebasing\", function () {\n\t\tvar createPropertyForRebaseTestByTemplate = function () {\n\t\t\treturn PropertyFactory.create(\"autodesk.tests:SimpleInt64TestProperty-1.0.0\");\n\t\t};\n\n\t\tvar getint64PropertyFromNode = function (in_testProperty) {\n\t\t\treturn in_testProperty._properties.int64Property;\n\t\t};\n\n\t\tvar testRebasingInner = function (\n\t\t\tin_creator,\n\t\t\tin_getInnerProperty,\n\t\t\tin_options,\n\t\t\tin_isCollection,\n\t\t) {\n\t\t\t// Prepare the initial state\n\t\t\tvar baseProperty1 = in_creator();\n\t\t\tif (in_options.prepare) {\n\t\t\t\tin_options.prepare(in_getInnerProperty(baseProperty1));\n\t\t\t}\n\t\t\t// Create two copies of this state\n\t\t\tvar baseProperty2 = in_creator();\n\t\t\tbaseProperty2.deserialize(baseProperty1.serialize({ dirtyOnly: false }));\n\t\t\tvar baseProperty3 = in_creator();\n\t\t\tbaseProperty3.deserialize(baseProperty1.serialize({ dirtyOnly: false }));\n\n\t\t\t// Make sure the states are clear\n\t\t\tbaseProperty1.cleanDirty(\n\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n\t\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE,\n\t\t\t);\n\t\t\tbaseProperty2.cleanDirty(\n\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n\t\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE,\n\t\t\t);\n\t\t\tbaseProperty3.cleanDirty(\n\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n\t\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE,\n\t\t\t);\n\n\t\t\tvar initialChangeSet = baseProperty1.serialize({ dirtyOnly: false });\n\n\t\t\t// Apply the operations to the two properties in parallel\n\t\t\tif (in_options.op1) {\n\t\t\t\tin_options.op1(in_getInnerProperty(baseProperty1));\n\t\t\t}\n\t\t\tif (in_options.op2) {\n\t\t\t\tin_options.op2(in_getInnerProperty(baseProperty2));\n\t\t\t}\n\n\t\t\t// Get the ChangeSets\n\t\t\tvar changeSet1 = new ChangeSet(baseProperty1.serialize({ dirtyOnly: true }));\n\t\t\tvar changeSet2 = baseProperty2.serialize({ dirtyOnly: true });\n\n\t\t\t// Perform the actual rebase\n\t\t\tvar conflicts = [];\n\t\t\tchangeSet1._rebaseChangeSet(changeSet2, conflicts);\n\n\t\t\tvar combinedChangeSet = new ChangeSet(initialChangeSet).clone();\n\t\t\tcombinedChangeSet.setIsNormalized(true);\n\t\t\tcombinedChangeSet.applyChangeSet(changeSet1);\n\t\t\tcombinedChangeSet.applyChangeSet(changeSet2);\n\n\t\t\tif (in_options.compareToSequential) {\n\t\t\t\tif (in_options.op1) {\n\t\t\t\t\tin_options.op1(in_getInnerProperty(baseProperty3));\n\t\t\t\t}\n\t\t\t\tif (in_options.op2) {\n\t\t\t\t\tin_options.op2(in_getInnerProperty(baseProperty3));\n\t\t\t\t}\n\t\t\t\tvar finalChangeSet = baseProperty3.serialize({ dirtyOnly: false });\n\t\t\t\tif (in_isCollection && finalChangeSet.insert) {\n\t\t\t\t\tfinalChangeSet = finalChangeSet.insert;\n\t\t\t\t}\n\n\t\t\t\tvar combinedSerialized = combinedChangeSet.getSerializedChangeSet();\n\t\t\t\tif (ChangeSet.isEmptyChangeSet(combinedSerialized)) {\n\t\t\t\t\t// if one is empty the other should be empty, too\n\t\t\t\t\texpect(finalChangeSet).to.be.empty;\n\t\t\t\t} else {\n\t\t\t\t\t// else they must be deep equal\n\t\t\t\t\texpect(combinedSerialized[\"array<Int64>\"].int64Property).to.deep.equal(\n\t\t\t\t\t\tfinalChangeSet[\"array<Int64>\"].int64Property,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (in_options.checkResult) {\n\t\t\t\tif (in_isCollection && changeSet2.modify) {\n\t\t\t\t\tchangeSet2 = changeSet2.modify;\n\t\t\t\t}\n\t\t\t\tin_options.checkResult(conflicts, changeSet2, combinedChangeSet);\n\t\t\t}\n\t\t};\n\n\t\tvar testRebasing = function (in_options) {\n\t\t\ttestRebasingInner(\n\t\t\t\tcreatePropertyForRebaseTestByTemplate,\n\t\t\t\tgetint64PropertyFromNode,\n\t\t\t\tin_options,\n\t\t\t);\n\t\t};\n\n\t\tit(\"with a NOP should be possible\", function () {\n\t\t\ttestRebasing({\n\t\t\t\top2: insertInt64Value,\n\t\t\t\tcompareToSequential: true,\n\t\t\t});\n\t\t});\n\n\t\tit(\"with independent inserts should be possible\", function () {\n\t\t\ttestRebasing({\n\t\t\t\top1: insertInt64Value,\n\t\t\t\top2: insertInt64Value,\n\t\t\t\tcompareToSequential: true,\n\t\t\t});\n\t\t});\n\n\t\tit(\"with independent removes should be possible\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: function (root) {\n\t\t\t\t\tinsertInt64Value(root);\n\t\t\t\t\tinsertInt64Value(root);\n\t\t\t\t},\n\t\t\t\top1: function (root) {\n\t\t\t\t\troot.removeRange(1, 1);\n\t\t\t\t},\n\t\t\t\top2: function (root) {\n\t\t\t\t\troot.removeRange(0, 1);\n\t\t\t\t},\n\t\t\t\tcompareToSequential: true,\n\t\t\t});\n\t\t});\n\n\t\tit(\"with a modify and a remove should possible\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: insertInt64Value,\n\t\t\t\top1: modifyInt64Value,\n\t\t\t\top2: removeArrayElement,\n\t\t\t\tcompareToSequential: true,\n\t\t\t});\n\t\t});\n\n\t\tit(\"with a remove and a modify should possible\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: insertInt64Value,\n\t\t\t\top1: removeArrayElement,\n\t\t\t\top2: modifyInt64Value,\n\t\t\t\tcompareToSequential: false,\n\t\t\t\tcheckResult: function (conflicts, changeSet) {\n\t\t\t\t\texpect(conflicts).to.have.length(1);\n\t\t\t\t\texpect(conflicts[0].type).to.be.equal(\n\t\t\t\t\t\tChangeSet.ConflictType.ENTRY_MODIFIED_AFTER_REMOVE,\n\t\t\t\t\t);\n\t\t\t\t\texpect(conflicts[0].path).to.be.equal(\"int64Property\");\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tit(\"with two compatible removes should be possible\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: insertInt64Value,\n\t\t\t\top1: removeArrayElement,\n\t\t\t\top2: removeArrayElement,\n\t\t\t\tcompareToSequential: false,\n\t\t\t\tcheckResult: function (conflicts, changeSet) {\n\t\t\t\t\texpect(ChangeSet.isEmptyChangeSet(changeSet)).to.be.ok;\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tit(\"with two independent modifies should be possible\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: function (root) {\n\t\t\t\t\troot.insertRange(0, [new Int64(9, 8), new Int64(11, 21)]);\n\t\t\t\t},\n\t\t\t\top1: modifyInt64Value,\n\t\t\t\top2: function (root) {\n\t\t\t\t\troot.setRange(1, [new Int64(5, 6)]);\n\t\t\t\t},\n\t\t\t\tcompareToSequential: true,\n\t\t\t\tcheckResult: function (conflicts, changeSet) {\n\t\t\t\t\texpect(conflicts).to.be.empty;\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tit(\"with two conflicting modifies should be possible and report a conflict\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: insertInt64Value,\n\t\t\t\top1: function (int64Prop) {\n\t\t\t\t\tint64Prop.setRange(0, [new Int64(0, 64)]);\n\t\t\t\t},\n\t\t\t\top2: modifyInt64Value,\n\t\t\t\tcompareToSequential: true,\n\t\t\t\tcheckResult: function (conflicts, changeSet) {\n\t\t\t\t\texpect(conflicts).to.have.length(1);\n\t\t\t\t\texpect(changeSet[\"array<Int64>\"].int64Property.modify[0][1]).to.deep.equal([[0, 2]]);\n\t\t\t\t\texpect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);\n\t\t\t\t\texpect(conflicts[0].path).to.be.equal(\"int64Property\");\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tit(\"with modify followed by remove+insert should work\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: insertInt64Value,\n\t\t\t\top1: modifyInt64Value,\n\t\t\t\top2: function (root) {\n\t\t\t\t\tremoveArrayElement(root);\n\t\t\t\t\tinsertInt64Value(root);\n\t\t\t\t},\n\t\t\t\tcompareToSequential: true,\n\t\t\t\tcheckResult: function (conflicts, changeSet) {\n\t\t\t\t\texpect(conflicts).to.have.length(1);\n\t\t\t\t\texpect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.REMOVE_AFTER_MODIFY);\n\t\t\t\t\texpect(conflicts[0].path).to.be.equal(\"int64Property\");\n\t\t\t\t\texpect(changeSet[\"array<Int64>\"].int64Property).to.have.all.keys(\"remove\", \"insert\");\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tit(\"with remove + insert followed by modify should report conflict\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: insertInt64Value,\n\t\t\t\top1: function (root) {\n\t\t\t\t\tremoveArrayElement(root);\n\t\t\t\t\tinsertInt64Value(root);\n\t\t\t\t},\n\t\t\t\top2: modifyInt64Value,\n\t\t\t\tcompareToSequential: false,\n\t\t\t\tcheckResult: function (conflicts, changeSet) {\n\t\t\t\t\texpect(conflicts).to.have.length(1);\n\t\t\t\t\texpect(conflicts[0].type).to.be.equal(\n\t\t\t\t\t\tChangeSet.ConflictType.ENTRY_MODIFIED_AFTER_REMOVE,\n\t\t\t\t\t);\n\t\t\t\t\texpect(conflicts[0].path).to.be.equal(\"int64Property\");\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tit(\"with conflicting inserts should report conflict\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: insertInt64Value,\n\t\t\t\top1: insertInt64Value,\n\t\t\t\top2: insertInt64Value,\n\t\t\t\tcompareToSequential: false,\n\t\t\t\tcheckResult: function (conflicts, changeSet) {\n\t\t\t\t\texpect(conflicts).to.have.length(1);\n\t\t\t\t\texpect(conflicts[0].type).to.be.equal(\n\t\t\t\t\t\tChangeSet.ConflictType.INSERTED_ENTRY_WITH_SAME_KEY,\n\t\t\t\t\t);\n\t\t\t\t\texpect(conflicts[0].path).to.be.equal(\"int64Property\");\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t});\n});\n"]}
1
+ {"version":3,"file":"int64ArrayProperty.spec.js","sourceRoot":"","sources":["../../../src/test/properties/int64ArrayProperty.spec.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AAEH,QAAQ,CAAC,oBAAoB,EAAE;IAC9B,IAAI,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,CAAC;IAClD,IAAI,oBAAoB,EAAE,gBAAgB,CAAC;IAC3C,IAAI,WAAW,EAAE,KAAK,CAAC;IAEvB,MAAM,CAAC;QACN,iDAAiD;QACjD,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC;QACnD,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC;QAC7C,SAAS,GAAG,OAAO,CAAC,wCAAwC,CAAC,CAAC,SAAS,CAAC;QACxE,KAAK,GAAG,OAAO,CAAC,qCAAqC,CAAC,CAAC,KAAK,CAAC;QAC7D,GAAG,GAAG,OAAO,CAAC,qCAAqC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;QAEnE,wDAAwD;QACxD,IAAI,+BAA+B,GAAG;YACrC,MAAM,EAAE,8CAA8C;YACtD,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;SACxE,CAAC;QACF,eAAe,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;QAE7D,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,wCAAwC;IACxC,IAAI,gBAAgB,GAAG,UAAU,SAAS;QACzC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC;IAEF,2CAA2C;IAC3C,IAAI,kBAAkB,GAAG,UAAU,SAAS;QAC3C,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,0BAA0B;IAC1B,IAAI,gBAAgB,GAAG,UAAU,SAAS;QACzC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,QAAQ,CAAC,gDAAgD,EAAE;QAC1D,EAAE,CAAC,kCAAkC,EAAE;YACtC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YAC/D,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE;YACxD,iBAAiB;YACjB,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;YACnE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1D,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YACzE,oBAAoB,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACjE,MAAM,EAAE;oBACP;wBACC,CAAC;wBACD;4BACC,CAAC,CAAC,EAAE,CAAC,CAAC;4BACN,CAAC,UAAU,EAAE,OAAO,CAAC;4BACrB,CAAC,CAAC,EAAE,CAAC,CAAC;yBACN;qBACD;iBACD;aACD,CAAC,CAAC;YACH,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBAChE,MAAM,EAAE;oBACP;wBACC,CAAC;wBACD;4BACC,CAAC,CAAC,EAAE,CAAC,CAAC;4BACN,CAAC,UAAU,EAAE,OAAO,CAAC;4BACrB,CAAC,CAAC,EAAE,CAAC,CAAC;yBACN;qBACD;iBACD;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE;YAC1D,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1D,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,oBAAoB,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACjE,MAAM,EAAE;oBACP;wBACC,CAAC;wBACD;4BACC,CAAC,CAAC,EAAE,CAAC,CAAC;4BACN,CAAC,GAAG,EAAE,CAAC,CAAC;4BACR,CAAC,CAAC,EAAE,CAAC,CAAC;yBACN;qBACD;iBACD;aACD,CAAC,CAAC;YACH,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBAChE,MAAM,EAAE;oBACP;wBACC,CAAC;wBACD;4BACC,CAAC,CAAC,EAAE,CAAC,CAAC;4BACN,CAAC,GAAG,EAAE,CAAC,CAAC;4BACR,CAAC,CAAC,EAAE,CAAC,CAAC;yBACN;qBACD;iBACD;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE;YACtE,MAAM,CAAC,GAAG,EAAE;gBACX,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE;YACnE,MAAM,CAAC,GAAG,EAAE;gBACX,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,GAAG,6BAA6B,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE;YACtC,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAChE,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1D,gBAAgB,GAAG,WAAW,CAAC,SAAS,CAAC;gBACxC,SAAS,EAAE,IAAI;gBACf,iBAAiB,EAAE,KAAK;gBACxB,aAAa,EAAE,YAAY,CAAC,oBAAoB,CAAC,KAAK;aACtD,CAAC,CAAC;YACH,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACtD,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE;YACpC,IAAI,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAChE,IAAI,oBAAoB,GAAG,gBAAgB,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;YAC9E,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAEjE,IAAI,oBAAoB,GAAG,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE;YAC3D,MAAM,CAAC;gBACN,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE;YACvC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACtC,MAAM,EAAE;oBACP;wBACC,CAAC;wBACD;4BACC,CAAC,CAAC,EAAE,CAAC,CAAC;4BACN,CAAC,GAAG,EAAE,CAAC,CAAC;4BACR,CAAC,CAAC,EAAE,CAAC,CAAC;yBACN;qBACD;iBACD;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wCAAwC,EAAE;QAClD,EAAE,CAAC,8BAA8B,EAAE;YAClC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC,CAAC,UAAU,EAAE,CAAC;YACf,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACtD,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aACvB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE;YACtC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC,CAAC,UAAU,EAAE,CAAC;YACf,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACtD,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aACvB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE;QACrB,iEAAiE;QACjE,IAAI,2BAA2B,GAAG,UACjC,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACV,aAAa;YAEb,IAAI,iBAAiB,GAAG,IAAI,SAAS,EAAE,CAAC;YACxC,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC1C,eAAe,CAAC,UAAU,CACzB,YAAY,CAAC,oBAAoB,CAAC,KAAK;gBACtC,YAAY,CAAC,oBAAoB,CAAC,cAAc,CACjD,CAAC;YACF,IAAI,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;gBAC/B,IAAI,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7D,eAAe,CAAC,UAAU,CACzB,YAAY,CAAC,oBAAoB,CAAC,KAAK;oBACtC,YAAY,CAAC,oBAAoB,CAAC,cAAc,CACjD,CAAC;gBACF,iBAAiB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC3C,CAAC;YAED,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACrB,IAAI,EAAE,GAAG,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;gBACpD,IAAI,aAAa,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;oBAChC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;gBAChB,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrB,CAAC;YACD,mBAAmB,CAAC,cAAc,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAChF,CAAC,CAAC;QAEF,EAAE;QACF,qFAAqF;QACrF,oFAAoF;QACpF,mFAAmF;QACnF,EAAE;QACF,qFAAqF;QACrF,8BAA8B;QAC9B,EAAE;QACF,IAAI,sBAAsB,GAAG,UAAU,UAAU;YAChD,IAAI,YAAY,GAAG,eAAe,CAAC,MAAM,CACxC,8CAA8C,CAC9C,CAAC;YAEF,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC;gBACpB,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,gBAAgB,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACrF,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAEvC,2BAA2B,CAC1B,YAAY,EACZ,YAAY,CAAC,WAAW,CAAC,aAAa,EACtC,gBAAgB,EAChB,UAAU,CACV,CAAC;YAEF,MAAM,0BAA0B,GAAG,gBAAgB,CAAC,sBAAsB,EAAE,CAAC;YAC7E,IAAI,SAAS,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,EAAE,CAAC;gBAC5D,iDAAiD;gBACjD,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACP,+BAA+B;gBAC/B,MAAM,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAC7E,YAAY,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,aAAa,CAC1E,CAAC;YACH,CAAC;QACF,CAAC,CAAC;QAEF,EAAE,CAAC,8CAA8C,EAAE;YAClD,sBAAsB,CAAC;gBACtB,SAAS,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;aACjE,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE;YACjD,sBAAsB,CAAC;gBACtB,SAAS,EAAE;oBACV,gBAAgB;oBAChB,gBAAgB;oBAChB,kBAAkB;oBAClB,kBAAkB;iBAClB;gBACD,IAAI,EAAE,UAAU,SAAS;oBACxB,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;gBAC/B,CAAC;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE;YAChD,sBAAsB,CAAC;gBACtB,SAAS,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;aACnF,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE;YACnE,sBAAsB,CAAC;gBACtB,SAAS,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,CAAC;gBACnE,IAAI,EAAE,UAAU,SAAS;oBACxB,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;gBAC/B,CAAC;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,oDAAoD,EAAE;YACxD,sBAAsB,CAAC;gBACtB,GAAG,EAAE,gBAAgB;gBACrB,SAAS,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;aAC/C,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,mEAAmE,EAAE;YACvE,sBAAsB,CAAC;gBACtB,GAAG,EAAE,gBAAgB;gBACrB,SAAS,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;gBACjD,IAAI,EAAE,UAAU,SAAS;oBACxB,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC5E,CAAC;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE;QACpB,IAAI,qCAAqC,GAAG;YAC3C,OAAO,eAAe,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC;QAC/E,CAAC,CAAC;QAEF,IAAI,wBAAwB,GAAG,UAAU,eAAe;YACvD,OAAO,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC;QAClD,CAAC,CAAC;QAEF,IAAI,iBAAiB,GAAG,UACvB,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,eAAe;YAEf,4BAA4B;YAC5B,IAAI,aAAa,GAAG,UAAU,EAAE,CAAC;YACjC,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxB,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;YACxD,CAAC;YACD,kCAAkC;YAClC,IAAI,aAAa,GAAG,UAAU,EAAE,CAAC;YACjC,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACzE,IAAI,aAAa,GAAG,UAAU,EAAE,CAAC;YACjC,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAEzE,iCAAiC;YACjC,aAAa,CAAC,UAAU,CACvB,YAAY,CAAC,oBAAoB,CAAC,KAAK;gBACtC,YAAY,CAAC,oBAAoB,CAAC,cAAc,CACjD,CAAC;YACF,aAAa,CAAC,UAAU,CACvB,YAAY,CAAC,oBAAoB,CAAC,KAAK;gBACtC,YAAY,CAAC,oBAAoB,CAAC,cAAc,CACjD,CAAC;YACF,aAAa,CAAC,UAAU,CACvB,YAAY,CAAC,oBAAoB,CAAC,KAAK;gBACtC,YAAY,CAAC,oBAAoB,CAAC,cAAc,CACjD,CAAC;YAEF,IAAI,gBAAgB,GAAG,aAAa,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAErE,yDAAyD;YACzD,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC;gBACpB,UAAU,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;YACpD,CAAC;YACD,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC;gBACpB,UAAU,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;YACpD,CAAC;YAED,qBAAqB;YACrB,IAAI,UAAU,GAAG,IAAI,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7E,IAAI,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE9D,4BAA4B;YAC5B,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,UAAU,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAEnD,IAAI,iBAAiB,GAAG,IAAI,SAAS,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC;YAChE,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACxC,iBAAiB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC7C,iBAAiB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAE7C,IAAI,UAAU,CAAC,mBAAmB,EAAE,CAAC;gBACpC,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC;oBACpB,UAAU,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;gBACpD,CAAC;gBACD,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC;oBACpB,UAAU,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;gBACpD,CAAC;gBACD,IAAI,cAAc,GAAG,aAAa,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBACnE,IAAI,eAAe,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;oBAC9C,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC;gBACxC,CAAC;gBAED,IAAI,kBAAkB,GAAG,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;gBACpE,IAAI,SAAS,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBACpD,iDAAiD;oBACjD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACP,+BAA+B;oBAC/B,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CACrE,cAAc,CAAC,cAAc,CAAC,CAAC,aAAa,CAC5C,CAAC;gBACH,CAAC;YACF,CAAC;YAED,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;gBAC5B,IAAI,eAAe,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBAC1C,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;gBAChC,CAAC;gBACD,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;YAClE,CAAC;QACF,CAAC,CAAC;QAEF,IAAI,YAAY,GAAG,UAAU,UAAU;YACtC,iBAAiB,CAChB,qCAAqC,EACrC,wBAAwB,EACxB,UAAU,CACV,CAAC;QACH,CAAC,CAAC;QAEF,EAAE,CAAC,+BAA+B,EAAE;YACnC,YAAY,CAAC;gBACZ,GAAG,EAAE,gBAAgB;gBACrB,mBAAmB,EAAE,IAAI;aACzB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE;YACjD,YAAY,CAAC;gBACZ,GAAG,EAAE,gBAAgB;gBACrB,GAAG,EAAE,gBAAgB;gBACrB,mBAAmB,EAAE,IAAI;aACzB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE;YACjD,YAAY,CAAC;gBACZ,OAAO,EAAE,UAAU,IAAI;oBACtB,gBAAgB,CAAC,IAAI,CAAC,CAAC;oBACvB,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;gBACD,GAAG,EAAE,UAAU,IAAI;oBAClB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxB,CAAC;gBACD,GAAG,EAAE,UAAU,IAAI;oBAClB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxB,CAAC;gBACD,mBAAmB,EAAE,IAAI;aACzB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE;YAChD,YAAY,CAAC;gBACZ,OAAO,EAAE,gBAAgB;gBACzB,GAAG,EAAE,gBAAgB;gBACrB,GAAG,EAAE,kBAAkB;gBACvB,mBAAmB,EAAE,IAAI;aACzB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE;YAChD,YAAY,CAAC;gBACZ,OAAO,EAAE,gBAAgB;gBACzB,GAAG,EAAE,kBAAkB;gBACvB,GAAG,EAAE,gBAAgB;gBACrB,mBAAmB,EAAE,KAAK;gBAC1B,WAAW,EAAE,UAAU,SAAS,EAAE,SAAS;oBAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACpC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CACpC,SAAS,CAAC,YAAY,CAAC,2BAA2B,CAClD,CAAC;oBACF,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBACxD,CAAC;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE;YACpD,YAAY,CAAC;gBACZ,OAAO,EAAE,gBAAgB;gBACzB,GAAG,EAAE,kBAAkB;gBACvB,GAAG,EAAE,kBAAkB;gBACvB,mBAAmB,EAAE,KAAK;gBAC1B,WAAW,EAAE,UAAU,SAAS,EAAE,SAAS;oBAC1C,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxD,CAAC;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE;YACtD,YAAY,CAAC;gBACZ,OAAO,EAAE,UAAU,IAAI;oBACtB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC3D,CAAC;gBACD,GAAG,EAAE,gBAAgB;gBACrB,GAAG,EAAE,UAAU,IAAI;oBAClB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrC,CAAC;gBACD,mBAAmB,EAAE,IAAI;gBACzB,WAAW,EAAE,UAAU,SAAS,EAAE,SAAS;oBAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;gBAC/B,CAAC;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wEAAwE,EAAE;YAC5E,YAAY,CAAC;gBACZ,OAAO,EAAE,gBAAgB;gBACzB,GAAG,EAAE,UAAU,SAAS;oBACvB,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC3C,CAAC;gBACD,GAAG,EAAE,gBAAgB;gBACrB,mBAAmB,EAAE,IAAI;gBACzB,WAAW,EAAE,UAAU,SAAS,EAAE,SAAS;oBAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACpC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrF,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;oBAC5E,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBACxD,CAAC;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE;YACvD,YAAY,CAAC;gBACZ,OAAO,EAAE,gBAAgB;gBACzB,GAAG,EAAE,gBAAgB;gBACrB,GAAG,EAAE,UAAU,IAAI;oBAClB,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBACzB,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;gBACD,mBAAmB,EAAE,IAAI;gBACzB,WAAW,EAAE,UAAU,SAAS,EAAE,SAAS;oBAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACpC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;oBAClF,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;oBACvD,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACtF,CAAC;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE;YACpE,YAAY,CAAC;gBACZ,OAAO,EAAE,gBAAgB;gBACzB,GAAG,EAAE,UAAU,IAAI;oBAClB,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBACzB,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;gBACD,GAAG,EAAE,gBAAgB;gBACrB,mBAAmB,EAAE,KAAK;gBAC1B,WAAW,EAAE,UAAU,SAAS,EAAE,SAAS;oBAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACpC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CACpC,SAAS,CAAC,YAAY,CAAC,2BAA2B,CAClD,CAAC;oBACF,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBACxD,CAAC;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE;YACrD,YAAY,CAAC;gBACZ,OAAO,EAAE,gBAAgB;gBACzB,GAAG,EAAE,gBAAgB;gBACrB,GAAG,EAAE,gBAAgB;gBACrB,mBAAmB,EAAE,KAAK;gBAC1B,WAAW,EAAE,UAAU,SAAS,EAAE,SAAS;oBAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACpC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CACpC,SAAS,CAAC,YAAY,CAAC,4BAA4B,CACnD,CAAC;oBACF,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBACxD,CAAC;aACD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @fileoverview In this file, we will test the Int64ArrayProperty object described in /src/properties/arrayProperty.js\n */\n\ndescribe(\"Int64ArrayProperty\", function () {\n\tvar PropertyFactory, BaseProperty, ChangeSet, MSG;\n\tvar changeSetWithEntries, removalChangeSet;\n\tvar myInt64Prop, Int64;\n\n\tbefore(function () {\n\t\t// Get all the objects we need in this test here.\n\t\tPropertyFactory = require(\"../..\").PropertyFactory;\n\t\tBaseProperty = require(\"../..\").BaseProperty;\n\t\tChangeSet = require(\"@fluid-experimental/property-changeset\").ChangeSet;\n\t\tInt64 = require(\"@fluid-experimental/property-common\").Int64;\n\t\tMSG = require(\"@fluid-experimental/property-common\").constants.MSG;\n\n\t\t// Register a template with a set property for the tests\n\t\tvar SimpleInt64TestPropertyTemplate = {\n\t\t\ttypeid: \"autodesk.tests:SimpleInt64TestProperty-1.0.0\",\n\t\t\tproperties: [{ id: \"int64Property\", typeid: \"Int64\", context: \"array\" }],\n\t\t};\n\t\tPropertyFactory._reregister(SimpleInt64TestPropertyTemplate);\n\n\t\tmyInt64Prop = PropertyFactory.create(\"Int64\", \"array\");\n\t});\n\n\t// Inserts an Int64 value into the array\n\tvar insertInt64Value = function (int64Prop) {\n\t\tint64Prop.insertRange(0, [new Int64(0, 1)]);\n\t};\n\n\t// Removes the first element from the array\n\tvar removeArrayElement = function (int64Prop) {\n\t\tint64Prop.removeRange(0, 1);\n\t};\n\n\t// Modifies an array value\n\tvar modifyInt64Value = function (int64Prop) {\n\t\tint64Prop.setRange(0, [new Int64(0, 2)]);\n\t};\n\n\tdescribe(\"Testing creation, assignment and serialization\", function () {\n\t\tit(\"should be empty at the beginning\", function () {\n\t\t\texpect(myInt64Prop.length).to.equal(0);\n\t\t\texpect(myInt64Prop.serialize({ dirtyOnly: true })).to.be.empty;\n\t\t\texpect(myInt64Prop.serialize({ dirtyOnly: false })).to.be.empty;\n\t\t});\n\n\t\tit(\"should be possible to insert into the 64 bit array\", function () {\n\t\t\t// Text insertion\n\t\t\tmyInt64Prop.insertRange(0, [new Int64(1, 2), \"12345678987654321\"]);\n\t\t\texpect(myInt64Prop.get(0)).to.deep.equal(new Int64(1, 2));\n\t\t\tmyInt64Prop.insertRange(2, [5]);\n\t\t\texpect(myInt64Prop.get(1)).to.deep.equal(new Int64(1653732529, 2874452));\n\t\t\tchangeSetWithEntries = myInt64Prop.serialize({ dirtyOnly: true });\n\t\t\texpect(myInt64Prop.serialize({ dirtyOnly: false })).to.deep.equal({\n\t\t\t\tinsert: [\n\t\t\t\t\t[\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t[1, 2],\n\t\t\t\t\t\t\t[1653732529, 2874452],\n\t\t\t\t\t\t\t[5, 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\texpect(myInt64Prop.serialize({ dirtyOnly: true })).to.deep.equal({\n\t\t\t\tinsert: [\n\t\t\t\t\t[\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t[1, 2],\n\t\t\t\t\t\t\t[1653732529, 2874452],\n\t\t\t\t\t\t\t[5, 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\tit(\"should be possible to set values in the 64 bit array\", function () {\n\t\t\tmyInt64Prop.setRange(0, [1, \"123\", new Int64(2, 2)]);\n\t\t\texpect(myInt64Prop.get(0)).to.deep.equal(new Int64(1, 0));\n\t\t\tmyInt64Prop.setRange(2, [new Int64(4, 5)]);\n\t\t\tchangeSetWithEntries = myInt64Prop.serialize({ dirtyOnly: true });\n\t\t\texpect(myInt64Prop.serialize({ dirtyOnly: false })).to.deep.equal({\n\t\t\t\tinsert: [\n\t\t\t\t\t[\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t[1, 0],\n\t\t\t\t\t\t\t[123, 0],\n\t\t\t\t\t\t\t[4, 5],\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\texpect(myInt64Prop.serialize({ dirtyOnly: true })).to.deep.equal({\n\t\t\t\tinsert: [\n\t\t\t\t\t[\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t[1, 0],\n\t\t\t\t\t\t\t[123, 0],\n\t\t\t\t\t\t\t[4, 5],\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\tit(\".setRange should throw an error when in_offset is not an integer\", function () {\n\t\t\texpect(() => {\n\t\t\t\tmyInt64Prop.setRange(\"test\", [new Int64(2, 2)]);\n\t\t\t}).to.throw(MSG.NOT_NUMBER);\n\t\t});\n\n\t\tit(\".setRange should throw an error when in_array is not an array\", function () {\n\t\t\texpect(() => {\n\t\t\t\tmyInt64Prop.setRange(0, new Int64(2, 2));\n\t\t\t}).to.throw(MSG.IN_ARRAY_NOT_ARRAY + \"Int64ArrayProperty.setRange\");\n\t\t});\n\n\t\tit(\"Should handle removals correctly\", function () {\n\t\t\tmyInt64Prop.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY);\n\t\t\tmyInt64Prop.removeRange(0, 2);\n\t\t\texpect(myInt64Prop.get(0)).to.deep.equal(new Int64(4, 5));\n\t\t\tremovalChangeSet = myInt64Prop.serialize({\n\t\t\t\tdirtyOnly: true,\n\t\t\t\tincludeRootTypeid: false,\n\t\t\t\tdirtinessType: BaseProperty.MODIFIED_STATE_FLAGS.DIRTY,\n\t\t\t});\n\t\t\texpect(removalChangeSet).to.have.all.keys([\"remove\"]);\n\t\t\texpect(removalChangeSet.remove).to.have.length(1);\n\t\t\texpect(removalChangeSet.remove[0]).to.deep.equal([0, 2]);\n\t\t});\n\n\t\tit(\"Should support deserialization\", function () {\n\t\t\tvar deserializedNode = PropertyFactory.create(\"Int64\", \"array\");\n\t\t\tvar deserializedChanges1 = deserializedNode.deserialize(changeSetWithEntries);\n\t\t\texpect(deserializedChanges1).to.deep.equal(changeSetWithEntries);\n\n\t\t\tvar deserializedChanges3 = deserializedNode.deserialize({});\n\t\t\texpect(deserializedChanges3).to.deep.equal({ remove: [[0, 3]] });\n\t\t});\n\n\t\tit(\"inserting at a bad position should throw an exception\", function () {\n\t\t\texpect(function () {\n\t\t\t\tmyInt64Prop.insertRange(2242, new Int64(4, 5));\n\t\t\t}).to.throw();\n\t\t});\n\n\t\tit(\"Should support applying changeset\", function () {\n\t\t\tvar node = PropertyFactory.create(\"Int64\", \"array\");\n\t\t\tnode._applyChangeset(changeSetWithEntries);\n\t\t\texpect(node.get(0)).to.deep.equal(new Int64(1));\n\t\t\texpect(node.serialize()).to.deep.equal({\n\t\t\t\tinsert: [\n\t\t\t\t\t[\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t[1, 0],\n\t\t\t\t\t\t\t[123, 0],\n\t\t\t\t\t\t\t[4, 5],\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\tdescribe(\"change set specification should be met\", function () {\n\t\tit(\"Should handle push correctly\", function () {\n\t\t\tvar t = PropertyFactory.create(\"Int64\", \"array\");\n\t\t\tt.insertRange(0, [new Int64(1, 2), new Int64(3, 4)]);\n\t\t\tt.cleanDirty();\n\t\t\tt.push(new Int64(4, 5));\n\t\t\texpect(t.serialize({ dirtyOnly: true })).to.deep.equal({\n\t\t\t\tinsert: [[2, [[4, 5]]]],\n\t\t\t});\n\t\t});\n\n\t\tit(\"Should handle modifies correctly\", function () {\n\t\t\tvar t = PropertyFactory.create(\"Int64\", \"array\");\n\t\t\tt.insertRange(0, [new Int64(1, 2), new Int64(3, 4)]);\n\t\t\tt.cleanDirty();\n\t\t\tt.set(1, new Int64(4, 5));\n\t\t\texpect(t.serialize({ dirtyOnly: true })).to.deep.equal({\n\t\t\t\tmodify: [[1, [[4, 5]]]],\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"squashing\", function () {\n\t\t// Helper function to test the squashing for different containers\n\t\tvar innerTestChangeSetSquashing = function (\n\t\t\tio_testProperty,\n\t\t\tio_int64Property,\n\t\t\tio_initialChangeset,\n\t\t\tin_options,\n\t\t\tin_collection,\n\t\t) {\n\t\t\tvar squashedChangeset = new ChangeSet();\n\t\t\tio_initialChangeset.setIsNormalized(true);\n\t\t\tio_testProperty.cleanDirty(\n\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n\t\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE,\n\t\t\t);\n\t\t\tvar callbacks = in_options.callbacks;\n\t\t\tfor (var i = 0; i < callbacks.length; i++) {\n\t\t\t\tcallbacks[i](io_int64Property);\n\t\t\t\tvar changes = io_testProperty.serialize({ dirtyOnly: true });\n\t\t\t\tio_testProperty.cleanDirty(\n\t\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n\t\t\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE,\n\t\t\t\t);\n\t\t\t\tsquashedChangeset.applyChangeSet(changes);\n\t\t\t}\n\n\t\t\tif (in_options.post) {\n\t\t\t\tvar SC = squashedChangeset.getSerializedChangeSet();\n\t\t\t\tif (in_collection && SC.modify) {\n\t\t\t\t\tSC = SC.modify;\n\t\t\t\t}\n\t\t\t\tin_options.post(SC);\n\t\t\t}\n\t\t\tio_initialChangeset.applyChangeSet(squashedChangeset.getSerializedChangeSet());\n\t\t};\n\n\t\t//\n\t\t// Helper function which takes a sequence of callbacks that are successively executed\n\t\t// and the changes applied by the callbacks are separately tracked and squashed in a\n\t\t// a ChangeSet. This ChangeSet is then compared to the state in the property object\n\t\t//\n\t\t// Optionally, a a callback which controls the initial state before the squashing can\n\t\t// be given as first parameter\n\t\t//\n\t\tvar testChangeSetSquashing = function (in_options) {\n\t\t\tvar testProperty = PropertyFactory.create(\n\t\t\t\t\"autodesk.tests:SimpleInt64TestProperty-1.0.0\",\n\t\t\t);\n\n\t\t\tif (in_options.pre) {\n\t\t\t\tin_options.pre(testProperty._properties.int64Property);\n\t\t\t}\n\n\t\t\tconst initialChangeset = new ChangeSet(testProperty.serialize({ dirtyOnly: false }));\n\t\t\tinitialChangeset.setIsNormalized(true);\n\n\t\t\tinnerTestChangeSetSquashing(\n\t\t\t\ttestProperty,\n\t\t\t\ttestProperty._properties.int64Property,\n\t\t\t\tinitialChangeset,\n\t\t\t\tin_options,\n\t\t\t);\n\n\t\t\tconst initialChangesetSerialized = initialChangeset.getSerializedChangeSet();\n\t\t\tif (ChangeSet.isEmptyChangeSet(initialChangesetSerialized)) {\n\t\t\t\t// if one is empty the other should be empty, too\n\t\t\t\texpect(testProperty.serialize({ dirtyOnly: false })).to.be.empty;\n\t\t\t} else {\n\t\t\t\t// else they must be deep equal\n\t\t\t\texpect(initialChangesetSerialized[\"array<Int64>\"].int64Property).to.deep.equal(\n\t\t\t\t\ttestProperty.serialize({ dirtyOnly: false })[\"array<Int64>\"].int64Property,\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\n\t\tit(\"should work for multiple independent inserts\", function () {\n\t\t\ttestChangeSetSquashing({\n\t\t\t\tcallbacks: [insertInt64Value, insertInt64Value, insertInt64Value],\n\t\t\t});\n\t\t});\n\n\t\tit(\"should work for inserts followed by removes\", function () {\n\t\t\ttestChangeSetSquashing({\n\t\t\t\tcallbacks: [\n\t\t\t\t\tinsertInt64Value,\n\t\t\t\t\tinsertInt64Value,\n\t\t\t\t\tremoveArrayElement,\n\t\t\t\t\tremoveArrayElement,\n\t\t\t\t],\n\t\t\t\tpost: function (changeset) {\n\t\t\t\t\texpect(changeset).to.be.empty;\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tit(\"should work for mixed modifies and inserts\", function () {\n\t\t\ttestChangeSetSquashing({\n\t\t\t\tcallbacks: [insertInt64Value, modifyInt64Value, insertInt64Value, modifyInt64Value],\n\t\t\t});\n\t\t});\n\n\t\tit(\"an insert, modify and a remove should give an empty changeset\", function () {\n\t\t\ttestChangeSetSquashing({\n\t\t\t\tcallbacks: [insertInt64Value, modifyInt64Value, removeArrayElement],\n\t\t\t\tpost: function (changeset) {\n\t\t\t\t\texpect(changeset).to.be.empty;\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t\tit(\"work for modifies after an already existing insert\", function () {\n\t\t\ttestChangeSetSquashing({\n\t\t\t\tpre: insertInt64Value,\n\t\t\t\tcallbacks: [modifyInt64Value, modifyInt64Value],\n\t\t\t});\n\t\t});\n\t\tit(\"of modify and remove after an already existing insert should work\", function () {\n\t\t\ttestChangeSetSquashing({\n\t\t\t\tpre: insertInt64Value,\n\t\t\t\tcallbacks: [modifyInt64Value, removeArrayElement],\n\t\t\t\tpost: function (changeset) {\n\t\t\t\t\texpect(changeset[\"array<Int64>\"].int64Property).to.have.all.keys(\"remove\");\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"Rebasing\", function () {\n\t\tvar createPropertyForRebaseTestByTemplate = function () {\n\t\t\treturn PropertyFactory.create(\"autodesk.tests:SimpleInt64TestProperty-1.0.0\");\n\t\t};\n\n\t\tvar getint64PropertyFromNode = function (in_testProperty) {\n\t\t\treturn in_testProperty._properties.int64Property;\n\t\t};\n\n\t\tvar testRebasingInner = function (\n\t\t\tin_creator,\n\t\t\tin_getInnerProperty,\n\t\t\tin_options,\n\t\t\tin_isCollection,\n\t\t) {\n\t\t\t// Prepare the initial state\n\t\t\tvar baseProperty1 = in_creator();\n\t\t\tif (in_options.prepare) {\n\t\t\t\tin_options.prepare(in_getInnerProperty(baseProperty1));\n\t\t\t}\n\t\t\t// Create two copies of this state\n\t\t\tvar baseProperty2 = in_creator();\n\t\t\tbaseProperty2.deserialize(baseProperty1.serialize({ dirtyOnly: false }));\n\t\t\tvar baseProperty3 = in_creator();\n\t\t\tbaseProperty3.deserialize(baseProperty1.serialize({ dirtyOnly: false }));\n\n\t\t\t// Make sure the states are clear\n\t\t\tbaseProperty1.cleanDirty(\n\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n\t\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE,\n\t\t\t);\n\t\t\tbaseProperty2.cleanDirty(\n\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n\t\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE,\n\t\t\t);\n\t\t\tbaseProperty3.cleanDirty(\n\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n\t\t\t\t\tBaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE,\n\t\t\t);\n\n\t\t\tvar initialChangeSet = baseProperty1.serialize({ dirtyOnly: false });\n\n\t\t\t// Apply the operations to the two properties in parallel\n\t\t\tif (in_options.op1) {\n\t\t\t\tin_options.op1(in_getInnerProperty(baseProperty1));\n\t\t\t}\n\t\t\tif (in_options.op2) {\n\t\t\t\tin_options.op2(in_getInnerProperty(baseProperty2));\n\t\t\t}\n\n\t\t\t// Get the ChangeSets\n\t\t\tvar changeSet1 = new ChangeSet(baseProperty1.serialize({ dirtyOnly: true }));\n\t\t\tvar changeSet2 = baseProperty2.serialize({ dirtyOnly: true });\n\n\t\t\t// Perform the actual rebase\n\t\t\tvar conflicts = [];\n\t\t\tchangeSet1._rebaseChangeSet(changeSet2, conflicts);\n\n\t\t\tvar combinedChangeSet = new ChangeSet(initialChangeSet).clone();\n\t\t\tcombinedChangeSet.setIsNormalized(true);\n\t\t\tcombinedChangeSet.applyChangeSet(changeSet1);\n\t\t\tcombinedChangeSet.applyChangeSet(changeSet2);\n\n\t\t\tif (in_options.compareToSequential) {\n\t\t\t\tif (in_options.op1) {\n\t\t\t\t\tin_options.op1(in_getInnerProperty(baseProperty3));\n\t\t\t\t}\n\t\t\t\tif (in_options.op2) {\n\t\t\t\t\tin_options.op2(in_getInnerProperty(baseProperty3));\n\t\t\t\t}\n\t\t\t\tvar finalChangeSet = baseProperty3.serialize({ dirtyOnly: false });\n\t\t\t\tif (in_isCollection && finalChangeSet.insert) {\n\t\t\t\t\tfinalChangeSet = finalChangeSet.insert;\n\t\t\t\t}\n\n\t\t\t\tvar combinedSerialized = combinedChangeSet.getSerializedChangeSet();\n\t\t\t\tif (ChangeSet.isEmptyChangeSet(combinedSerialized)) {\n\t\t\t\t\t// if one is empty the other should be empty, too\n\t\t\t\t\texpect(finalChangeSet).to.be.empty;\n\t\t\t\t} else {\n\t\t\t\t\t// else they must be deep equal\n\t\t\t\t\texpect(combinedSerialized[\"array<Int64>\"].int64Property).to.deep.equal(\n\t\t\t\t\t\tfinalChangeSet[\"array<Int64>\"].int64Property,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (in_options.checkResult) {\n\t\t\t\tif (in_isCollection && changeSet2.modify) {\n\t\t\t\t\tchangeSet2 = changeSet2.modify;\n\t\t\t\t}\n\t\t\t\tin_options.checkResult(conflicts, changeSet2, combinedChangeSet);\n\t\t\t}\n\t\t};\n\n\t\tvar testRebasing = function (in_options) {\n\t\t\ttestRebasingInner(\n\t\t\t\tcreatePropertyForRebaseTestByTemplate,\n\t\t\t\tgetint64PropertyFromNode,\n\t\t\t\tin_options,\n\t\t\t);\n\t\t};\n\n\t\tit(\"with a NOP should be possible\", function () {\n\t\t\ttestRebasing({\n\t\t\t\top2: insertInt64Value,\n\t\t\t\tcompareToSequential: true,\n\t\t\t});\n\t\t});\n\n\t\tit(\"with independent inserts should be possible\", function () {\n\t\t\ttestRebasing({\n\t\t\t\top1: insertInt64Value,\n\t\t\t\top2: insertInt64Value,\n\t\t\t\tcompareToSequential: true,\n\t\t\t});\n\t\t});\n\n\t\tit(\"with independent removes should be possible\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: function (root) {\n\t\t\t\t\tinsertInt64Value(root);\n\t\t\t\t\tinsertInt64Value(root);\n\t\t\t\t},\n\t\t\t\top1: function (root) {\n\t\t\t\t\troot.removeRange(1, 1);\n\t\t\t\t},\n\t\t\t\top2: function (root) {\n\t\t\t\t\troot.removeRange(0, 1);\n\t\t\t\t},\n\t\t\t\tcompareToSequential: true,\n\t\t\t});\n\t\t});\n\n\t\tit(\"with a modify and a remove should possible\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: insertInt64Value,\n\t\t\t\top1: modifyInt64Value,\n\t\t\t\top2: removeArrayElement,\n\t\t\t\tcompareToSequential: true,\n\t\t\t});\n\t\t});\n\n\t\tit(\"with a remove and a modify should possible\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: insertInt64Value,\n\t\t\t\top1: removeArrayElement,\n\t\t\t\top2: modifyInt64Value,\n\t\t\t\tcompareToSequential: false,\n\t\t\t\tcheckResult: function (conflicts, changeSet) {\n\t\t\t\t\texpect(conflicts).to.have.length(1);\n\t\t\t\t\texpect(conflicts[0].type).to.be.equal(\n\t\t\t\t\t\tChangeSet.ConflictType.ENTRY_MODIFIED_AFTER_REMOVE,\n\t\t\t\t\t);\n\t\t\t\t\texpect(conflicts[0].path).to.be.equal(\"int64Property\");\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tit(\"with two compatible removes should be possible\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: insertInt64Value,\n\t\t\t\top1: removeArrayElement,\n\t\t\t\top2: removeArrayElement,\n\t\t\t\tcompareToSequential: false,\n\t\t\t\tcheckResult: function (conflicts, changeSet) {\n\t\t\t\t\texpect(ChangeSet.isEmptyChangeSet(changeSet)).to.be.ok;\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tit(\"with two independent modifies should be possible\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: function (root) {\n\t\t\t\t\troot.insertRange(0, [new Int64(9, 8), new Int64(11, 21)]);\n\t\t\t\t},\n\t\t\t\top1: modifyInt64Value,\n\t\t\t\top2: function (root) {\n\t\t\t\t\troot.setRange(1, [new Int64(5, 6)]);\n\t\t\t\t},\n\t\t\t\tcompareToSequential: true,\n\t\t\t\tcheckResult: function (conflicts, changeSet) {\n\t\t\t\t\texpect(conflicts).to.be.empty;\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tit(\"with two conflicting modifies should be possible and report a conflict\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: insertInt64Value,\n\t\t\t\top1: function (int64Prop) {\n\t\t\t\t\tint64Prop.setRange(0, [new Int64(0, 64)]);\n\t\t\t\t},\n\t\t\t\top2: modifyInt64Value,\n\t\t\t\tcompareToSequential: true,\n\t\t\t\tcheckResult: function (conflicts, changeSet) {\n\t\t\t\t\texpect(conflicts).to.have.length(1);\n\t\t\t\t\texpect(changeSet[\"array<Int64>\"].int64Property.modify[0][1]).to.deep.equal([[0, 2]]);\n\t\t\t\t\texpect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);\n\t\t\t\t\texpect(conflicts[0].path).to.be.equal(\"int64Property\");\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tit(\"with modify followed by remove+insert should work\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: insertInt64Value,\n\t\t\t\top1: modifyInt64Value,\n\t\t\t\top2: function (root) {\n\t\t\t\t\tremoveArrayElement(root);\n\t\t\t\t\tinsertInt64Value(root);\n\t\t\t\t},\n\t\t\t\tcompareToSequential: true,\n\t\t\t\tcheckResult: function (conflicts, changeSet) {\n\t\t\t\t\texpect(conflicts).to.have.length(1);\n\t\t\t\t\texpect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.REMOVE_AFTER_MODIFY);\n\t\t\t\t\texpect(conflicts[0].path).to.be.equal(\"int64Property\");\n\t\t\t\t\texpect(changeSet[\"array<Int64>\"].int64Property).to.have.all.keys(\"remove\", \"insert\");\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tit(\"with remove + insert followed by modify should report conflict\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: insertInt64Value,\n\t\t\t\top1: function (root) {\n\t\t\t\t\tremoveArrayElement(root);\n\t\t\t\t\tinsertInt64Value(root);\n\t\t\t\t},\n\t\t\t\top2: modifyInt64Value,\n\t\t\t\tcompareToSequential: false,\n\t\t\t\tcheckResult: function (conflicts, changeSet) {\n\t\t\t\t\texpect(conflicts).to.have.length(1);\n\t\t\t\t\texpect(conflicts[0].type).to.be.equal(\n\t\t\t\t\t\tChangeSet.ConflictType.ENTRY_MODIFIED_AFTER_REMOVE,\n\t\t\t\t\t);\n\t\t\t\t\texpect(conflicts[0].path).to.be.equal(\"int64Property\");\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\n\t\tit(\"with conflicting inserts should report conflict\", function () {\n\t\t\ttestRebasing({\n\t\t\t\tprepare: insertInt64Value,\n\t\t\t\top1: insertInt64Value,\n\t\t\t\top2: insertInt64Value,\n\t\t\t\tcompareToSequential: false,\n\t\t\t\tcheckResult: function (conflicts, changeSet) {\n\t\t\t\t\texpect(conflicts).to.have.length(1);\n\t\t\t\t\texpect(conflicts[0].type).to.be.equal(\n\t\t\t\t\t\tChangeSet.ConflictType.INSERTED_ENTRY_WITH_SAME_KEY,\n\t\t\t\t\t);\n\t\t\t\t\texpect(conflicts[0].path).to.be.equal(\"int64Property\");\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t});\n});\n"]}
@@ -222,8 +222,8 @@ describe("Test Int64Property", function () {
222
222
  innerTestChangeSetSquashing(testProperty, testProperty._properties.myInt64, initialChangeset, in_options);
223
223
  innerTestChangeSetSquashing(nodeTestProperty, int64InNodeProperty, initialChangesetNode, in_options, true);
224
224
  innerTestChangeSetSquashing(mapTestProperty, int64InMapProperty, initialChangesetMap, in_options, true);
225
- var initialChangeset = initialChangeset.getSerializedChangeSet().Int64.intProperty;
226
- expect(initialChangeset).to.deep.equal(testProperty.serialize({ dirtyOnly: false }).Int64.intProperty);
225
+ var initialChangesetSerialized = initialChangeset.getSerializedChangeSet().Int64.intProperty;
226
+ expect(initialChangesetSerialized).to.deep.equal(testProperty.serialize({ dirtyOnly: false }).Int64.intProperty);
227
227
  var nodeInitialChangeset = initialChangesetNode.getSerializedChangeSet().insert.Int64.intProperty;
228
228
  expect(nodeInitialChangeset).to.deep.equal(nodeTestProperty.serialize({ dirtyOnly: false }).insert.Int64.intProperty);
229
229
  var mapInitialChangeset = initialChangesetMap.getSerializedChangeSet().insert.Int64.intProperty;