@fluid-experimental/property-properties 0.58.1001 → 0.58.2000-58133
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/containerSerializer.d.ts.map +1 -1
- package/dist/containerSerializer.js +4 -10
- package/dist/containerSerializer.js.map +1 -1
- package/dist/enableValidations.d.ts.map +1 -1
- package/dist/enableValidations.js +1 -1
- package/dist/enableValidations.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/properties/abstractStaticCollectionProperty.d.ts.map +1 -1
- package/dist/properties/abstractStaticCollectionProperty.js +1 -28
- package/dist/properties/abstractStaticCollectionProperty.js.map +1 -1
- package/dist/properties/arrayProperty.d.ts.map +1 -1
- package/dist/properties/arrayProperty.js +26 -85
- package/dist/properties/arrayProperty.js.map +1 -1
- package/dist/properties/baseProperty.d.ts.map +1 -1
- package/dist/properties/baseProperty.js +9 -71
- package/dist/properties/baseProperty.js.map +1 -1
- package/dist/properties/boolProperty.d.ts.map +1 -1
- package/dist/properties/boolProperty.js +0 -1
- package/dist/properties/boolProperty.js.map +1 -1
- package/dist/properties/containerProperty.d.ts.map +1 -1
- package/dist/properties/containerProperty.js +4 -22
- package/dist/properties/containerProperty.js.map +1 -1
- package/dist/properties/enumArrayProperty.d.ts.map +1 -1
- package/dist/properties/enumArrayProperty.js +2 -14
- package/dist/properties/enumArrayProperty.js.map +1 -1
- package/dist/properties/enumProperty.d.ts.map +1 -1
- package/dist/properties/enumProperty.js +3 -10
- package/dist/properties/enumProperty.js.map +1 -1
- package/dist/properties/floatProperties.js +0 -2
- package/dist/properties/floatProperties.js.map +1 -1
- package/dist/properties/index.d.ts +7 -38
- package/dist/properties/index.d.ts.map +1 -1
- package/dist/properties/index.js +37 -68
- package/dist/properties/index.js.map +1 -1
- package/dist/properties/indexedCollectionBaseProperty.d.ts.map +1 -1
- package/dist/properties/indexedCollectionBaseProperty.js +6 -18
- package/dist/properties/indexedCollectionBaseProperty.js.map +1 -1
- package/dist/properties/intProperties.d.ts.map +1 -1
- package/dist/properties/intProperties.js +3 -20
- package/dist/properties/intProperties.js.map +1 -1
- package/dist/properties/lazyLoadedProperties.js.map +1 -1
- package/dist/properties/mapProperty.d.ts.map +1 -1
- package/dist/properties/mapProperty.js +4 -23
- package/dist/properties/mapProperty.js.map +1 -1
- package/dist/properties/namedNodeProperty.d.ts.map +1 -1
- package/dist/properties/namedNodeProperty.js.map +1 -1
- package/dist/properties/namedProperty.d.ts.map +1 -1
- package/dist/properties/namedProperty.js +0 -3
- package/dist/properties/namedProperty.js.map +1 -1
- package/dist/properties/nodeProperty.d.ts.map +1 -1
- package/dist/properties/nodeProperty.js +0 -3
- package/dist/properties/nodeProperty.js.map +1 -1
- package/dist/properties/primitiveTypeCasts.d.ts.map +1 -1
- package/dist/properties/primitiveTypeCasts.js +2 -2
- package/dist/properties/primitiveTypeCasts.js.map +1 -1
- package/dist/properties/referenceArrayProperty.d.ts.map +1 -1
- package/dist/properties/referenceArrayProperty.js +3 -16
- package/dist/properties/referenceArrayProperty.js.map +1 -1
- package/dist/properties/referenceMapProperty.d.ts.map +1 -1
- package/dist/properties/referenceMapProperty.js +3 -13
- package/dist/properties/referenceMapProperty.js.map +1 -1
- package/dist/properties/referenceProperty.d.ts.map +1 -1
- package/dist/properties/referenceProperty.js +4 -12
- package/dist/properties/referenceProperty.js.map +1 -1
- package/dist/properties/setProperty.d.ts.map +1 -1
- package/dist/properties/setProperty.js +3 -22
- package/dist/properties/setProperty.js.map +1 -1
- package/dist/properties/stringProperty.d.ts.map +1 -1
- package/dist/properties/stringProperty.js +12 -48
- package/dist/properties/stringProperty.js.map +1 -1
- package/dist/properties/uintProperties.js +0 -3
- package/dist/properties/uintProperties.js.map +1 -1
- package/dist/properties/valueArrayProperty.d.ts.map +1 -1
- package/dist/properties/valueArrayProperty.js +3 -45
- package/dist/properties/valueArrayProperty.js.map +1 -1
- package/dist/properties/valueMapProperty.d.ts.map +1 -1
- package/dist/properties/valueMapProperty.js +4 -29
- package/dist/properties/valueMapProperty.js.map +1 -1
- package/dist/properties/valueProperty.d.ts.map +1 -1
- package/dist/properties/valueProperty.js +2 -14
- package/dist/properties/valueProperty.js.map +1 -1
- package/dist/propertyFactory.d.ts.map +1 -1
- package/dist/propertyFactory.js +35 -72
- package/dist/propertyFactory.js.map +1 -1
- package/dist/propertyTemplate.d.ts.map +1 -1
- package/dist/propertyTemplate.js +0 -14
- package/dist/propertyTemplate.js.map +1 -1
- package/dist/propertyTemplateWrapper.d.ts.map +1 -1
- package/dist/propertyTemplateWrapper.js +4 -12
- package/dist/propertyTemplateWrapper.js.map +1 -1
- package/dist/propertyUtils.d.ts.map +1 -1
- package/dist/propertyUtils.js.map +1 -1
- package/dist/test/properties/arrayProperty.spec.js +82 -82
- package/dist/test/properties/arrayProperty.spec.js.map +1 -1
- package/dist/test/properties/baseProperty.spec.js +53 -53
- package/dist/test/properties/baseProperty.spec.js.map +1 -1
- package/dist/test/properties/containerProperty.spec.js +25 -25
- package/dist/test/properties/containerProperty.spec.js.map +1 -1
- package/dist/test/properties/customArrayProperty.spec.js +35 -35
- package/dist/test/properties/customArrayProperty.spec.js.map +1 -1
- package/dist/test/properties/enumArrayProperty.spec.js +6 -6
- package/dist/test/properties/enumArrayProperty.spec.js.map +1 -1
- package/dist/test/properties/enumProperty.spec.js +26 -26
- package/dist/test/properties/enumProperty.spec.js.map +1 -1
- package/dist/test/properties/float32.spec.js.map +1 -1
- package/dist/test/properties/int64ArrayProperty.spec.js +22 -22
- package/dist/test/properties/int64ArrayProperty.spec.js.map +1 -1
- package/dist/test/properties/int64MapProperty.spec.js +28 -28
- package/dist/test/properties/int64MapProperty.spec.js.map +1 -1
- package/dist/test/properties/int64Property.spec.js +11 -11
- package/dist/test/properties/int64Property.spec.js.map +1 -1
- package/dist/test/properties/isLeafNode.spec.js +25 -25
- package/dist/test/properties/isLeafNode.spec.js.map +1 -1
- package/dist/test/properties/mapProperty.spec.js +110 -110
- package/dist/test/properties/mapProperty.spec.js.map +1 -1
- package/dist/test/properties/namedNodeProperty.spec.js +5 -5
- package/dist/test/properties/namedNodeProperty.spec.js.map +1 -1
- package/dist/test/properties/nodeProperty.spec.js +160 -160
- package/dist/test/properties/nodeProperty.spec.js.map +1 -1
- package/dist/test/properties/referenceProperty.spec.js +21 -21
- package/dist/test/properties/referenceProperty.spec.js.map +1 -1
- package/dist/test/properties/relationshipProperty.spec.js +4 -4
- package/dist/test/properties/relationshipProperty.spec.js.map +1 -1
- package/dist/test/properties/setProperty.spec.js +32 -32
- package/dist/test/properties/setProperty.spec.js.map +1 -1
- package/dist/test/properties/stringProperty.spec.js +38 -38
- package/dist/test/properties/stringProperty.spec.js.map +1 -1
- package/dist/test/properties/uint64Property.spec.js +3 -3
- package/dist/test/properties/uint64Property.spec.js.map +1 -1
- package/dist/test/properties/valueMapProperty.spec.js +28 -28
- package/dist/test/properties/valueMapProperty.spec.js.map +1 -1
- package/dist/test/properties/valueProperty.spec.js +7 -7
- package/dist/test/properties/valueProperty.spec.js.map +1 -1
- package/dist/test/propertyFactory.spec.js +559 -560
- package/dist/test/propertyFactory.spec.js.map +1 -1
- package/dist/test/propertyTemplateWrapper.spec.js +38 -38
- package/dist/test/propertyTemplateWrapper.spec.js.map +1 -1
- package/dist/test/propertyUtils.spec.js +5 -5
- package/dist/test/propertyUtils.spec.js.map +1 -1
- package/dist/test/reversibleChangeset.spec.js +266 -266
- package/dist/test/reversibleChangeset.spec.js.map +1 -1
- package/dist/test/setup.js.map +1 -1
- package/dist/test/tsconfig.tsbuildinfo +145 -145
- package/dist/test/utils.spec.js +508 -517
- package/dist/test/utils.spec.js.map +1 -1
- package/dist/test/validation/badMissingSemverInTypeid.js +9 -9
- package/dist/test/validation/badMissingSemverInTypeid.js.map +1 -1
- package/dist/test/validation/badPrimitiveTypeid.js +5 -5
- package/dist/test/validation/badPrimitiveTypeid.js.map +1 -1
- package/dist/test/validation/goodColorId.js +42 -42
- package/dist/test/validation/goodColorId.js.map +1 -1
- package/dist/test/validation/goodColorPalette.js +2 -2
- package/dist/test/validation/goodColorPalette.js.map +1 -1
- package/dist/test/validation/goodPointId.js +9 -9
- package/dist/test/validation/goodPointId.js.map +1 -1
- package/dist/test/validation/reversibleChangeSetTestData.js +1 -1
- package/dist/test/validation/reversibleChangeSetTestData.js.map +1 -1
- package/lib/containerSerializer.js +4 -10
- package/lib/containerSerializer.js.map +1 -1
- package/lib/enableValidations.js +1 -1
- package/lib/enableValidations.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/properties/abstractStaticCollectionProperty.js +1 -28
- package/lib/properties/abstractStaticCollectionProperty.js.map +1 -1
- package/lib/properties/arrayProperty.js +26 -85
- package/lib/properties/arrayProperty.js.map +1 -1
- package/lib/properties/baseProperty.js +7 -69
- package/lib/properties/baseProperty.js.map +1 -1
- package/lib/properties/boolProperty.js +0 -1
- package/lib/properties/boolProperty.js.map +1 -1
- package/lib/properties/containerProperty.js +4 -22
- package/lib/properties/containerProperty.js.map +1 -1
- package/lib/properties/enumArrayProperty.js +2 -14
- package/lib/properties/enumArrayProperty.js.map +1 -1
- package/lib/properties/enumProperty.js +3 -10
- package/lib/properties/enumProperty.js.map +1 -1
- package/lib/properties/floatProperties.js +0 -2
- package/lib/properties/floatProperties.js.map +1 -1
- package/lib/properties/index.js +7 -38
- package/lib/properties/index.js.map +1 -1
- package/lib/properties/indexedCollectionBaseProperty.js +6 -18
- package/lib/properties/indexedCollectionBaseProperty.js.map +1 -1
- package/lib/properties/intProperties.js +3 -20
- package/lib/properties/intProperties.js.map +1 -1
- package/lib/properties/lazyLoadedProperties.js.map +1 -1
- package/lib/properties/mapProperty.js +4 -23
- package/lib/properties/mapProperty.js.map +1 -1
- package/lib/properties/namedNodeProperty.js.map +1 -1
- package/lib/properties/namedProperty.js +0 -3
- package/lib/properties/namedProperty.js.map +1 -1
- package/lib/properties/nodeProperty.js +0 -3
- package/lib/properties/nodeProperty.js.map +1 -1
- package/lib/properties/primitiveTypeCasts.js +2 -2
- package/lib/properties/primitiveTypeCasts.js.map +1 -1
- package/lib/properties/referenceArrayProperty.js +3 -16
- package/lib/properties/referenceArrayProperty.js.map +1 -1
- package/lib/properties/referenceMapProperty.js +3 -13
- package/lib/properties/referenceMapProperty.js.map +1 -1
- package/lib/properties/referenceProperty.js +4 -12
- package/lib/properties/referenceProperty.js.map +1 -1
- package/lib/properties/setProperty.js +3 -22
- package/lib/properties/setProperty.js.map +1 -1
- package/lib/properties/stringProperty.js +12 -48
- package/lib/properties/stringProperty.js.map +1 -1
- package/lib/properties/uintProperties.js +0 -3
- package/lib/properties/uintProperties.js.map +1 -1
- package/lib/properties/valueArrayProperty.js +3 -45
- package/lib/properties/valueArrayProperty.js.map +1 -1
- package/lib/properties/valueMapProperty.js +4 -29
- package/lib/properties/valueMapProperty.js.map +1 -1
- package/lib/properties/valueProperty.js +2 -14
- package/lib/properties/valueProperty.js.map +1 -1
- package/lib/propertyFactory.js +35 -72
- package/lib/propertyFactory.js.map +1 -1
- package/lib/propertyTemplate.js +0 -14
- package/lib/propertyTemplate.js.map +1 -1
- package/lib/propertyTemplateWrapper.js +4 -12
- package/lib/propertyTemplateWrapper.js.map +1 -1
- package/lib/propertyUtils.js.map +1 -1
- package/package.json +13 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"int64MapProperty.spec.js","sourceRoot":"","sources":["../../../src/test/properties/int64MapProperty.spec.js"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* globals describe */\n/* eslint-disable no-unused-expressions*/\n/**\n * @fileoverview In this file, we will test the int64 map property\n * object described in /src/properties/valueMapProperty.js\n */\n\ndescribe('Int64MapProperty', function () {\n var PropertyFactory, BaseProperty, ChangeSet, myNode, Int64Map, Int64;\n\n before(function () {\n // Get all the objects we need in this test here.\n PropertyFactory = require('../..').PropertyFactory;\n BaseProperty = require('../..').BaseProperty;\n ChangeSet = require('@fluid-experimental/property-changeset').ChangeSet\n Int64 = require('@fluid-experimental/property-common').Int64;\n\n // Register a template with a set property for the tests\n var TestPropertyTemplate = {\n typeid: 'autodesk.tests:Int64MapTestPropertyID-1.0.0',\n inherits: ['NamedProperty'],\n properties: [\n { id: 'Int64Map', typeid: 'Int64', context: 'map' }\n ]\n };\n\n PropertyFactory._reregister(TestPropertyTemplate);\n\n myNode = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n Int64Map = myNode._properties.Int64Map;\n\n });\n\n // Helper functions for the test cases\n var keyCounter = 0;\n var resetKeyCounter = function () {\n keyCounter = 0;\n };\n\n // Inserts a node with a given key (a new one is generated when undefined)\n var insertEntryInRootWithKey = function (key, root) {\n if (key === undefined) {\n key = 'node' + keyCounter++;\n }\n root._properties.Int64Map.insert(key, new Int64(1, keyCounter));\n };\n\n // Inserts a new node in the root\n var insertNodeInRoot = function (root) {\n insertEntryInRootWithKey(undefined, root);\n };\n\n // Returns a functor that will insert a node with a constant key\n var insertEntryInRootWithUnqiueKey = function () {\n var key = 'node' + keyCounter++;\n return insertEntryInRootWithKey.bind(undefined, key);\n };\n\n // Removes the first node from the root\n var removeFirstNodeInRoot = function (root) {\n var firstKey = root._properties.Int64Map.getIds()[0];\n root._properties.Int64Map.remove(firstKey);\n };\n\n // Modifies the first node\n var modifyEntry = function (root) {\n var firstKey = root._properties.Int64Map.getIds()[0];\n root._properties.Int64Map.set(firstKey, new Int64(1, root._properties.Int64Map.get(firstKey) + 1));\n };\n\n describe('Testing creation, assignment and serialization', function () {\n it('should be empty at the beginning', function () {\n expect(Int64Map.getAsArray()).to.be.empty;\n expect(Int64Map.getEntriesReadOnly()).to.be.empty;\n expect(ChangeSet.isEmptyChangeSet(Int64Map.serialize({ 'dirtyOnly': false }))).to.be.ok;\n expect(ChangeSet.isEmptyChangeSet(Int64Map.serialize({ 'dirtyOnly': true }))).to.be.ok;\n });\n\n it('should be possible to add entries', function () {\n Int64Map.insert('value1', new Int64(1, 1));\n expect(Int64Map.get('value1')).to.deep.equal(new Int64(1, 1));\n Int64Map.insert('value2', new Int64(1, 2));\n expect(Int64Map.get('value2')).to.deep.equal(new Int64(1, 2));\n Int64Map.insert('value3', new Int64(1, 3));\n expect(Int64Map.get('value3')).to.deep.equal(new Int64(1, 3));\n Int64Map.insert('value4', '123');\n expect(Int64Map.get('value4')).to.deep.equal(new Int64(123, 0));\n Int64Map.insert('value5', 123);\n expect(Int64Map.get('value5')).to.deep.equal(new Int64(123, 0));\n expect(Int64Map.getEntriesReadOnly()).to.deep.equal(\n {\n 'value1': new Int64(1, 1), 'value2': new Int64(1, 2), 'value3': new Int64(1, 3),\n 'value4': new Int64(123, 0), 'value5': new Int64(123, 0)\n });\n\n expect(Int64Map.has('value1')).to.be.ok;\n expect(Int64Map.has('value2')).to.be.ok;\n expect(Int64Map.has('value3')).to.be.ok;\n expect(Int64Map.has('value4')).to.be.ok;\n expect(Int64Map.has('value5')).to.be.ok;\n\n expect(Int64Map.serialize({ 'dirtyOnly': false })).to.deep.equal({\n insert: { 'value1': [1, 1], 'value2': [1, 2], 'value3': [1, 3], 'value4': [123, 0], 'value5': [123, 0] }\n });\n });\n\n it('should be possible to remove entries', function () {\n Int64Map.remove('value1');\n expect(Int64Map.has('value1')).to.be.not.ok;\n Int64Map.remove('value2');\n expect(Int64Map.has('value2')).to.be.not.ok;\n Int64Map.remove('value3');\n expect(Int64Map.has('value3')).to.be.not.ok;\n Int64Map.remove('value4');\n expect(Int64Map.has('value4')).to.be.not.ok;\n Int64Map.remove('value5');\n expect(Int64Map.has('value5')).to.be.not.ok;\n expect(ChangeSet.isEmptyChangeSet(Int64Map.serialize({ 'dirtyOnly': false }))).to.be.ok;\n });\n\n it('a remove followed by an insert should become a modify', function () {\n Int64Map.insert('value1', new Int64(1, 1));\n Int64Map.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n Int64Map.remove('value1');\n Int64Map.insert('value1', new Int64(1, 2));\n\n expect(Int64Map.serialize({ 'dirtyOnly': true })).to.deep.equal({\n modify: { 'value1': [1, 2] }\n });\n\n // This should also work for a set operation\n Int64Map.set('value1', new Int64(1, 3));\n expect(Int64Map.serialize({ 'dirtyOnly': true })).to.deep.equal({\n modify: { 'value1': [1, 3] }\n });\n\n // But setting the same value should give an empty ChangeSet\n Int64Map.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n Int64Map.set('value1', new Int64(1, 3));\n expect(ChangeSet.isEmptyChangeSet(Int64Map.serialize({ 'dirtyOnly': true }))).to.be.ok;\n\n // This should be tracked separately for dirtyness and pending changes\n Int64Map.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n Int64Map.remove('value1');\n Int64Map.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY);\n Int64Map.insert('value1', new Int64(1, 2));\n\n expect(Int64Map.serialize({\n 'dirtyOnly': true,\n 'includeRootTypeid': false,\n 'dirtinessType': BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE\n })).to.deep.equal({\n modify: { 'value1': [1, 2] }\n });\n\n expect(Int64Map.serialize({\n 'dirtyOnly': true,\n 'includeRootTypeid': false,\n 'dirtinessType': BaseProperty.MODIFIED_STATE_FLAGS.DIRTY\n })).to.deep.equal({\n insert: { 'value1': [1, 2] }\n });\n\n });\n\n it('deserialize should work', function () {\n var myInitialStateNode = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n myInitialStateNode._properties.Int64Map.insert('value1', new Int64(1, 1));\n myInitialStateNode._properties.Int64Map.insert('value2', new Int64(1, 2));\n var initialChangeSet = myInitialStateNode.serialize({ 'dirtyOnly': false });\n\n // Deserialize a copy into a second node and check that the chageset is correct\n var myDeserializeNode1 = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n var changes = myDeserializeNode1.deserialize(initialChangeSet);\n expect(changes).to.deep.equal(initialChangeSet);\n expect(myDeserializeNode1.serialize({ 'dirtyOnly': false })).to.deep.equal(\n myInitialStateNode.serialize({ 'dirtyOnly': false }));\n myDeserializeNode1.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n\n // Create a third copy\n var myDeserializeNode2 = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n myDeserializeNode2.deserialize(initialChangeSet);\n myDeserializeNode2.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n\n\n myInitialStateNode.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n myInitialStateNode._properties.Int64Map.set('value1', new Int64(1, 2));\n myInitialStateNode._properties.Int64Map.remove('value2');\n myInitialStateNode._properties.Int64Map.insert('value3', new Int64(1, 3));\n\n var changesChangeSet = myInitialStateNode.serialize({ 'dirtyOnly': true });\n var fullChangeSet = myInitialStateNode.serialize({ 'dirtyOnly': false });\n\n var reportedChanges = myDeserializeNode1.deserialize(fullChangeSet);\n expect(myDeserializeNode1.serialize({ 'dirtyOnly': false })).to.deep.equal(\n myInitialStateNode.serialize({ 'dirtyOnly': false }));\n expect(reportedChanges).to.deep.equal(changesChangeSet);\n expect(myDeserializeNode1.serialize({ 'dirtyOnly': true })).to.deep.equal(changesChangeSet);\n\n var deserializeChanges = myDeserializeNode2.deserialize(fullChangeSet);\n expect(deserializeChanges).to.deep.equal(changesChangeSet);\n });\n\n it('inserting the same key twice should throw an exception', function () {\n var rootNode = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n rootNode._properties.Int64Map.insert('node1', new Int64(1, 1));\n expect(function () {\n rootNode._properties.Int64Map.insert('node1', new Int64(1, 2));\n }).to.throw();\n });\n\n it('set should overwrite existing entry', function () {\n var rootNode = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n\n rootNode._properties.Int64Map.set('node1', new Int64(1, 0));\n rootNode._properties.Int64Map.set('node1', new Int64(1, 1));\n // the set should overwrite the insert\n expect(rootNode.serialize({ 'dirtyOnly': true })['map<Int64>'].Int64Map).to.have.all.keys('insert');\n\n // Overwriting with the same property shouldn't dirty the node\n rootNode.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n rootNode._properties.Int64Map.set('node1', new Int64(1, 1));\n expect(ChangeSet.isEmptyChangeSet(rootNode.serialize({ 'dirtyOnly': true }))).to.be.ok;\n expect(rootNode.isDirty()).to.be.false;\n\n // Overwriting with a different value should result in a modify\n rootNode._properties.Int64Map.set('node1', new Int64(1, 2));\n expect(rootNode.serialize({ 'dirtyOnly': true })['map<Int64>'].Int64Map).to.have.all.keys('modify');\n });\n\n });\n\n describe('squashing', function () {\n //\n // Helper function which takes a sequence of callbacks that are suceessively executed\n // and the changes applied by the callbacks are separately tracked and squashed in a\n // a ChangeSet. This ChangeSet is then compared to the state in the property object\n //\n // Optionally, a a callback which controls the initial state before the squashing can\n // be given as first parameter\n //\n var testChangeSetSquashing = function (in_options) {\n resetKeyCounter();\n var testProperty = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n\n var callbacks = in_options.callbacks;\n if (in_options.pre) {\n in_options.pre(testProperty);\n }\n\n var initialChangeset = new ChangeSet(testProperty.serialize({ 'dirtyOnly': false }));\n initialChangeset.setIsNormalized(true);\n\n var squashedChangeset = new ChangeSet();\n testProperty.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i](testProperty);\n var changes = testProperty.serialize({ 'dirtyOnly': true });\n testProperty.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n\n squashedChangeset.applyChangeSet(changes);\n }\n\n if (in_options.post) {\n in_options.post(squashedChangeset.getSerializedChangeSet());\n }\n\n initialChangeset.applyChangeSet(squashedChangeset.getSerializedChangeSet());\n expect(initialChangeset.getSerializedChangeSet()).to.deep.equal(testProperty.serialize({ 'dirtyOnly': false }));\n };\n\n it('should work for multiple independent inserts', function () {\n testChangeSetSquashing({ callbacks: [insertNodeInRoot, insertNodeInRoot, insertNodeInRoot] });\n });\n\n it('should work for inserts followed by removes', function () {\n testChangeSetSquashing({\n callbacks: [insertNodeInRoot, insertNodeInRoot, removeFirstNodeInRoot, removeFirstNodeInRoot],\n post: function (changeset) {\n expect(changeset).to.be.empty;\n }\n });\n });\n\n it('of inserts and modifies should work', function () {\n testChangeSetSquashing({\n callbacks: [insertNodeInRoot, insertNodeInRoot, insertNodeInRoot, modifyEntry, modifyEntry]\n });\n });\n it('an insert, modify and a remove should give an empty changeset', function () {\n testChangeSetSquashing({\n callbacks: [insertNodeInRoot, modifyEntry, modifyEntry, removeFirstNodeInRoot],\n post: function (changeset) {\n expect(changeset).to.be.empty;\n }\n });\n });\n it('should work for modifies after an already existing insert', function () {\n testChangeSetSquashing({\n pre: insertNodeInRoot,\n callbacks: [modifyEntry, modifyEntry]\n });\n });\n it('of modify and remove after an already existing insert should work', function () {\n testChangeSetSquashing({\n pre: insertNodeInRoot,\n callbacks: [modifyEntry, removeFirstNodeInRoot],\n post: function (changeset) {\n expect(changeset['map<Int64>'].Int64Map).to.have.all.keys('remove');\n }\n });\n });\n it('of remove and insert should result in modify', function () {\n // Create two nodes with the same GUID\n testChangeSetSquashing({\n pre: function (root) {\n root._properties.Int64Map.insert('node1', new Int64(1, 1));\n },\n callbacks: [\n removeFirstNodeInRoot,\n function (root) {\n root._properties.Int64Map.insert('node1', new Int64(1, 2));\n }\n ],\n post: function (changeset) {\n expect(changeset['map<Int64>'].Int64Map).to.have.all.keys('modify');\n }\n });\n });\n });\n\n describe('Rebasing', function () {\n var testRebasing = function (in_options) {\n // Prepare the initial state\n var baseProperty1 = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n if (in_options.prepare) {\n in_options.prepare(baseProperty1);\n }\n // Create two copies of this state\n var baseProperty2 = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n baseProperty2.deserialize(baseProperty1.serialize({ 'dirtyOnly': false }));\n var baseProperty3 = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n baseProperty3.deserialize(baseProperty1.serialize({ 'dirtyOnly': false }));\n\n // Make sure the states are clear\n baseProperty1.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n baseProperty2.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n baseProperty3.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n\n var initialChangeSet = baseProperty1.serialize({ 'dirtyOnly': false });\n\n // Apply the operations to the two properties in parallel\n if (in_options.op1) {\n in_options.op1(baseProperty1);\n }\n if (in_options.op2) {\n in_options.op2(baseProperty2);\n }\n\n // Get the ChangeSets\n var changeSet1 = new ChangeSet(baseProperty1.serialize({ 'dirtyOnly': true }));\n var changeSet2 = baseProperty2.serialize({ 'dirtyOnly': true });\n\n // Perform the actual rebase\n var conflicts = [];\n changeSet1._rebaseChangeSet(changeSet2, conflicts);\n\n var combinedChangeSet = new ChangeSet(initialChangeSet).clone();\n combinedChangeSet.setIsNormalized(true);\n combinedChangeSet.applyChangeSet(changeSet1);\n combinedChangeSet.applyChangeSet(changeSet2);\n\n if (in_options.compareToSequential) {\n if (in_options.op1) {\n in_options.op1(baseProperty3);\n }\n if (in_options.op2) {\n in_options.op2(baseProperty3);\n }\n var finalChangeSet = baseProperty3.serialize({ 'dirtyOnly': false });\n expect(finalChangeSet).to.be.deep.equal(combinedChangeSet.getSerializedChangeSet());\n }\n\n if (in_options.checkResult) {\n in_options.checkResult(conflicts, changeSet2, combinedChangeSet);\n }\n };\n\n it('with a NOP should be possible', function () {\n testRebasing({\n op2: insertEntryInRootWithUnqiueKey(),\n compareToSequential: true\n });\n });\n\n it('with independent inserts should be possible', function () {\n testRebasing({\n op1: insertEntryInRootWithUnqiueKey(),\n op2: insertEntryInRootWithUnqiueKey(),\n compareToSequential: true\n });\n });\n\n it('with independent removes should be possible', function () {\n testRebasing({\n prepare: function (root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 1));\n root._properties.Int64Map.insert('entry2', new Int64(1, 2));\n },\n op1: function (root) {\n root._properties.Int64Map.remove('entry1');\n },\n op2: function (root) {\n root._properties.Int64Map.remove('entry2');\n },\n compareToSequential: true\n });\n });\n\n it('with a modify and a remove should possible', function () {\n testRebasing({\n prepare: function (root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 1));\n },\n op1: modifyEntry,\n op2: removeFirstNodeInRoot,\n compareToSequential: true\n });\n });\n\n it('with a remove and a modify should possible', function () {\n testRebasing({\n prepare: function (root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 1));\n },\n op1: removeFirstNodeInRoot,\n op2: modifyEntry,\n compareToSequential: false,\n checkResult: function (conflicts, changeSet) {\n expect(conflicts).to.have.length(1);\n expect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.ENTRY_MODIFIED_AFTER_REMOVE);\n expect(conflicts[0].path).to.be.equal('Int64Map[entry1]');\n expect(ChangeSet.isEmptyChangeSet(changeSet)).to.be.ok;\n }\n });\n });\n\n it('with two compatible removes should be possible', function () {\n testRebasing({\n prepare: function (root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 1));\n },\n op1: function (root) {\n root._properties.Int64Map.remove('entry1');\n },\n op2: function (root) {\n root._properties.Int64Map.remove('entry1');\n },\n compareToSequential: false,\n checkResult: function (conflicts, changeSet) {\n expect(ChangeSet.isEmptyChangeSet(changeSet)).to.be.ok;\n }\n });\n });\n\n it('with two conflicting modifies should be possible and report a conflict', function () {\n testRebasing({\n prepare: function (root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 1));\n },\n op1: function (root) {\n root._properties.Int64Map.set('entry1', new Int64(1, 2));\n },\n op2: function (root) {\n root._properties.Int64Map.set('entry1', new Int64(1, 3));\n },\n compareToSequential: true,\n checkResult: function (conflicts, changeSet) {\n expect(conflicts).to.have.length(1);\n expect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);\n expect(conflicts[0].path).to.be.equal('Int64Map[entry1]');\n }\n });\n });\n\n it('with modify followed by remove+insert should be a conflicting set', function () {\n testRebasing({\n prepare: function (root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 1));\n },\n op1: modifyEntry,\n op2: function (root) {\n root._properties.Int64Map.remove('entry1');\n root._properties.Int64Map.insert('entry1', new Int64(1, 2));\n },\n compareToSequential: true,\n checkResult: function (conflicts, changeSet) {\n expect(conflicts).to.have.length(1);\n expect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);\n expect(conflicts[0].path).to.be.equal('Int64Map[entry1]');\n }\n });\n });\n\n it('with remove+insert followed by modify should be a conflicting set', function () {\n testRebasing({\n prepare: function (root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 1));\n },\n op1: function (root) {\n root._properties.Int64Map.remove('entry1');\n root._properties.Int64Map.insert('entry1', new Int64(1, 2));\n },\n op2: function (root) {\n root._properties.Int64Map.set('entry1', new Int64(1, 3));\n },\n compareToSequential: true,\n checkResult: function (conflicts, changeSet) {\n expect(conflicts).to.have.length(1);\n expect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);\n expect(conflicts[0].path).to.be.equal('Int64Map[entry1]');\n }\n });\n });\n\n it('with conflicting inserts should report conflict', function () {\n testRebasing({\n prepare: function (root) {\n },\n op1: function (root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 1));\n },\n op2: function (root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 2));\n },\n compareToSequential: false,\n checkResult: function (conflicts, changeSet) {\n expect(changeSet['map<Int64>'].Int64Map).to.have.all.keys('modify');\n expect(conflicts).to.have.length(1);\n expect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);\n expect(conflicts[0].path).to.be.equal('Int64Map[entry1]');\n }\n });\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"int64MapProperty.spec.js","sourceRoot":"","sources":["../../../src/test/properties/int64MapProperty.spec.js"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n/* globals describe */\n/* eslint-disable no-unused-expressions */\n/**\n * @fileoverview In this file, we will test the int64 map property\n * object described in /src/properties/valueMapProperty.js\n */\n\ndescribe('Int64MapProperty', function() {\n var PropertyFactory, BaseProperty, ChangeSet, myNode, Int64Map, Int64;\n\n before(function() {\n // Get all the objects we need in this test here.\n PropertyFactory = require('../..').PropertyFactory;\n BaseProperty = require('../..').BaseProperty;\n ChangeSet = require('@fluid-experimental/property-changeset').ChangeSet;\n Int64 = require('@fluid-experimental/property-common').Int64;\n\n // Register a template with a set property for the tests\n var TestPropertyTemplate = {\n typeid: 'autodesk.tests:Int64MapTestPropertyID-1.0.0',\n inherits: ['NamedProperty'],\n properties: [\n { id: 'Int64Map', typeid: 'Int64', context: 'map' },\n ],\n };\n\n PropertyFactory._reregister(TestPropertyTemplate);\n\n myNode = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n Int64Map = myNode._properties.Int64Map;\n });\n\n // Helper functions for the test cases\n var keyCounter = 0;\n var resetKeyCounter = function() {\n keyCounter = 0;\n };\n\n // Inserts a node with a given key (a new one is generated when undefined)\n var insertEntryInRootWithKey = function(key, root) {\n if (key === undefined) {\n key = 'node' + keyCounter++;\n }\n root._properties.Int64Map.insert(key, new Int64(1, keyCounter));\n };\n\n // Inserts a new node in the root\n var insertNodeInRoot = function(root) {\n insertEntryInRootWithKey(undefined, root);\n };\n\n // Returns a functor that will insert a node with a constant key\n var insertEntryInRootWithUnqiueKey = function() {\n var key = 'node' + keyCounter++;\n return insertEntryInRootWithKey.bind(undefined, key);\n };\n\n // Removes the first node from the root\n var removeFirstNodeInRoot = function(root) {\n var firstKey = root._properties.Int64Map.getIds()[0];\n root._properties.Int64Map.remove(firstKey);\n };\n\n // Modifies the first node\n var modifyEntry = function(root) {\n var firstKey = root._properties.Int64Map.getIds()[0];\n root._properties.Int64Map.set(firstKey, new Int64(1, root._properties.Int64Map.get(firstKey) + 1));\n };\n\n describe('Testing creation, assignment and serialization', function() {\n it('should be empty at the beginning', function() {\n expect(Int64Map.getAsArray()).to.be.empty;\n expect(Int64Map.getEntriesReadOnly()).to.be.empty;\n expect(ChangeSet.isEmptyChangeSet(Int64Map.serialize({ 'dirtyOnly': false }))).to.be.ok;\n expect(ChangeSet.isEmptyChangeSet(Int64Map.serialize({ 'dirtyOnly': true }))).to.be.ok;\n });\n\n it('should be possible to add entries', function() {\n Int64Map.insert('value1', new Int64(1, 1));\n expect(Int64Map.get('value1')).to.deep.equal(new Int64(1, 1));\n Int64Map.insert('value2', new Int64(1, 2));\n expect(Int64Map.get('value2')).to.deep.equal(new Int64(1, 2));\n Int64Map.insert('value3', new Int64(1, 3));\n expect(Int64Map.get('value3')).to.deep.equal(new Int64(1, 3));\n Int64Map.insert('value4', '123');\n expect(Int64Map.get('value4')).to.deep.equal(new Int64(123, 0));\n Int64Map.insert('value5', 123);\n expect(Int64Map.get('value5')).to.deep.equal(new Int64(123, 0));\n expect(Int64Map.getEntriesReadOnly()).to.deep.equal(\n {\n 'value1': new Int64(1, 1), 'value2': new Int64(1, 2), 'value3': new Int64(1, 3),\n 'value4': new Int64(123, 0), 'value5': new Int64(123, 0),\n });\n\n expect(Int64Map.has('value1')).to.be.ok;\n expect(Int64Map.has('value2')).to.be.ok;\n expect(Int64Map.has('value3')).to.be.ok;\n expect(Int64Map.has('value4')).to.be.ok;\n expect(Int64Map.has('value5')).to.be.ok;\n\n expect(Int64Map.serialize({ 'dirtyOnly': false })).to.deep.equal({\n insert: { 'value1': [1, 1], 'value2': [1, 2], 'value3': [1, 3], 'value4': [123, 0], 'value5': [123, 0] },\n });\n });\n\n it('should be possible to remove entries', function() {\n Int64Map.remove('value1');\n expect(Int64Map.has('value1')).to.be.not.ok;\n Int64Map.remove('value2');\n expect(Int64Map.has('value2')).to.be.not.ok;\n Int64Map.remove('value3');\n expect(Int64Map.has('value3')).to.be.not.ok;\n Int64Map.remove('value4');\n expect(Int64Map.has('value4')).to.be.not.ok;\n Int64Map.remove('value5');\n expect(Int64Map.has('value5')).to.be.not.ok;\n expect(ChangeSet.isEmptyChangeSet(Int64Map.serialize({ 'dirtyOnly': false }))).to.be.ok;\n });\n\n it('a remove followed by an insert should become a modify', function() {\n Int64Map.insert('value1', new Int64(1, 1));\n Int64Map.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n Int64Map.remove('value1');\n Int64Map.insert('value1', new Int64(1, 2));\n\n expect(Int64Map.serialize({ 'dirtyOnly': true })).to.deep.equal({\n modify: { 'value1': [1, 2] },\n });\n\n // This should also work for a set operation\n Int64Map.set('value1', new Int64(1, 3));\n expect(Int64Map.serialize({ 'dirtyOnly': true })).to.deep.equal({\n modify: { 'value1': [1, 3] },\n });\n\n // But setting the same value should give an empty ChangeSet\n Int64Map.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n Int64Map.set('value1', new Int64(1, 3));\n expect(ChangeSet.isEmptyChangeSet(Int64Map.serialize({ 'dirtyOnly': true }))).to.be.ok;\n\n // This should be tracked separately for dirtyness and pending changes\n Int64Map.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n Int64Map.remove('value1');\n Int64Map.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY);\n Int64Map.insert('value1', new Int64(1, 2));\n\n expect(Int64Map.serialize({\n 'dirtyOnly': true,\n 'includeRootTypeid': false,\n 'dirtinessType': BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE,\n })).to.deep.equal({\n modify: { 'value1': [1, 2] },\n });\n\n expect(Int64Map.serialize({\n 'dirtyOnly': true,\n 'includeRootTypeid': false,\n 'dirtinessType': BaseProperty.MODIFIED_STATE_FLAGS.DIRTY,\n })).to.deep.equal({\n insert: { 'value1': [1, 2] },\n });\n });\n\n it('deserialize should work', function() {\n var myInitialStateNode = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n myInitialStateNode._properties.Int64Map.insert('value1', new Int64(1, 1));\n myInitialStateNode._properties.Int64Map.insert('value2', new Int64(1, 2));\n var initialChangeSet = myInitialStateNode.serialize({ 'dirtyOnly': false });\n\n // Deserialize a copy into a second node and check that the chageset is correct\n var myDeserializeNode1 = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n var changes = myDeserializeNode1.deserialize(initialChangeSet);\n expect(changes).to.deep.equal(initialChangeSet);\n expect(myDeserializeNode1.serialize({ 'dirtyOnly': false })).to.deep.equal(\n myInitialStateNode.serialize({ 'dirtyOnly': false }));\n myDeserializeNode1.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n\n // Create a third copy\n var myDeserializeNode2 = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n myDeserializeNode2.deserialize(initialChangeSet);\n myDeserializeNode2.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n\n myInitialStateNode.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n myInitialStateNode._properties.Int64Map.set('value1', new Int64(1, 2));\n myInitialStateNode._properties.Int64Map.remove('value2');\n myInitialStateNode._properties.Int64Map.insert('value3', new Int64(1, 3));\n\n var changesChangeSet = myInitialStateNode.serialize({ 'dirtyOnly': true });\n var fullChangeSet = myInitialStateNode.serialize({ 'dirtyOnly': false });\n\n var reportedChanges = myDeserializeNode1.deserialize(fullChangeSet);\n expect(myDeserializeNode1.serialize({ 'dirtyOnly': false })).to.deep.equal(\n myInitialStateNode.serialize({ 'dirtyOnly': false }));\n expect(reportedChanges).to.deep.equal(changesChangeSet);\n expect(myDeserializeNode1.serialize({ 'dirtyOnly': true })).to.deep.equal(changesChangeSet);\n\n var deserializeChanges = myDeserializeNode2.deserialize(fullChangeSet);\n expect(deserializeChanges).to.deep.equal(changesChangeSet);\n });\n\n it('inserting the same key twice should throw an exception', function() {\n var rootNode = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n rootNode._properties.Int64Map.insert('node1', new Int64(1, 1));\n expect(function() {\n rootNode._properties.Int64Map.insert('node1', new Int64(1, 2));\n }).to.throw();\n });\n\n it('set should overwrite existing entry', function() {\n var rootNode = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n\n rootNode._properties.Int64Map.set('node1', new Int64(1, 0));\n rootNode._properties.Int64Map.set('node1', new Int64(1, 1));\n // the set should overwrite the insert\n expect(rootNode.serialize({ 'dirtyOnly': true })['map<Int64>'].Int64Map).to.have.all.keys('insert');\n\n // Overwriting with the same property shouldn't dirty the node\n rootNode.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n rootNode._properties.Int64Map.set('node1', new Int64(1, 1));\n expect(ChangeSet.isEmptyChangeSet(rootNode.serialize({ 'dirtyOnly': true }))).to.be.ok;\n expect(rootNode.isDirty()).to.be.false;\n\n // Overwriting with a different value should result in a modify\n rootNode._properties.Int64Map.set('node1', new Int64(1, 2));\n expect(rootNode.serialize({ 'dirtyOnly': true })['map<Int64>'].Int64Map).to.have.all.keys('modify');\n });\n });\n\n describe('squashing', function() {\n //\n // Helper function which takes a sequence of callbacks that are suceessively executed\n // and the changes applied by the callbacks are separately tracked and squashed in a\n // a ChangeSet. This ChangeSet is then compared to the state in the property object\n //\n // Optionally, a a callback which controls the initial state before the squashing can\n // be given as first parameter\n //\n var testChangeSetSquashing = function(in_options) {\n resetKeyCounter();\n var testProperty = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n\n var callbacks = in_options.callbacks;\n if (in_options.pre) {\n in_options.pre(testProperty);\n }\n\n var initialChangeset = new ChangeSet(testProperty.serialize({ 'dirtyOnly': false }));\n initialChangeset.setIsNormalized(true);\n\n var squashedChangeset = new ChangeSet();\n testProperty.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i](testProperty);\n var changes = testProperty.serialize({ 'dirtyOnly': true });\n testProperty.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n\n squashedChangeset.applyChangeSet(changes);\n }\n\n if (in_options.post) {\n in_options.post(squashedChangeset.getSerializedChangeSet());\n }\n\n initialChangeset.applyChangeSet(squashedChangeset.getSerializedChangeSet());\n expect(initialChangeset.getSerializedChangeSet()).to.deep.equal(testProperty.serialize({ 'dirtyOnly': false }));\n };\n\n it('should work for multiple independent inserts', function() {\n testChangeSetSquashing({ callbacks: [insertNodeInRoot, insertNodeInRoot, insertNodeInRoot] });\n });\n\n it('should work for inserts followed by removes', function() {\n testChangeSetSquashing({\n callbacks: [insertNodeInRoot, insertNodeInRoot, removeFirstNodeInRoot, removeFirstNodeInRoot],\n post: function(changeset) {\n expect(changeset).to.be.empty;\n },\n });\n });\n\n it('of inserts and modifies should work', function() {\n testChangeSetSquashing({\n callbacks: [insertNodeInRoot, insertNodeInRoot, insertNodeInRoot, modifyEntry, modifyEntry],\n });\n });\n it('an insert, modify and a remove should give an empty changeset', function() {\n testChangeSetSquashing({\n callbacks: [insertNodeInRoot, modifyEntry, modifyEntry, removeFirstNodeInRoot],\n post: function(changeset) {\n expect(changeset).to.be.empty;\n },\n });\n });\n it('should work for modifies after an already existing insert', function() {\n testChangeSetSquashing({\n pre: insertNodeInRoot,\n callbacks: [modifyEntry, modifyEntry],\n });\n });\n it('of modify and remove after an already existing insert should work', function() {\n testChangeSetSquashing({\n pre: insertNodeInRoot,\n callbacks: [modifyEntry, removeFirstNodeInRoot],\n post: function(changeset) {\n expect(changeset['map<Int64>'].Int64Map).to.have.all.keys('remove');\n },\n });\n });\n it('of remove and insert should result in modify', function() {\n // Create two nodes with the same GUID\n testChangeSetSquashing({\n pre: function(root) {\n root._properties.Int64Map.insert('node1', new Int64(1, 1));\n },\n callbacks: [\n removeFirstNodeInRoot,\n function(root) {\n root._properties.Int64Map.insert('node1', new Int64(1, 2));\n },\n ],\n post: function(changeset) {\n expect(changeset['map<Int64>'].Int64Map).to.have.all.keys('modify');\n },\n });\n });\n });\n\n describe('Rebasing', function() {\n var testRebasing = function(in_options) {\n // Prepare the initial state\n var baseProperty1 = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n if (in_options.prepare) {\n in_options.prepare(baseProperty1);\n }\n // Create two copies of this state\n var baseProperty2 = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n baseProperty2.deserialize(baseProperty1.serialize({ 'dirtyOnly': false }));\n var baseProperty3 = PropertyFactory.create('autodesk.tests:Int64MapTestPropertyID-1.0.0');\n baseProperty3.deserialize(baseProperty1.serialize({ 'dirtyOnly': false }));\n\n // Make sure the states are clear\n baseProperty1.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n baseProperty2.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n baseProperty3.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n\n var initialChangeSet = baseProperty1.serialize({ 'dirtyOnly': false });\n\n // Apply the operations to the two properties in parallel\n if (in_options.op1) {\n in_options.op1(baseProperty1);\n }\n if (in_options.op2) {\n in_options.op2(baseProperty2);\n }\n\n // Get the ChangeSets\n var changeSet1 = new ChangeSet(baseProperty1.serialize({ 'dirtyOnly': true }));\n var changeSet2 = baseProperty2.serialize({ 'dirtyOnly': true });\n\n // Perform the actual rebase\n var conflicts = [];\n changeSet1._rebaseChangeSet(changeSet2, conflicts);\n\n var combinedChangeSet = new ChangeSet(initialChangeSet).clone();\n combinedChangeSet.setIsNormalized(true);\n combinedChangeSet.applyChangeSet(changeSet1);\n combinedChangeSet.applyChangeSet(changeSet2);\n\n if (in_options.compareToSequential) {\n if (in_options.op1) {\n in_options.op1(baseProperty3);\n }\n if (in_options.op2) {\n in_options.op2(baseProperty3);\n }\n var finalChangeSet = baseProperty3.serialize({ 'dirtyOnly': false });\n expect(finalChangeSet).to.be.deep.equal(combinedChangeSet.getSerializedChangeSet());\n }\n\n if (in_options.checkResult) {\n in_options.checkResult(conflicts, changeSet2, combinedChangeSet);\n }\n };\n\n it('with a NOP should be possible', function() {\n testRebasing({\n op2: insertEntryInRootWithUnqiueKey(),\n compareToSequential: true,\n });\n });\n\n it('with independent inserts should be possible', function() {\n testRebasing({\n op1: insertEntryInRootWithUnqiueKey(),\n op2: insertEntryInRootWithUnqiueKey(),\n compareToSequential: true,\n });\n });\n\n it('with independent removes should be possible', function() {\n testRebasing({\n prepare: function(root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 1));\n root._properties.Int64Map.insert('entry2', new Int64(1, 2));\n },\n op1: function(root) {\n root._properties.Int64Map.remove('entry1');\n },\n op2: function(root) {\n root._properties.Int64Map.remove('entry2');\n },\n compareToSequential: true,\n });\n });\n\n it('with a modify and a remove should possible', function() {\n testRebasing({\n prepare: function(root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 1));\n },\n op1: modifyEntry,\n op2: removeFirstNodeInRoot,\n compareToSequential: true,\n });\n });\n\n it('with a remove and a modify should possible', function() {\n testRebasing({\n prepare: function(root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 1));\n },\n op1: removeFirstNodeInRoot,\n op2: modifyEntry,\n compareToSequential: false,\n checkResult: function(conflicts, changeSet) {\n expect(conflicts).to.have.length(1);\n expect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.ENTRY_MODIFIED_AFTER_REMOVE);\n expect(conflicts[0].path).to.be.equal('Int64Map[entry1]');\n expect(ChangeSet.isEmptyChangeSet(changeSet)).to.be.ok;\n },\n });\n });\n\n it('with two compatible removes should be possible', function() {\n testRebasing({\n prepare: function(root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 1));\n },\n op1: function(root) {\n root._properties.Int64Map.remove('entry1');\n },\n op2: function(root) {\n root._properties.Int64Map.remove('entry1');\n },\n compareToSequential: false,\n checkResult: function(conflicts, changeSet) {\n expect(ChangeSet.isEmptyChangeSet(changeSet)).to.be.ok;\n },\n });\n });\n\n it('with two conflicting modifies should be possible and report a conflict', function() {\n testRebasing({\n prepare: function(root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 1));\n },\n op1: function(root) {\n root._properties.Int64Map.set('entry1', new Int64(1, 2));\n },\n op2: function(root) {\n root._properties.Int64Map.set('entry1', new Int64(1, 3));\n },\n compareToSequential: true,\n checkResult: function(conflicts, changeSet) {\n expect(conflicts).to.have.length(1);\n expect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);\n expect(conflicts[0].path).to.be.equal('Int64Map[entry1]');\n },\n });\n });\n\n it('with modify followed by remove+insert should be a conflicting set', function() {\n testRebasing({\n prepare: function(root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 1));\n },\n op1: modifyEntry,\n op2: function(root) {\n root._properties.Int64Map.remove('entry1');\n root._properties.Int64Map.insert('entry1', new Int64(1, 2));\n },\n compareToSequential: true,\n checkResult: function(conflicts, changeSet) {\n expect(conflicts).to.have.length(1);\n expect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);\n expect(conflicts[0].path).to.be.equal('Int64Map[entry1]');\n },\n });\n });\n\n it('with remove+insert followed by modify should be a conflicting set', function() {\n testRebasing({\n prepare: function(root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 1));\n },\n op1: function(root) {\n root._properties.Int64Map.remove('entry1');\n root._properties.Int64Map.insert('entry1', new Int64(1, 2));\n },\n op2: function(root) {\n root._properties.Int64Map.set('entry1', new Int64(1, 3));\n },\n compareToSequential: true,\n checkResult: function(conflicts, changeSet) {\n expect(conflicts).to.have.length(1);\n expect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);\n expect(conflicts[0].path).to.be.equal('Int64Map[entry1]');\n },\n });\n });\n\n it('with conflicting inserts should report conflict', function() {\n testRebasing({\n prepare: function(root) {\n },\n op1: function(root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 1));\n },\n op2: function(root) {\n root._properties.Int64Map.insert('entry1', new Int64(1, 2));\n },\n compareToSequential: false,\n checkResult: function(conflicts, changeSet) {\n expect(changeSet['map<Int64>'].Int64Map).to.have.all.keys('modify');\n expect(conflicts).to.have.length(1);\n expect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);\n expect(conflicts[0].path).to.be.equal('Int64Map[entry1]');\n },\n });\n });\n });\n});\n"]}
|
|
@@ -24,8 +24,8 @@ describe('Test Int64Property', function () {
|
|
|
24
24
|
typeid: 'autodesk.tests:Int64TestID-1.0.0',
|
|
25
25
|
properties: [
|
|
26
26
|
{ id: 'myInt64', typeid: 'Int64' },
|
|
27
|
-
{ id: 'myUint64', typeid: 'Uint64' }
|
|
28
|
-
]
|
|
27
|
+
{ id: 'myUint64', typeid: 'Uint64' },
|
|
28
|
+
],
|
|
29
29
|
};
|
|
30
30
|
PropertyFactory._reregister(TestInt64ArrayTemplate);
|
|
31
31
|
nodeProp = PropertyFactory.create('autodesk.tests:Int64TestID-1.0.0');
|
|
@@ -163,11 +163,11 @@ describe('Test Int64Property', function () {
|
|
|
163
163
|
nodeProp._properties.myUint64.value = new Uint64(99, 110);
|
|
164
164
|
expect(nodeProp.serialize({ 'dirtyOnly': false })).to.deep.equal({
|
|
165
165
|
Int64: {
|
|
166
|
-
myInt64: [32, 42]
|
|
166
|
+
myInt64: [32, 42],
|
|
167
167
|
},
|
|
168
168
|
Uint64: {
|
|
169
|
-
myUint64: [99, 110]
|
|
170
|
-
}
|
|
169
|
+
myUint64: [99, 110],
|
|
170
|
+
},
|
|
171
171
|
});
|
|
172
172
|
});
|
|
173
173
|
describe('squashing', function () {
|
|
@@ -238,8 +238,8 @@ describe('Test Int64Property', function () {
|
|
|
238
238
|
},
|
|
239
239
|
function (io_prop) {
|
|
240
240
|
io_prop.setValueHigh(2);
|
|
241
|
-
}
|
|
242
|
-
]
|
|
241
|
+
},
|
|
242
|
+
],
|
|
243
243
|
});
|
|
244
244
|
});
|
|
245
245
|
it('should correctly squash low/high 64bit property changes', function () {
|
|
@@ -250,8 +250,8 @@ describe('Test Int64Property', function () {
|
|
|
250
250
|
},
|
|
251
251
|
function (io_prop) {
|
|
252
252
|
io_prop.setValueLow(2);
|
|
253
|
-
}
|
|
254
|
-
]
|
|
253
|
+
},
|
|
254
|
+
],
|
|
255
255
|
});
|
|
256
256
|
});
|
|
257
257
|
it('should squash two ChangeSets, one inserts the other modifies the same Int64 property', function () {
|
|
@@ -392,7 +392,7 @@ describe('Test Int64Property', function () {
|
|
|
392
392
|
expect(conflicts).to.have.length(1);
|
|
393
393
|
expect(changeSet.Int64.myInt64).to.deep.equal([0, 2]);
|
|
394
394
|
expect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);
|
|
395
|
-
}
|
|
395
|
+
},
|
|
396
396
|
});
|
|
397
397
|
});
|
|
398
398
|
it('with low/high modifies should be possible and report a conflict', function () {
|
|
@@ -408,7 +408,7 @@ describe('Test Int64Property', function () {
|
|
|
408
408
|
expect(conflicts).to.have.length(1);
|
|
409
409
|
expect(changeSet.Int64.myInt64).to.deep.equal([2, 0]);
|
|
410
410
|
expect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);
|
|
411
|
-
}
|
|
411
|
+
},
|
|
412
412
|
});
|
|
413
413
|
});
|
|
414
414
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"int64Property.spec.js","sourceRoot":"","sources":["../../../src/test/properties/int64Property.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/* eslint-disable no-unused-expressions */\n/* globals assert */\n/**\n * @fileoverview In this file, we will test the functions of 64 bit integer properties\n * described in /src/shared/property_sets/properties/int_property.js\n */\n\nvar PropertyFactory, nodeProp, containedInt64Prop, directInt64Prop, Int64, Uint64,\n BaseProperty, ChangeSet, TestInt64ArrayTemplate, MSG;\n\ndescribe('Test Int64Property', function () {\n /**\n * Get all the objects we need in this test here.\n */\n before(function () {\n PropertyFactory = require('../..').PropertyFactory;\n BaseProperty = require('../..').BaseProperty;\n ChangeSet = require('@fluid-experimental/property-changeset').ChangeSet\n Int64 = require('@fluid-experimental/property-common').Int64;\n Uint64 = require('@fluid-experimental/property-common').Uint64;\n MSG = require('@fluid-experimental/property-common').constants.MSG\n\n TestInt64ArrayTemplate = {\n typeid: 'autodesk.tests:Int64TestID-1.0.0',\n properties: [\n { id: 'myInt64', typeid: 'Int64' },\n { id: 'myUint64', typeid: 'Uint64' }\n ]\n };\n PropertyFactory._reregister(TestInt64ArrayTemplate);\n\n nodeProp = PropertyFactory.create('autodesk.tests:Int64TestID-1.0.0');\n containedInt64Prop = nodeProp._properties.myInt64;\n directInt64Prop = PropertyFactory.create('Int64');\n });\n\n it('should correctly set/get the values', function () {\n containedInt64Prop.setValueHigh(33);\n containedInt64Prop.setValueLow(22);\n expect(containedInt64Prop.getValueLow()).to.be.equal(22);\n expect(containedInt64Prop.getValueHigh()).to.be.equal(33);\n expect(containedInt64Prop.value.getValueLow()).to.be.equal(22);\n expect(containedInt64Prop.value.getValueHigh()).to.be.equal(33);\n containedInt64Prop.value = new Int64(11, 12);\n expect(containedInt64Prop.getValueLow()).to.be.equal(11);\n expect(containedInt64Prop.getValueHigh()).to.be.equal(12);\n expect(containedInt64Prop.value.getValueLow()).to.be.equal(11);\n expect(containedInt64Prop.value.getValueHigh()).to.be.equal(12);\n\n // changing the value inderectly should be impossible\n expect(containedInt64Prop.value.setValueLow).to.not.exist;\n expect(containedInt64Prop.value.setValueHigh).to.not.exist;\n });\n\n it('should correctly setValue when passed a number', function () {\n const prop = PropertyFactory.create('Int64');\n const value = 123;\n prop.setValue(value);\n expect(prop.getValueLow()).to.equal(value);\n expect(prop.getValueHigh()).to.equal(0);\n expect(prop.toString()).to.equal(value.toString());\n });\n\n it('should correctly setValue when passed a negative number', function () {\n const prop = PropertyFactory.create('Int64');\n const value = -123;\n prop.setValue(value);\n expect(prop.toString()).to.equal(value.toString());\n });\n\n it('should correctly setValue when passed a large number (above MAX_SAFE_INT)', function () {\n const prop = PropertyFactory.create('Int64');\n const value = Math.pow(2, 53) - 1000;\n prop.setValue(value);\n\n expect(prop.toString()).to.equal(value.toString());\n expect(prop.getValueLow()).to.equal(4294966296);\n expect(prop.getValueHigh()).to.equal(2097151);\n });\n\n it('should correctly setValue when passed a large negative number (below MIN_SAFE_INT)', function () {\n const prop = PropertyFactory.create('Int64');\n const value = -Math.pow(2, 53) + 1000;\n prop.setValue(value);\n\n expect(prop.toString()).to.equal(value.toString());\n expect(prop.getValueLow()).to.equal(1000);\n expect(prop.getValueHigh()).to.equal(-2097152);\n });\n\n it('should correctly setValue when passed a string', function () {\n const prop = PropertyFactory.create('Int64');\n prop.setValue('1234567890');\n expect(prop.toString()).to.equal('1234567890');\n });\n\n it('should throw error when passed a string with non numbers', function () {\n const prop = PropertyFactory.create('Int64');\n expect(prop.setValue.bind(prop, 'error')).to.throw(MSG.CANNOT_PARSE_INVALID_CHARACTERS + 'error');\n });\n\n it('should correctly convert to string', function () {\n\n containedInt64Prop.value = new Int64(4294967295, 2147483647); // 2^63-1\n expect(containedInt64Prop.toString()).to.be.equal('9223372036854775807');\n\n containedInt64Prop.value = new Int64(0, 2147483648); // -2^63\n expect(containedInt64Prop.toString()).to.be.equal('-9223372036854775808');\n\n containedInt64Prop.value = new Int64(845094001, 1810905006);\n expect(containedInt64Prop.toString()).to.be.equal('7777777777777777777');\n\n containedInt64Prop.value = new Int64(845094001, 0);\n expect(containedInt64Prop.toString()).to.be.equal('845094001');\n\n containedInt64Prop.value = new Int64(0, 845094001);\n expect(containedInt64Prop.toString()).to.be.equal('3629651096340791296');\n\n containedInt64Prop.value = new Int64(0, 0xFFFFFFFF);\n expect(containedInt64Prop.toString()).to.be.equal('-4294967296');\n\n containedInt64Prop.value = new Int64(0xFFFFFFFF, 0xFFFFFFFF);\n expect(containedInt64Prop.toString()).to.be.equal('-1');\n });\n\n it('int64.fromString should work correctly', function () {\n containedInt64Prop.value = new Int64(0, 0);\n expect(containedInt64Prop.toString()).to.be.equal('0');\n\n containedInt64Prop.fromString('3629651096340791296');\n expect(containedInt64Prop.value.getValueHigh()).to.be.equal(845094001);\n expect(containedInt64Prop.value.getValueLow()).to.be.equal(0);\n\n containedInt64Prop.fromString('9223372036854775807');\n expect(containedInt64Prop.value.getValueHigh()).to.be.equal(2147483647);\n expect(containedInt64Prop.value.getValueLow()).to.be.equal(4294967295);\n\n containedInt64Prop.fromString('-1');\n expect(containedInt64Prop.toString()).to.be.equal('-1');\n\n containedInt64Prop.fromString('0');\n expect(containedInt64Prop.toString()).to.be.equal('0');\n\n containedInt64Prop.fromString('18446744073709551615');\n expect(containedInt64Prop.value.getValueHigh()).to.be.equal(0xFFFFFFFF);\n expect(containedInt64Prop.value.getValueLow()).to.be.equal(0xFFFFFFFF);\n });\n\n it('should correctly serialize/deserialize', function () {\n containedInt64Prop.value = new Int64(11, 12);\n\n var serialized = containedInt64Prop.serialize({ 'dirtyOnly': true });\n expect(serialized).to.deep.equal([11, 12]);\n containedInt64Prop.cleanDirty();\n serialized = containedInt64Prop.serialize({ 'dirtyOnly': true });\n assert.deepEqual(serialized, {});\n\n var deserializeResult = directInt64Prop.deserialize(containedInt64Prop.serialize({ 'dirtyOnly': false }));\n expect(deserializeResult).to.deep.equal([11, 12]);\n deserializeResult = directInt64Prop.deserialize(containedInt64Prop.serialize({ 'dirtyOnly': false }));\n expect(deserializeResult).to.not.exist;\n expect(directInt64Prop.getValueLow()).to.be.equal(11);\n expect(directInt64Prop.getValueHigh()).to.be.equal(12);\n\n var otherNodeProp = PropertyFactory.create('autodesk.tests:Int64TestID-1.0.0');\n otherNodeProp.deserialize(nodeProp.serialize({ 'dirtyOnly': false }));\n expect(otherNodeProp._properties.myInt64.getValueLow()).to.be.equal(11);\n expect(otherNodeProp._properties.myInt64.getValueHigh()).to.be.equal(12);\n });\n\n it('should correctly dirty on set', function () {\n directInt64Prop.cleanDirty();\n expect(directInt64Prop.isDirty()).to.be.false;\n directInt64Prop.value = new Int64(32, 42);\n expect(directInt64Prop.isDirty()).to.be.true;\n\n directInt64Prop.cleanDirty();\n expect(directInt64Prop.isDirty()).to.be.false;\n directInt64Prop.setValueHigh(66);\n expect(directInt64Prop.isDirty()).to.be.true;\n directInt64Prop.cleanDirty();\n directInt64Prop.setValueHigh(66);\n expect(directInt64Prop.isDirty()).to.be.false;\n\n directInt64Prop.cleanDirty();\n expect(directInt64Prop.isDirty()).to.be.false;\n directInt64Prop.setValueLow(33);\n expect(directInt64Prop.isDirty()).to.be.true;\n directInt64Prop.cleanDirty();\n directInt64Prop.setValueLow(33);\n expect(directInt64Prop.isDirty()).to.be.false;\n });\n\n it('should not violate the ChangeSet Specificaton', function () {\n containedInt64Prop.value = new Int64(32, 42);\n nodeProp._properties.myUint64.value = new Uint64(99, 110);\n expect(nodeProp.serialize({ 'dirtyOnly': false })).to.deep.equal(\n {\n Int64: {\n myInt64: [32, 42]\n },\n Uint64: {\n myUint64: [99, 110]\n }\n }\n );\n });\n\n describe('squashing', function () {\n // Helper function to test the squashing for different containers\n var innerTestChangeSetSquashing = function (io_testProperty, io_intProperty,\n io_initialChangeset, in_options, in_collection) {\n var squashedChangeset = new ChangeSet();\n io_testProperty.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n var callbacks = in_options.callbacks;\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i](io_intProperty);\n var changes = io_testProperty.serialize({ 'dirtyOnly': true });\n io_testProperty.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n squashedChangeset.applyChangeSet(changes);\n // regression test for not-deep-copying array changes\n if (changes.modify) {\n changes.modify.Int64.intProperty[0] = 888;\n } else {\n changes.Int64.myInt64[0] = 999;\n }\n }\n\n io_initialChangeset.applyChangeSet(squashedChangeset.getSerializedChangeSet());\n };\n\n //\n // Helper function which takes a sequence of callbacks that are successively executed\n // and the changes applied by the callbacks are separately tracked and squashed in a\n // a ChangeSet. This ChangeSet is then compared to the state in the property object\n //\n // Optionally, a a callback which controls the initial state before the squashing can\n // be given as first parameter\n //\n var testChangeSetSquashing = function (in_options) {\n\n var testProperty = PropertyFactory.create('autodesk.tests:Int64TestID-1.0.0');\n var nodeTestProperty = PropertyFactory.create('NodeProperty');\n var int64InNodeProperty = PropertyFactory.create('Int64');\n nodeTestProperty.insert('intProperty', int64InNodeProperty);\n var mapTestProperty = PropertyFactory.create('map<>');\n var int64InMapProperty = PropertyFactory.create('Int64');\n mapTestProperty.insert('intProperty', int64InMapProperty);\n\n if (in_options.pre) {\n in_options.pre(testProperty._properties.intProperty);\n in_options.pre(int64InNodeProperty);\n in_options.pre(int64InMapProperty);\n }\n\n var initialChangeset = new ChangeSet(testProperty.serialize({ 'dirtyOnly': false }));\n initialChangeset.setIsNormalized(true);\n var initialChangesetNode = new ChangeSet(nodeTestProperty.serialize({ 'dirtyOnly': false }));\n initialChangesetNode.setIsNormalized(true);\n var initialChangesetMap = new ChangeSet(mapTestProperty.serialize({ 'dirtyOnly': false }));\n initialChangesetMap.setIsNormalized(true);\n\n innerTestChangeSetSquashing(testProperty,\n testProperty._properties.myInt64, initialChangeset, in_options);\n innerTestChangeSetSquashing(nodeTestProperty,\n int64InNodeProperty, initialChangesetNode, in_options, true);\n innerTestChangeSetSquashing(mapTestProperty,\n int64InMapProperty, initialChangesetMap, in_options, true);\n\n\n var initialChangeset = initialChangeset.getSerializedChangeSet().Int64.intProperty;\n expect(initialChangeset).to.deep.equal(testProperty.serialize({ 'dirtyOnly': false }).Int64.intProperty);\n\n var nodeInitialChangeset = initialChangesetNode.getSerializedChangeSet().insert.Int64.intProperty;\n expect(nodeInitialChangeset).to.deep.equal(nodeTestProperty.serialize(\n { 'dirtyOnly': false }).insert.Int64.intProperty);\n\n var mapInitialChangeset = initialChangesetMap.getSerializedChangeSet().insert.Int64.intProperty;\n expect(mapInitialChangeset).to.deep.equal(mapTestProperty.serialize(\n { 'dirtyOnly': false }).insert.Int64.intProperty);\n };\n\n it('should correctly squash 64bit properties', function () {\n testChangeSetSquashing({\n callbacks: [\n function (io_prop) {\n io_prop.setValueHigh(1);\n },\n function (io_prop) {\n io_prop.setValueHigh(2);\n }\n ]\n });\n });\n\n it('should correctly squash low/high 64bit property changes', function () {\n testChangeSetSquashing({\n callbacks: [\n function (io_prop) {\n io_prop.setValueHigh(1);\n },\n function (io_prop) {\n io_prop.setValueLow(2);\n }\n ]\n });\n });\n\n it('should squash two ChangeSets, one inserts the other modifies the same Int64 property', function () {\n var nodeTestProperty = PropertyFactory.create('NodeProperty');\n var int64Property = PropertyFactory.create('Int64');\n nodeTestProperty.insert('myProp', int64Property);\n\n var changeSet1 = new ChangeSet(nodeTestProperty.serialize({ dirtyOnly: true }));\n\n nodeTestProperty.cleanDirty();\n nodeTestProperty.resolvePath('myProp').setValueHigh(100);\n var changeSet2 = new ChangeSet(nodeTestProperty.serialize({ dirtyOnly: true }));\n\n var nodeTestProperty = PropertyFactory.create('NodeProperty');\n var int64Property = PropertyFactory.create('Int64');\n int64Property.setValueHigh(100);\n nodeTestProperty.insert('myProp', int64Property);\n var expectedChangeSet = nodeTestProperty.serialize({ dirtyOnly: true });\n\n changeSet1.applyChangeSet(changeSet2);\n\n expect(\n changeSet1.getSerializedChangeSet().insert.Int64.myProp ===\n changeSet2.getSerializedChangeSet().modify.Int64.myProp\n ).to.be.false;\n expect(changeSet1.getSerializedChangeSet()).to.eql(expectedChangeSet);\n });\n\n it('should squash two ChangeSets, one inserts the other modifies the same Int64 property', function () {\n var nodeTestProperty = PropertyFactory.create('NodeProperty');\n var Uint64Property = PropertyFactory.create('Uint64');\n nodeTestProperty.insert('myProp', Uint64Property);\n\n var changeSet1 = new ChangeSet(nodeTestProperty.serialize({ dirtyOnly: true }));\n\n nodeTestProperty.cleanDirty();\n nodeTestProperty.resolvePath('myProp').setValueHigh(100);\n var changeSet2 = new ChangeSet(nodeTestProperty.serialize({ dirtyOnly: true }));\n\n var nodeTestProperty = PropertyFactory.create('NodeProperty');\n var Uint64Property = PropertyFactory.create('Uint64');\n Uint64Property.setValueHigh(100);\n nodeTestProperty.insert('myProp', Uint64Property);\n var expectedChangeSet = nodeTestProperty.serialize({ dirtyOnly: true });\n\n changeSet1.applyChangeSet(changeSet2);\n\n expect(\n changeSet1.getSerializedChangeSet().insert.Uint64.myProp ===\n changeSet2.getSerializedChangeSet().modify.Uint64.myProp\n ).to.be.false;\n expect(changeSet1.getSerializedChangeSet()).to.eql(expectedChangeSet);\n });\n });\n\n describe('rebasing', function () {\n var createPropertyForRebaseTestByTemplate = function () {\n return PropertyFactory.create('autodesk.tests:Int64TestID-1.0.0');\n };\n\n var createNodePropertyForRebase = function () {\n var nodeTestProperty = PropertyFactory.create('NodeProperty');\n var int64InNodeProperty = PropertyFactory.create('Int64');\n nodeTestProperty.insert('myInt64', int64InNodeProperty);\n return nodeTestProperty;\n };\n\n var createMapPropertyForRebase = function () {\n var mapTestProperty = PropertyFactory.create('map<>');\n var int64InNodeProperty = PropertyFactory.create('Int64');\n mapTestProperty.insert('myInt64', int64InNodeProperty);\n return mapTestProperty;\n };\n\n var getIntPropertyFromNode = function (in_testProperty) {\n return in_testProperty._properties.myInt64;\n };\n\n var getIntPropertyFromMap = function (in_testProperty) {\n return in_testProperty.get('myInt64');\n };\n\n var testRebasingInner = function (in_creator, in_getInnerProperty, in_options, in_isCollection) {\n // Prepare the initial state\n var baseProperty1 = in_creator();\n if (in_options.prepare) {\n in_options.prepare(in_getInnerProperty(baseProperty1));\n }\n // Create two copies of this state\n var baseProperty2 = in_creator();\n baseProperty2.deserialize(baseProperty1.serialize({ 'dirtyOnly': false }));\n var baseProperty3 = in_creator();\n baseProperty3.deserialize(baseProperty1.serialize({ 'dirtyOnly': false }));\n\n // Make sure the states are clear\n baseProperty1.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n baseProperty2.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n baseProperty3.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n\n var initialChangeSet = baseProperty1.serialize({ 'dirtyOnly': false });\n\n // Apply the operations to the two properties in parallel\n if (in_options.op1) {\n in_options.op1(in_getInnerProperty(baseProperty1));\n }\n if (in_options.op2) {\n in_options.op2(in_getInnerProperty(baseProperty2));\n }\n\n // Get the ChangeSets\n var changeSet1 = new ChangeSet(baseProperty1.serialize({ 'dirtyOnly': true }));\n var changeSet2 = baseProperty2.serialize({ 'dirtyOnly': true });\n\n // Perform the actual rebase\n var conflicts = [];\n changeSet1._rebaseChangeSet(changeSet2, conflicts);\n\n var combinedChangeSet = new ChangeSet(initialChangeSet).clone();\n combinedChangeSet.setIsNormalized(true);\n combinedChangeSet.setIsNormalized(true);\n combinedChangeSet.applyChangeSet(changeSet1);\n combinedChangeSet.applyChangeSet(changeSet2);\n\n if (in_options.compareToSequential) {\n if (in_options.op1) {\n in_options.op1(in_getInnerProperty(baseProperty3));\n }\n if (in_options.op2) {\n in_options.op2(in_getInnerProperty(baseProperty3));\n }\n var finalChangeSet = baseProperty3.serialize({ 'dirtyOnly': false });\n if (in_isCollection && finalChangeSet.insert) {\n finalChangeSet = finalChangeSet.insert;\n }\n\n var combinedSerialized = combinedChangeSet.getSerializedChangeSet();\n if (in_isCollection && combinedSerialized.insert) {\n combinedSerialized = combinedSerialized.insert;\n }\n\n expect(combinedSerialized).to.deep.equal(finalChangeSet);\n\n }\n\n if (in_options.checkResult) {\n if (in_isCollection && changeSet2.modify) {\n changeSet2 = changeSet2.modify;\n }\n in_options.checkResult(conflicts, changeSet2, combinedChangeSet);\n }\n };\n\n var testRebasing = function (in_options) {\n testRebasingInner(createPropertyForRebaseTestByTemplate, getIntPropertyFromNode, in_options);\n testRebasingInner(createNodePropertyForRebase, getIntPropertyFromNode, in_options, true);\n testRebasingInner(createMapPropertyForRebase, getIntPropertyFromMap, in_options, true);\n };\n\n it('with two modifies should be possible and report a conflict', function () {\n testRebasing({\n op1: function (io_prop) {\n io_prop.setValueHigh(1);\n },\n op2: function (io_prop) {\n io_prop.setValueHigh(2);\n },\n compareToSequential: true,\n checkResult: function (conflicts, changeSet) {\n expect(conflicts).to.have.length(1);\n expect(changeSet.Int64.myInt64).to.deep.equal([0, 2]);\n expect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);\n }\n });\n });\n\n it('with low/high modifies should be possible and report a conflict', function () {\n testRebasing({\n op1: function (io_prop) {\n io_prop.setValueHigh(1);\n },\n op2: function (io_prop) {\n io_prop.setValueLow(2);\n },\n compareToSequential: false,\n checkResult: function (conflicts, changeSet) {\n expect(conflicts).to.have.length(1);\n expect(changeSet.Int64.myInt64).to.deep.equal([2, 0]);\n expect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);\n }\n });\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"int64Property.spec.js","sourceRoot":"","sources":["../../../src/test/properties/int64Property.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/* eslint-disable no-unused-expressions */\n/* globals assert */\n/**\n * @fileoverview In this file, we will test the functions of 64 bit integer properties\n * described in /src/shared/property_sets/properties/int_property.js\n */\n\nvar PropertyFactory, nodeProp, containedInt64Prop, directInt64Prop, Int64, Uint64,\n BaseProperty, ChangeSet, TestInt64ArrayTemplate, MSG;\n\ndescribe('Test Int64Property', function() {\n /**\n * Get all the objects we need in this test here.\n */\n before(function() {\n PropertyFactory = require('../..').PropertyFactory;\n BaseProperty = require('../..').BaseProperty;\n ChangeSet = require('@fluid-experimental/property-changeset').ChangeSet;\n Int64 = require('@fluid-experimental/property-common').Int64;\n Uint64 = require('@fluid-experimental/property-common').Uint64;\n MSG = require('@fluid-experimental/property-common').constants.MSG;\n\n TestInt64ArrayTemplate = {\n typeid: 'autodesk.tests:Int64TestID-1.0.0',\n properties: [\n { id: 'myInt64', typeid: 'Int64' },\n { id: 'myUint64', typeid: 'Uint64' },\n ],\n };\n PropertyFactory._reregister(TestInt64ArrayTemplate);\n\n nodeProp = PropertyFactory.create('autodesk.tests:Int64TestID-1.0.0');\n containedInt64Prop = nodeProp._properties.myInt64;\n directInt64Prop = PropertyFactory.create('Int64');\n });\n\n it('should correctly set/get the values', function() {\n containedInt64Prop.setValueHigh(33);\n containedInt64Prop.setValueLow(22);\n expect(containedInt64Prop.getValueLow()).to.be.equal(22);\n expect(containedInt64Prop.getValueHigh()).to.be.equal(33);\n expect(containedInt64Prop.value.getValueLow()).to.be.equal(22);\n expect(containedInt64Prop.value.getValueHigh()).to.be.equal(33);\n containedInt64Prop.value = new Int64(11, 12);\n expect(containedInt64Prop.getValueLow()).to.be.equal(11);\n expect(containedInt64Prop.getValueHigh()).to.be.equal(12);\n expect(containedInt64Prop.value.getValueLow()).to.be.equal(11);\n expect(containedInt64Prop.value.getValueHigh()).to.be.equal(12);\n\n // changing the value inderectly should be impossible\n expect(containedInt64Prop.value.setValueLow).to.not.exist;\n expect(containedInt64Prop.value.setValueHigh).to.not.exist;\n });\n\n it('should correctly setValue when passed a number', function() {\n const prop = PropertyFactory.create('Int64');\n const value = 123;\n prop.setValue(value);\n expect(prop.getValueLow()).to.equal(value);\n expect(prop.getValueHigh()).to.equal(0);\n expect(prop.toString()).to.equal(value.toString());\n });\n\n it('should correctly setValue when passed a negative number', function() {\n const prop = PropertyFactory.create('Int64');\n const value = -123;\n prop.setValue(value);\n expect(prop.toString()).to.equal(value.toString());\n });\n\n it('should correctly setValue when passed a large number (above MAX_SAFE_INT)', function() {\n const prop = PropertyFactory.create('Int64');\n const value = Math.pow(2, 53) - 1000;\n prop.setValue(value);\n\n expect(prop.toString()).to.equal(value.toString());\n expect(prop.getValueLow()).to.equal(4294966296);\n expect(prop.getValueHigh()).to.equal(2097151);\n });\n\n it('should correctly setValue when passed a large negative number (below MIN_SAFE_INT)', function() {\n const prop = PropertyFactory.create('Int64');\n const value = -Math.pow(2, 53) + 1000;\n prop.setValue(value);\n\n expect(prop.toString()).to.equal(value.toString());\n expect(prop.getValueLow()).to.equal(1000);\n expect(prop.getValueHigh()).to.equal(-2097152);\n });\n\n it('should correctly setValue when passed a string', function() {\n const prop = PropertyFactory.create('Int64');\n prop.setValue('1234567890');\n expect(prop.toString()).to.equal('1234567890');\n });\n\n it('should throw error when passed a string with non numbers', function() {\n const prop = PropertyFactory.create('Int64');\n expect(prop.setValue.bind(prop, 'error')).to.throw(MSG.CANNOT_PARSE_INVALID_CHARACTERS + 'error');\n });\n\n it('should correctly convert to string', function() {\n containedInt64Prop.value = new Int64(4294967295, 2147483647); // 2^63-1\n expect(containedInt64Prop.toString()).to.be.equal('9223372036854775807');\n\n containedInt64Prop.value = new Int64(0, 2147483648); // -2^63\n expect(containedInt64Prop.toString()).to.be.equal('-9223372036854775808');\n\n containedInt64Prop.value = new Int64(845094001, 1810905006);\n expect(containedInt64Prop.toString()).to.be.equal('7777777777777777777');\n\n containedInt64Prop.value = new Int64(845094001, 0);\n expect(containedInt64Prop.toString()).to.be.equal('845094001');\n\n containedInt64Prop.value = new Int64(0, 845094001);\n expect(containedInt64Prop.toString()).to.be.equal('3629651096340791296');\n\n containedInt64Prop.value = new Int64(0, 0xFFFFFFFF);\n expect(containedInt64Prop.toString()).to.be.equal('-4294967296');\n\n containedInt64Prop.value = new Int64(0xFFFFFFFF, 0xFFFFFFFF);\n expect(containedInt64Prop.toString()).to.be.equal('-1');\n });\n\n it('int64.fromString should work correctly', function() {\n containedInt64Prop.value = new Int64(0, 0);\n expect(containedInt64Prop.toString()).to.be.equal('0');\n\n containedInt64Prop.fromString('3629651096340791296');\n expect(containedInt64Prop.value.getValueHigh()).to.be.equal(845094001);\n expect(containedInt64Prop.value.getValueLow()).to.be.equal(0);\n\n containedInt64Prop.fromString('9223372036854775807');\n expect(containedInt64Prop.value.getValueHigh()).to.be.equal(2147483647);\n expect(containedInt64Prop.value.getValueLow()).to.be.equal(4294967295);\n\n containedInt64Prop.fromString('-1');\n expect(containedInt64Prop.toString()).to.be.equal('-1');\n\n containedInt64Prop.fromString('0');\n expect(containedInt64Prop.toString()).to.be.equal('0');\n\n containedInt64Prop.fromString('18446744073709551615');\n expect(containedInt64Prop.value.getValueHigh()).to.be.equal(0xFFFFFFFF);\n expect(containedInt64Prop.value.getValueLow()).to.be.equal(0xFFFFFFFF);\n });\n\n it('should correctly serialize/deserialize', function() {\n containedInt64Prop.value = new Int64(11, 12);\n\n var serialized = containedInt64Prop.serialize({ 'dirtyOnly': true });\n expect(serialized).to.deep.equal([11, 12]);\n containedInt64Prop.cleanDirty();\n serialized = containedInt64Prop.serialize({ 'dirtyOnly': true });\n assert.deepEqual(serialized, {});\n\n var deserializeResult = directInt64Prop.deserialize(containedInt64Prop.serialize({ 'dirtyOnly': false }));\n expect(deserializeResult).to.deep.equal([11, 12]);\n deserializeResult = directInt64Prop.deserialize(containedInt64Prop.serialize({ 'dirtyOnly': false }));\n expect(deserializeResult).to.not.exist;\n expect(directInt64Prop.getValueLow()).to.be.equal(11);\n expect(directInt64Prop.getValueHigh()).to.be.equal(12);\n\n var otherNodeProp = PropertyFactory.create('autodesk.tests:Int64TestID-1.0.0');\n otherNodeProp.deserialize(nodeProp.serialize({ 'dirtyOnly': false }));\n expect(otherNodeProp._properties.myInt64.getValueLow()).to.be.equal(11);\n expect(otherNodeProp._properties.myInt64.getValueHigh()).to.be.equal(12);\n });\n\n it('should correctly dirty on set', function() {\n directInt64Prop.cleanDirty();\n expect(directInt64Prop.isDirty()).to.be.false;\n directInt64Prop.value = new Int64(32, 42);\n expect(directInt64Prop.isDirty()).to.be.true;\n\n directInt64Prop.cleanDirty();\n expect(directInt64Prop.isDirty()).to.be.false;\n directInt64Prop.setValueHigh(66);\n expect(directInt64Prop.isDirty()).to.be.true;\n directInt64Prop.cleanDirty();\n directInt64Prop.setValueHigh(66);\n expect(directInt64Prop.isDirty()).to.be.false;\n\n directInt64Prop.cleanDirty();\n expect(directInt64Prop.isDirty()).to.be.false;\n directInt64Prop.setValueLow(33);\n expect(directInt64Prop.isDirty()).to.be.true;\n directInt64Prop.cleanDirty();\n directInt64Prop.setValueLow(33);\n expect(directInt64Prop.isDirty()).to.be.false;\n });\n\n it('should not violate the ChangeSet Specificaton', function() {\n containedInt64Prop.value = new Int64(32, 42);\n nodeProp._properties.myUint64.value = new Uint64(99, 110);\n expect(nodeProp.serialize({ 'dirtyOnly': false })).to.deep.equal(\n {\n Int64: {\n myInt64: [32, 42],\n },\n Uint64: {\n myUint64: [99, 110],\n },\n },\n );\n });\n\n describe('squashing', function() {\n // Helper function to test the squashing for different containers\n var innerTestChangeSetSquashing = function(io_testProperty, io_intProperty,\n io_initialChangeset, in_options, in_collection) {\n var squashedChangeset = new ChangeSet();\n io_testProperty.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n var callbacks = in_options.callbacks;\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i](io_intProperty);\n var changes = io_testProperty.serialize({ 'dirtyOnly': true });\n io_testProperty.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n squashedChangeset.applyChangeSet(changes);\n // regression test for not-deep-copying array changes\n if (changes.modify) {\n changes.modify.Int64.intProperty[0] = 888;\n } else {\n changes.Int64.myInt64[0] = 999;\n }\n }\n\n io_initialChangeset.applyChangeSet(squashedChangeset.getSerializedChangeSet());\n };\n\n //\n // Helper function which takes a sequence of callbacks that are successively executed\n // and the changes applied by the callbacks are separately tracked and squashed in a\n // a ChangeSet. This ChangeSet is then compared to the state in the property object\n //\n // Optionally, a a callback which controls the initial state before the squashing can\n // be given as first parameter\n //\n var testChangeSetSquashing = function(in_options) {\n var testProperty = PropertyFactory.create('autodesk.tests:Int64TestID-1.0.0');\n var nodeTestProperty = PropertyFactory.create('NodeProperty');\n var int64InNodeProperty = PropertyFactory.create('Int64');\n nodeTestProperty.insert('intProperty', int64InNodeProperty);\n var mapTestProperty = PropertyFactory.create('map<>');\n var int64InMapProperty = PropertyFactory.create('Int64');\n mapTestProperty.insert('intProperty', int64InMapProperty);\n\n if (in_options.pre) {\n in_options.pre(testProperty._properties.intProperty);\n in_options.pre(int64InNodeProperty);\n in_options.pre(int64InMapProperty);\n }\n\n var initialChangeset = new ChangeSet(testProperty.serialize({ 'dirtyOnly': false }));\n initialChangeset.setIsNormalized(true);\n var initialChangesetNode = new ChangeSet(nodeTestProperty.serialize({ 'dirtyOnly': false }));\n initialChangesetNode.setIsNormalized(true);\n var initialChangesetMap = new ChangeSet(mapTestProperty.serialize({ 'dirtyOnly': false }));\n initialChangesetMap.setIsNormalized(true);\n\n innerTestChangeSetSquashing(testProperty,\n testProperty._properties.myInt64, initialChangeset, in_options);\n innerTestChangeSetSquashing(nodeTestProperty,\n int64InNodeProperty, initialChangesetNode, in_options, true);\n innerTestChangeSetSquashing(mapTestProperty,\n int64InMapProperty, initialChangesetMap, in_options, true);\n\n var initialChangeset = initialChangeset.getSerializedChangeSet().Int64.intProperty;\n expect(initialChangeset).to.deep.equal(testProperty.serialize({ 'dirtyOnly': false }).Int64.intProperty);\n\n var nodeInitialChangeset = initialChangesetNode.getSerializedChangeSet().insert.Int64.intProperty;\n expect(nodeInitialChangeset).to.deep.equal(nodeTestProperty.serialize(\n { 'dirtyOnly': false }).insert.Int64.intProperty);\n\n var mapInitialChangeset = initialChangesetMap.getSerializedChangeSet().insert.Int64.intProperty;\n expect(mapInitialChangeset).to.deep.equal(mapTestProperty.serialize(\n { 'dirtyOnly': false }).insert.Int64.intProperty);\n };\n\n it('should correctly squash 64bit properties', function() {\n testChangeSetSquashing({\n callbacks: [\n function(io_prop) {\n io_prop.setValueHigh(1);\n },\n function(io_prop) {\n io_prop.setValueHigh(2);\n },\n ],\n });\n });\n\n it('should correctly squash low/high 64bit property changes', function() {\n testChangeSetSquashing({\n callbacks: [\n function(io_prop) {\n io_prop.setValueHigh(1);\n },\n function(io_prop) {\n io_prop.setValueLow(2);\n },\n ],\n });\n });\n\n it('should squash two ChangeSets, one inserts the other modifies the same Int64 property', function() {\n var nodeTestProperty = PropertyFactory.create('NodeProperty');\n var int64Property = PropertyFactory.create('Int64');\n nodeTestProperty.insert('myProp', int64Property);\n\n var changeSet1 = new ChangeSet(nodeTestProperty.serialize({ dirtyOnly: true }));\n\n nodeTestProperty.cleanDirty();\n nodeTestProperty.resolvePath('myProp').setValueHigh(100);\n var changeSet2 = new ChangeSet(nodeTestProperty.serialize({ dirtyOnly: true }));\n\n var nodeTestProperty = PropertyFactory.create('NodeProperty');\n var int64Property = PropertyFactory.create('Int64');\n int64Property.setValueHigh(100);\n nodeTestProperty.insert('myProp', int64Property);\n var expectedChangeSet = nodeTestProperty.serialize({ dirtyOnly: true });\n\n changeSet1.applyChangeSet(changeSet2);\n\n expect(\n changeSet1.getSerializedChangeSet().insert.Int64.myProp ===\n changeSet2.getSerializedChangeSet().modify.Int64.myProp,\n ).to.be.false;\n expect(changeSet1.getSerializedChangeSet()).to.eql(expectedChangeSet);\n });\n\n it('should squash two ChangeSets, one inserts the other modifies the same Int64 property', function() {\n var nodeTestProperty = PropertyFactory.create('NodeProperty');\n var Uint64Property = PropertyFactory.create('Uint64');\n nodeTestProperty.insert('myProp', Uint64Property);\n\n var changeSet1 = new ChangeSet(nodeTestProperty.serialize({ dirtyOnly: true }));\n\n nodeTestProperty.cleanDirty();\n nodeTestProperty.resolvePath('myProp').setValueHigh(100);\n var changeSet2 = new ChangeSet(nodeTestProperty.serialize({ dirtyOnly: true }));\n\n var nodeTestProperty = PropertyFactory.create('NodeProperty');\n var Uint64Property = PropertyFactory.create('Uint64');\n Uint64Property.setValueHigh(100);\n nodeTestProperty.insert('myProp', Uint64Property);\n var expectedChangeSet = nodeTestProperty.serialize({ dirtyOnly: true });\n\n changeSet1.applyChangeSet(changeSet2);\n\n expect(\n changeSet1.getSerializedChangeSet().insert.Uint64.myProp ===\n changeSet2.getSerializedChangeSet().modify.Uint64.myProp,\n ).to.be.false;\n expect(changeSet1.getSerializedChangeSet()).to.eql(expectedChangeSet);\n });\n });\n\n describe('rebasing', function() {\n var createPropertyForRebaseTestByTemplate = function() {\n return PropertyFactory.create('autodesk.tests:Int64TestID-1.0.0');\n };\n\n var createNodePropertyForRebase = function() {\n var nodeTestProperty = PropertyFactory.create('NodeProperty');\n var int64InNodeProperty = PropertyFactory.create('Int64');\n nodeTestProperty.insert('myInt64', int64InNodeProperty);\n return nodeTestProperty;\n };\n\n var createMapPropertyForRebase = function() {\n var mapTestProperty = PropertyFactory.create('map<>');\n var int64InNodeProperty = PropertyFactory.create('Int64');\n mapTestProperty.insert('myInt64', int64InNodeProperty);\n return mapTestProperty;\n };\n\n var getIntPropertyFromNode = function(in_testProperty) {\n return in_testProperty._properties.myInt64;\n };\n\n var getIntPropertyFromMap = function(in_testProperty) {\n return in_testProperty.get('myInt64');\n };\n\n var testRebasingInner = function(in_creator, in_getInnerProperty, in_options, in_isCollection) {\n // Prepare the initial state\n var baseProperty1 = in_creator();\n if (in_options.prepare) {\n in_options.prepare(in_getInnerProperty(baseProperty1));\n }\n // Create two copies of this state\n var baseProperty2 = in_creator();\n baseProperty2.deserialize(baseProperty1.serialize({ 'dirtyOnly': false }));\n var baseProperty3 = in_creator();\n baseProperty3.deserialize(baseProperty1.serialize({ 'dirtyOnly': false }));\n\n // Make sure the states are clear\n baseProperty1.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n baseProperty2.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n baseProperty3.cleanDirty(BaseProperty.MODIFIED_STATE_FLAGS.DIRTY |\n BaseProperty.MODIFIED_STATE_FLAGS.PENDING_CHANGE);\n\n var initialChangeSet = baseProperty1.serialize({ 'dirtyOnly': false });\n\n // Apply the operations to the two properties in parallel\n if (in_options.op1) {\n in_options.op1(in_getInnerProperty(baseProperty1));\n }\n if (in_options.op2) {\n in_options.op2(in_getInnerProperty(baseProperty2));\n }\n\n // Get the ChangeSets\n var changeSet1 = new ChangeSet(baseProperty1.serialize({ 'dirtyOnly': true }));\n var changeSet2 = baseProperty2.serialize({ 'dirtyOnly': true });\n\n // Perform the actual rebase\n var conflicts = [];\n changeSet1._rebaseChangeSet(changeSet2, conflicts);\n\n var combinedChangeSet = new ChangeSet(initialChangeSet).clone();\n combinedChangeSet.setIsNormalized(true);\n combinedChangeSet.setIsNormalized(true);\n combinedChangeSet.applyChangeSet(changeSet1);\n combinedChangeSet.applyChangeSet(changeSet2);\n\n if (in_options.compareToSequential) {\n if (in_options.op1) {\n in_options.op1(in_getInnerProperty(baseProperty3));\n }\n if (in_options.op2) {\n in_options.op2(in_getInnerProperty(baseProperty3));\n }\n var finalChangeSet = baseProperty3.serialize({ 'dirtyOnly': false });\n if (in_isCollection && finalChangeSet.insert) {\n finalChangeSet = finalChangeSet.insert;\n }\n\n var combinedSerialized = combinedChangeSet.getSerializedChangeSet();\n if (in_isCollection && combinedSerialized.insert) {\n combinedSerialized = combinedSerialized.insert;\n }\n\n expect(combinedSerialized).to.deep.equal(finalChangeSet);\n }\n\n if (in_options.checkResult) {\n if (in_isCollection && changeSet2.modify) {\n changeSet2 = changeSet2.modify;\n }\n in_options.checkResult(conflicts, changeSet2, combinedChangeSet);\n }\n };\n\n var testRebasing = function(in_options) {\n testRebasingInner(createPropertyForRebaseTestByTemplate, getIntPropertyFromNode, in_options);\n testRebasingInner(createNodePropertyForRebase, getIntPropertyFromNode, in_options, true);\n testRebasingInner(createMapPropertyForRebase, getIntPropertyFromMap, in_options, true);\n };\n\n it('with two modifies should be possible and report a conflict', function() {\n testRebasing({\n op1: function(io_prop) {\n io_prop.setValueHigh(1);\n },\n op2: function(io_prop) {\n io_prop.setValueHigh(2);\n },\n compareToSequential: true,\n checkResult: function(conflicts, changeSet) {\n expect(conflicts).to.have.length(1);\n expect(changeSet.Int64.myInt64).to.deep.equal([0, 2]);\n expect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);\n },\n });\n });\n\n it('with low/high modifies should be possible and report a conflict', function() {\n testRebasing({\n op1: function(io_prop) {\n io_prop.setValueHigh(1);\n },\n op2: function(io_prop) {\n io_prop.setValueLow(2);\n },\n compareToSequential: false,\n checkResult: function(conflicts, changeSet) {\n expect(conflicts).to.have.length(1);\n expect(changeSet.Int64.myInt64).to.deep.equal([2, 0]);\n expect(conflicts[0].type).to.be.equal(ChangeSet.ConflictType.COLLIDING_SET);\n },\n });\n });\n });\n});\n"]}
|