@fluid-experimental/property-properties 2.72.0 → 2.74.0-365691
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propertyFactory.spec.js","sourceRoot":"","sources":["../../src/test/propertyFactory.spec.js"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* globals sinon */\n\nconst { MSG } = require(\"@fluid-experimental/property-common\").constants;\nconst { generateGUID } = require(\"@fluid-experimental/property-common\").GuidUtils;\n\nconst { PropertyFactory } = require(\"..\");\nconst { StringProperty } = require(\"../properties/stringProperty\");\n\ndescribe(\"PropertyFactory\", function () {\n\tbeforeEach(() => {\n\t\tPropertyFactory._clear();\n\t});\n\n\tlet SimplePoint = {\n\t\ttypeid: \"SimpleTest:PointID-1.0.0\",\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tid: \"position\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"x\",\n\t\t\t\t\t\ttypeid: \"Float32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"y\",\n\t\t\t\t\t\ttypeid: \"Float32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"z\",\n\t\t\t\t\t\ttypeid: \"Float32\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"normal\",\n\t\t\t\ttypeid: \"Float32\",\n\t\t\t\tcontext: \"array\",\n\t\t\t\tsize: 3,\n\t\t\t},\n\t\t],\n\t};\n\n\tit(\"is not a function.\", function (done) {\n\t\texpect(PropertyFactory).to.not.be.a(\"function\");\n\t\texpect(PropertyFactory).to.be.an(\"object\");\n\t\tdone();\n\t});\n\n\tit(\"should validate a simple file\", function () {\n\t\tvar testFile1 = require(\"./validation/goodPointId\");\n\t\tvar result = PropertyFactory.validate(testFile1);\n\t\texpect(result.isValid).to.equal(true);\n\t});\n\n\tit(\"should fail an invalid file\", function () {\n\t\tvar testFile1 = require(\"./validation/badPrimitiveTypeid\");\n\t\tvar result = PropertyFactory.validate(testFile1);\n\t\texpect(result.isValid).to.equal(false);\n\t\texpect(result.errors.length).to.be.greaterThan(0);\n\t\texpect(result.unresolvedTypes.length).to.equal(1);\n\t});\n\n\tit(\"should create and initialize a property set\", function () {\n\t\tPropertyFactory.register(SimplePoint);\n\t\tvar goodPointTest = PropertyFactory.create(\"SimpleTest:PointID-1.0.0\");\n\t\texpect(goodPointTest.resolvePath(\"normal\")._dataArrayRef._buffer.length).to.equal(3);\n\n\t\tvar goodPoint = PropertyFactory.create(\"SimpleTest:PointID-1.0.0\", null, {\n\t\t\tposition: {\n\t\t\t\tx: 0.0,\n\t\t\t\ty: 1.0,\n\t\t\t\tz: 2.0,\n\t\t\t},\n\t\t\tnormal: [1.23, 2.3399999141693115, 3.45],\n\t\t});\n\n\t\texpect(goodPoint.resolvePath(\"normal\").get(1)).to.equal(2.3399999141693115);\n\t});\n\n\tit(\"should throw on unknown Template\", function () {\n\t\tvar insertUnknownPropertyChangeSet = {\n\t\t\tinsert: {\n\t\t\t\tUnknownProperty: {\n\t\t\t\t\ttest: {\n\t\t\t\t\t\tString: {\n\t\t\t\t\t\t\tunknownStringProperty: \"Hi There!\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t\tvar root = PropertyFactory.create(\"NodeProperty\");\n\t\texpect(function () {\n\t\t\troot.deserialize(insertUnknownPropertyChangeSet);\n\t\t}).to.throw();\n\t});\n\n\tit(\"should throw when trying to create with undefined as typeid\", function () {\n\t\tvar creationFunction = function () {\n\t\t\tPropertyFactory.create(undefined);\n\t\t};\n\t\texpect(creationFunction).to.throw(MSG.UNKNOWN_TYPEID_SPECIFIED + \"undefined\");\n\t});\n\n\tit(\"should throw when trying to create with a number as typeid\", function () {\n\t\tvar creationFunction = function () {\n\t\t\tPropertyFactory.create(1);\n\t\t};\n\t\texpect(creationFunction).to.throw(MSG.UNKNOWN_TYPEID_SPECIFIED + \"1\");\n\t});\n\n\tit(\"should support the creation of a polymorphic collection\", function () {\n\t\tvar testSet = {\n\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\tinherits: \"NamedProperty\",\n\t\t};\n\t\tPropertyFactory.register(testSet);\n\n\t\tvar testTemplate = {\n\t\t\ttypeid: \"autodesk.examples:polymorphic.collection.test-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{ id: \"testMap\", context: \"map\" },\n\t\t\t\t{ id: \"testSet\", typeid: \"autodesk.examples:test.set-1.0.0\", context: \"set\" },\n\t\t\t\t// TODO: add array as soon as polymorphic arrays are supported: {id: 'testArray', context:'array' }\n\t\t\t],\n\t\t};\n\n\t\tPropertyFactory._reregister(testTemplate);\n\t\tvar instance = PropertyFactory.create(\n\t\t\t\"autodesk.examples:polymorphic.collection.test-1.0.0\",\n\t\t);\n\n\t\texpect(instance._properties.testMap).to.exist;\n\t\texpect(instance._properties.testMap.getContext()).to.equal(\"map\");\n\t\texpect(instance._properties.testMap.getTypeid()).to.equal(\"BaseProperty\");\n\n\t\texpect(instance._properties.testSet).to.exist;\n\t\texpect(instance._properties.testSet.getContext()).to.equal(\"set\");\n\t\texpect(\n\t\t\tPropertyFactory.inheritsFrom(instance._properties.testSet.getTypeid(), \"NamedProperty\"),\n\t\t).to.equal(true);\n\t});\n\n\tit(\"should return correct template based on typeid\", function () {\n\t\tPropertyFactory.register(SimplePoint);\n\t\tvar returnedTemplate = JSON.parse(\n\t\t\tJSON.stringify(PropertyFactory.getTemplate(SimplePoint.typeid)),\n\t\t);\n\t\tif (!SimplePoint.annotation) {\n\t\t\tdelete returnedTemplate.annotation;\n\t\t}\n\t\tif (!SimplePoint.length) {\n\t\t\tdelete returnedTemplate.length;\n\t\t}\n\t\tdelete returnedTemplate._serializedParams;\n\n\t\texpect(returnedTemplate).to.deep.equal(SimplePoint);\n\t\texpect(PropertyFactory.getTemplate(\"Adsk.Library:Colors.ColorPalette-1.0.0\")).to.be\n\t\t\t.undefined;\n\t});\n\n\tdescribe(\"Inheritance\", function () {\n\t\tbeforeEach(function () {\n\t\t\tPropertyFactory._clear();\n\n\t\t\tvar Shape = {\n\t\t\t\ttypeid: \"SimpleTest:Shape-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"props\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"x\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t{ id: \"y\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"size\",\n\t\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t\t{ id: \"width\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t\t\t{ id: \"height\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"border\",\n\t\t\t\t\t\t\t\t\t\tproperties: [{ id: \"weight\", typeid: \"Int32\" }],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tPropertyFactory.register(Shape);\n\n\t\t\tvar Color = {\n\t\t\t\ttypeid: \"SimpleTest:Color-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"stroke\", typeid: \"String\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"fill\",\n\t\t\t\t\t\tproperties: [{ id: \"rgb\", typeid: \"String\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tPropertyFactory.register(Color);\n\n\t\t\tvar EntryWithOverriddenDefaults = {\n\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\", value: \"entry_string\" }],\n\t\t\t};\n\t\t\tPropertyFactory.register(EntryWithOverriddenDefaults);\n\n\t\t\tvar EntryWithOverriddenPolyDefaults = {\n\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:EntryWithOverriddenDefaults-1.0.0\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\", value: \"entry_string\" }],\n\t\t\t};\n\t\t\tPropertyFactory.register(EntryWithOverriddenPolyDefaults);\n\n\t\t\tvar DynamicWithOverriddenDefaults = {\n\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenDefaults-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"dynamic\",\n\t\t\t\t\t\tproperties: [{ id: \"dynamic_string\", typeid: \"String\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tPropertyFactory.register(DynamicWithOverriddenDefaults);\n\t\t});\n\n\t\tit(\"should allow the creation of an inherited type\", function () {\n\t\t\tvar Square = {\n\t\t\t\ttypeid: \"SimpleTest:Square-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\"],\n\t\t\t\tproperties: [{ id: \"area\", typeid: \"Float32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(Square);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:Square-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(2);\n\t\t\texpect(square.get(\"props\")).to.exist;\n\t\t\texpect(square.get(\"area\")).to.exist;\n\t\t});\n\n\t\tit(\"should inherit constants\", function () {\n\t\t\tvar ShapeWithConstant = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeWithConstant-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\"],\n\t\t\t\tconstants: [{ id: \"originX\", typeid: \"Int8\", value: 10 }],\n\t\t\t};\n\n\t\t\tvar SquareWithConstant = {\n\t\t\t\ttypeid: \"SimpleTest:SquareWithConstant-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:ShapeWithConstant-1.0.0\"],\n\t\t\t\tconstants: [{ id: \"originY\", typeid: \"Int8\", value: 20 }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ShapeWithConstant);\n\t\t\tPropertyFactory.register(SquareWithConstant);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:ShapeWithConstant-1.0.0\");\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:SquareWithConstant-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(3);\n\t\t\texpect(square.get(\"props\")).to.exist;\n\t\t\texpect(square.get(\"originX\")).to.exist;\n\t\t\texpect(square.get(\"originY\")).to.exist;\n\n\t\t\texpect(square.get(\"originX\").getValue()).to.equal(10);\n\t\t\texpect(square.get(\"originY\").getValue()).to.equal(20);\n\t\t});\n\n\t\tit(\"Will complete constants definition from inherited template\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const2\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: [\"hello\"],\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\tannotation: { description: \"The second constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest:template-2.0.0\",\n\t\t\t\tinherits: \"consttest:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const2\",\n\t\t\t\t\t\tvalue: [\"hello2\"],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(testedTemplate);\n\t\t\tPropertyFactory.register(template1);\n\n\t\t\tvar tested = PropertyFactory.create(\"consttest:template-2.0.0\");\n\t\t\texpect(tested._getChildrenCount()).to.equal(2);\n\t\t\texpect(tested.get(\"const1\")).to.exist;\n\t\t\texpect(tested.get(\"const2\")).to.exist;\n\t\t\texpect(tested.get(\"const1\").getValue()).to.equal(\"hello2\");\n\t\t\texpect(tested.get(\"const2\").getValues()).to.deep.equal([\"hello2\"]);\n\t\t});\n\n\t\tit(\"Will throw because typeid is still missing at creation\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest2:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const2\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest2:template-2.0.0\",\n\t\t\t\tinherits: \"consttest2:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(template1);\n\t\t\tPropertyFactory.register(testedTemplate);\n\n\t\t\ttry {\n\t\t\t\tPropertyFactory.create(\"consttest2:template-2.0.0\");\n\t\t\t} catch (error) {\n\t\t\t\texpect(error.message).to.include(\n\t\t\t\t\t'PF-043: Field \"typeid\" is required.' +\n\t\t\t\t\t\t' It is the \"typeid\" of the resulting PropertySets Template.const1.typeid',\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tit(\"Will throw because of a type mismatch when creating template\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest3:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar template2 = {\n\t\t\t\ttypeid: \"consttest3:template-2.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"Uint8\",\n\t\t\t\t\t\tvalue: 3,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest3:template-3.0.0\",\n\t\t\t\tinherits: [\"consttest3:template-2.0.0\", \"consttest3:template-1.0.0\"],\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(template2);\n\t\t\tPropertyFactory.register(template1);\n\t\t\tPropertyFactory.register(testedTemplate);\n\n\t\t\ttry {\n\t\t\t\tPropertyFactory.create(\"consttest3:template-3.0.0\");\n\t\t\t} catch (error) {\n\t\t\t\texpect(error.message).to.include(\"PF-001: Id already exists: const1\");\n\t\t\t}\n\t\t});\n\n\t\tit(\"Will fail if inheriting constants with the same id from multiple templates\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest4:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const2\",\n\t\t\t\t\t\ttypeid: \"Uint8\",\n\t\t\t\t\t\tvalue: 5,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar template2 = {\n\t\t\t\ttypeid: \"consttest4:template-2.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"bye\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest4:template-3.0.0\",\n\t\t\t\tinherits: [\"consttest4:template-1.0.0\", \"consttest4:template-2.0.0\"],\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const2\",\n\t\t\t\t\t\tvalue: 14,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(testedTemplate);\n\t\t\tPropertyFactory.register(template1);\n\t\t\tPropertyFactory.register(template2);\n\n\t\t\texpect(\n\t\t\t\tPropertyFactory.create.bind(PropertyFactory, \"consttest4:template-3.0.0\"),\n\t\t\t).to.throw(MSG.OVERWRITING_ID + \"const1\");\n\t\t});\n\n\t\tit(\"Will allow to register the same inherited template again\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest5:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest5:template-2.0.0\",\n\t\t\t\tinherits: \"consttest5:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(template1);\n\t\t\tPropertyFactory.register(testedTemplate);\n\t\t\tPropertyFactory.register(testedTemplate);\n\t\t});\n\n\t\tit(\"Will not allow to register a different template under the same id\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest6:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest6:template-2.0.0\",\n\t\t\t\tinherits: \"consttest6:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate2 = {\n\t\t\t\ttypeid: \"consttest6:template-2.0.0\",\n\t\t\t\tinherits: \"consttest6:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello3\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\ttry {\n\t\t\t\tPropertyFactory.register(template1);\n\t\t\t\tPropertyFactory.register(testedTemplate);\n\t\t\t\tPropertyFactory.register(testedTemplate2);\n\t\t\t\tthrow new Error(\"Should have failed\");\n\t\t\t} catch (error) {\n\t\t\t\texpect(error.message).to.include(\n\t\t\t\t\t\"PF-004: Template structures do not match for typeid: consttest6:template-2.0.0\",\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tit(\"Wont register if constant id is missing\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest7:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest7:template-2.0.0\",\n\t\t\t\tinherits: \"consttest7:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\ttry {\n\t\t\t\tPropertyFactory.register(template1);\n\t\t\t\tPropertyFactory.register(testedTemplate);\n\t\t\t\tthrow new Error(\"Should have failed\");\n\t\t\t} catch (error) {\n\t\t\t\texpect(error.message).to.include(\n\t\t\t\t\t\"PF-050: Failed to register typeid = consttest7:template-2.0.0\",\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tit(\"should allow inheriting from schemas with no properties defined\", function () {\n\t\t\tvar ShapeAbstract1 = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeAbstract1-1.0.0\",\n\t\t\t};\n\n\t\t\tvar ShapeAbstract2 = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeAbstract2-1.0.0\",\n\t\t\t\tproperties: [{ id: \"area\", properties: [] }, { id: \"color\" }],\n\t\t\t};\n\n\t\t\tvar SquareAbstract = {\n\t\t\t\ttypeid: \"SimpleTest:SquareAbstract-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:ShapeAbstract1-1.0.0\", \"SimpleTest:ShapeAbstract2-1.0.0\"],\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"originX\", properties: [] },\n\t\t\t\t\t{ id: \"originY\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"color\",\n\t\t\t\t\t\tproperties: [{ id: \"rgb\", typeid: \"Int64\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ShapeAbstract1);\n\t\t\tPropertyFactory.register(ShapeAbstract2);\n\t\t\tPropertyFactory.register(SquareAbstract);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:SquareAbstract-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(4);\n\t\t\texpect(square.get(\"area\")).to.exist;\n\t\t\texpect(square.get(\"color\")).to.exist;\n\t\t\texpect(square.get(\"originX\")).to.exist;\n\t\t\texpect(square.get(\"originY\")).to.exist;\n\t\t\texpect(square.get([\"color\", \"rgb\"])).to.exist;\n\t\t});\n\n\t\tit(\"should allow multiple inheritance\", function () {\n\t\t\tvar SquareWithColor = {\n\t\t\t\ttypeid: \"SimpleTest:SquareWithColor-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\", \"SimpleTest:Color-1.0.0\"],\n\t\t\t\tproperties: [{ id: \"area\", typeid: \"Float32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(SquareWithColor);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:SquareWithColor-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(4);\n\t\t\texpect(square.get(\"area\")).to.exist;\n\t\t\texpect(square.get(\"props\")).to.exist;\n\t\t\texpect(square.get(\"stroke\")).to.exist;\n\t\t\texpect(square.get(\"fill\")).to.exist;\n\t\t});\n\n\t\tit(\"should fail when inheriting from multiple types that have the same property name\", function () {\n\t\t\tvar Point = {\n\t\t\t\ttypeid: \"SimpleTest:Point-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"props\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"x\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t{ id: \"y\", typeid: \"Float32\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ShapeWithInheritanceError = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeWithInheritanceError-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\", \"SimpleTest:Point-1.0.0\"],\n\t\t\t\tproperties: [{ id: \"weight\", typeid: \"Float32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(Point);\n\t\t\tPropertyFactory.register(ShapeWithInheritanceError);\n\n\t\t\texpect(\n\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\"SimpleTest:ShapeWithInheritanceError-1.0.0\",\n\t\t\t\t),\n\t\t\t).to.throw(MSG.OVERWRITING_ID + \"props\");\n\t\t});\n\n\t\tit(\"should fail when overriding an inherited typed property\", function () {\n\t\t\tvar ShapeWithOverridesError = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeWithOverridesError-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\"],\n\t\t\t\tproperties: [{ id: \"props\", typeid: \"Float32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ShapeWithOverridesError);\n\n\t\t\texpect(\n\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\"SimpleTest:ShapeWithOverridesError-1.0.0\",\n\t\t\t\t),\n\t\t\t).to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n\t\t});\n\n\t\tit(\"should allow extending inherited nested untyped properties\", function () {\n\t\t\tvar SquareWithOverrides = {\n\t\t\t\ttypeid: \"SimpleTest:SquareWithOverrides-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\", \"SimpleTest:Color-1.0.0\"],\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"normal\", typeid: \"Float32\", context: \"array\", size: 3 },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"props\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"z\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"size\",\n\t\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t\t{ id: \"unit\", typeid: \"Int32\" },\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"border\",\n\t\t\t\t\t\t\t\t\t\tproperties: [{ id: \"color\", typeid: \"String\" }],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"fill\",\n\t\t\t\t\t\tproperties: [{ id: \"unit\", typeid: \"Int32\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(SquareWithOverrides);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:SquareWithOverrides-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(4);\n\t\t\texpect(square.get(\"normal\")).to.exist;\n\t\t\texpect(square.get(\"props\")).to.exist;\n\t\t\texpect(square.get(\"stroke\")).to.exist;\n\t\t\texpect(square.get(\"fill\")).to.exist;\n\n\t\t\texpect(square.get(\"props\")._getChildrenCount()).to.equal(4);\n\t\t\texpect(square.get([\"props\", \"x\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"y\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"z\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\"])).to.exist;\n\n\t\t\texpect(square.get([\"props\", \"size\"])._getChildrenCount()).to.equal(4);\n\t\t\texpect(square.get([\"props\", \"size\", \"unit\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\", \"border\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\", \"width\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\", \"height\"])).to.exist;\n\n\t\t\texpect(square.get([\"props\", \"size\", \"border\"])._getChildrenCount()).to.equal(2);\n\t\t\texpect(square.get([\"props\", \"size\", \"border\", \"color\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\", \"border\", \"weight\"])).to.exist;\n\n\t\t\texpect(square.get(\"fill\")._getChildrenCount()).to.equal(2);\n\t\t\texpect(square.get([\"fill\", \"rgb\"])).to.exist;\n\t\t\texpect(square.get([\"fill\", \"unit\"])).to.exist;\n\t\t});\n\n\t\tit(\"should support more than one level of inheritance\", function () {\n\t\t\tvar ShapeWithArea = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeWithArea-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\"],\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"props\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"area\",\n\t\t\t\t\t\t\t\tproperties: [{ id: \"length\", typeid: \"Float32\" }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar SquareWithArea = {\n\t\t\t\ttypeid: \"SimpleTest:SquareWithArea-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:ShapeWithArea-1.0.0\"],\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"normal\", typeid: \"String\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"props\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"color\", typeid: \"String\" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"area\",\n\t\t\t\t\t\t\t\tproperties: [{ id: \"unit\", typeid: \"String\" }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ShapeWithArea);\n\t\t\tPropertyFactory.register(SquareWithArea);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:SquareWithArea-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(2);\n\t\t\texpect(square.get(\"normal\")).to.exist;\n\t\t\texpect(square.get(\"props\")).to.exist;\n\n\t\t\texpect(square.get(\"props\")._getChildrenCount()).to.equal(5);\n\t\t\texpect(square.get([\"props\", \"x\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"y\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"color\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"area\"])).to.exist;\n\n\t\t\texpect(square.get([\"props\", \"area\"])._getChildrenCount()).to.equal(2);\n\t\t\texpect(square.get([\"props\", \"area\", \"unit\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"area\", \"length\"])).to.exist;\n\t\t});\n\n\t\tit('should work with properties named \"length\"', function () {\n\t\t\tvar DefaultInitialValue = {\n\t\t\t\ttypeid: \"autodesk.product:components.physicalProperties-0.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"mass\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"value\",\n\t\t\t\t\t\t\t\ttypeid: \"Float64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"unit\",\n\t\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"boundingBox\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"length\",\n\t\t\t\t\t\t\t\ttypeid: \"Float64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"width\",\n\t\t\t\t\t\t\t\ttypeid: \"Float64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"height\",\n\t\t\t\t\t\t\t\ttypeid: \"Float64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"unit\",\n\t\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"material\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tannotation: {\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Specialized component storing physical properties computed from a model.\",\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultInitialValue);\n\n\t\t\tvar prop = PropertyFactory.create(\n\t\t\t\t\"autodesk.product:components.physicalProperties-0.0.0\",\n\t\t\t\tnull,\n\t\t\t\t{\n\t\t\t\t\tmass: {\n\t\t\t\t\t\tvalue: 1.2,\n\t\t\t\t\t\tunit: \"units\",\n\t\t\t\t\t},\n\t\t\t\t\tboundingBox: {\n\t\t\t\t\t\tlength: 1.2,\n\t\t\t\t\t\twidth: 1.4,\n\t\t\t\t\t\theight: 34.2,\n\t\t\t\t\t\tunit: \"units\",\n\t\t\t\t\t},\n\t\t\t\t\tmaterial: \"ABS Plastic\",\n\t\t\t\t},\n\t\t\t);\n\n\t\t\texpect(prop.get(\"boundingBox\").get(\"length\").value).to.equal(1.2);\n\t\t});\n\n\t\tdescribe(\"Overriding default values\", function () {\n\t\t\tit(\"should allow overriding default values\", function () {\n\t\t\t\tvar MapNestedWithOverriddenDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nested\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar SetNestedWithOverriddenDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nested\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar ShapeWithOverriddenDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{ id: \"num\", typeid: \"Int8\", value: 1 },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\tvalue: [\"array_string_1\", \"array_string_2\"],\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\tvalue: [{ string: \"entry_string_poly\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"enum\",\n\t\t\t\t\t\t\ttypeid: \"Enum\",\n\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t{ id: \"solid\", value: 1 },\n\t\t\t\t\t\t\t\t{ id: \"dashed\", value: 2 },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvalue: \"solid\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"untyped\",\n\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\" },\n\t\t\t\t\t\t\t\t{ id: \"string\", typeid: \"String\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvalue: { string: \"untyped_string\", num: 1 },\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tnum: 1,\n\t\t\t\t\t\t\t\tdynamic: { dynamic_string: \"dynamic_string\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_primitive\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: 1,\n\t\t\t\t\t\t\t\tkey3: 3,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: { string: \"map_string_1\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_string_3\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: { string: \"map_poly_string_1\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_poly_string_3\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey1_1: { string: \"map_nested_1_string_1\" },\n\t\t\t\t\t\t\t\t\t\tkey1_3: { string: \"map_nested_1_string_3\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey3_1: { string: \"map_nested_3_string_1\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [{ string: \"set_string_1\" }, { string: \"set_string_2\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [{ string: \"set_poly_string_1\" }, { string: \"set_poly_string_1\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_1_string_1\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_1_string_2\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_3_string_1\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_3_string_2\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithOverriddenDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithOverriddenDefaults-1.0.0\"],\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{ id: \"num\", typeid: \"Int8\", value: 2 },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\tvalue: [\"array_string_1_inherited\", \"array_string_2_inherited\"],\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_poly_1_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_poly_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"enum\",\n\t\t\t\t\t\t\ttypeid: \"Enum\",\n\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t{ id: \"solid\", value: 1 },\n\t\t\t\t\t\t\t\t{ id: \"dashed\", value: 2 },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvalue: \"dashed\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"untyped\",\n\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\" },\n\t\t\t\t\t\t\t\t{ id: \"string\", typeid: \"String\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvalue: { string: \"untyped_string_inherited\", num: 2 },\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tnum: 2,\n\t\t\t\t\t\t\t\tdynamic: { dynamic_string: \"dynamic_string_inherited\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_primitive\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: 2,\n\t\t\t\t\t\t\t\tkey3: 3,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: { string: \"map_string_2_inherited\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_string_3_inherited\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"map_poly_string_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"map_poly_string_3_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey2_2: { string: \"map_nested_2_string_2_inherited\" },\n\t\t\t\t\t\t\t\t\t\tkey2_3: { string: \"map_nested_2_string_3_inherited\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey3_1: { string: \"map_nested_3_string_1_inherited\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{ string: \"set_string_2_inherited\" },\n\t\t\t\t\t\t\t\t{ string: \"set_string_3_inherited\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"set_poly_string_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"set_poly_string_3_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_2_string_1_inherited\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_2_string_2_inherited\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(MapNestedWithOverriddenDefaults);\n\t\t\t\tPropertyFactory.register(SetNestedWithOverriddenDefaults);\n\t\t\t\tPropertyFactory.register(ShapeWithOverriddenDefaults);\n\t\t\t\tPropertyFactory.register(SquareWithOverriddenDefaults);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:SquareWithOverriddenDefaults-1.0.0\");\n\n\t\t\t\texpect(instance._getChildrenCount()).to.equal(13);\n\t\t\t\texpect(instance.resolvePath(\"num\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()).and.eql([\n\t\t\t\t\t\"array_string_1_inherited\",\n\t\t\t\t\t\"array_string_2_inherited\",\n\t\t\t\t]);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues().length).to.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues()[0].string).to.eql(\n\t\t\t\t\t\"entry_string_poly_1_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues()[1].string).to.eql(\n\t\t\t\t\t\"entry_string_poly_2_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"enum\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"untyped.num\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"untyped.string\").getValue()).and.eql(\n\t\t\t\t\t\"untyped_string_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"template.num\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"template.dynamic.dynamic_string\").getValue()).and.eql(\n\t\t\t\t\t\"dynamic_string_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getIds().length).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getEntriesReadOnly().key2).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getEntriesReadOnly().key3).to.equal(3);\n\t\t\t\texpect(instance.resolvePath(\"map\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key2.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key3.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"map_poly\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map_poly\").getEntriesReadOnly().key2.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_poly_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map_poly\").getEntriesReadOnly().key3.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_poly_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"map_nest\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map_nest\").getEntriesReadOnly().key2.get(\"map_nested\").getIds()\n\t\t\t\t\t\t.length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray().length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_2_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[1]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_2_string_3_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map_nest\").getEntriesReadOnly().key3.get(\"map_nested\").getIds()\n\t\t\t\t\t\t.length,\n\t\t\t\t).to.equal(1);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key3.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_3_string_1_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set\").getIds().length).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[0].get(\"string\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_2_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[1].get(\"string\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_3_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"set_poly\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_poly\").getAsArray()[0].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_poly_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_poly\").getAsArray()[1].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_poly_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set_nest\").getIds().length).to.equal(1);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_nest\").getAsArray()[0].get(\"set_nested\").getIds().length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"set_nest\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"set_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"set_nested_2_string_1_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"set_nest\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"set_nested\")\n\t\t\t\t\t\t.getAsArray()[1]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"set_nested_2_string_2_inherited\");\n\t\t\t});\n\n\t\t\tit(\"should not allow overriding default values when typeid is different\", function () {\n\t\t\t\tvar ShapeWithDiffTypeidDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithDiffTypeidDefaults-1.0.0\",\n\t\t\t\t\tproperties: [{ id: \"num\", typeid: \"Int8\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithDiffTypeidDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithDiffTypeidDefaults-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithDiffTypeidDefaults-1.0.0\"],\n\t\t\t\t\tproperties: [{ id: \"num\", typeid: \"Int32\", value: 2 }],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ShapeWithDiffTypeidDefaults);\n\t\t\t\tPropertyFactory.register(SquareWithDiffTypeidDefaults);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:SquareWithDiffTypeidDefaults-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n\t\t\t});\n\n\t\t\tit(\"should not allow overriding default values when context is different\", function () {\n\t\t\t\tvar ShapeWithDiffContextDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithDiffContextDefaults-1.0.0\",\n\t\t\t\t\tproperties: [{ id: \"num\", typeid: \"Int8\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithDiffContextDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithDiffContextDefaults-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithDiffContextDefaults-1.0.0\"],\n\t\t\t\t\tproperties: [{ id: \"num\", typeid: \"Int8\", value: [1, 2], context: \"array\" }],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ShapeWithDiffContextDefaults);\n\t\t\t\tPropertyFactory.register(SquareWithDiffContextDefaults);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:SquareWithDiffContextDefaults-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"Overriding constants\", function () {\n\t\t\tit(\"should allow overriding constants\", function () {\n\t\t\t\tvar EntryWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tconstants: [{ id: \"string\", typeid: \"String\", value: \"entry_string\" }],\n\t\t\t\t};\n\n\t\t\t\tvar EntryWithOverriddenPolyConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:EntryWithOverriddenConstants-1.0.0\"],\n\t\t\t\t\tconstants: [{ id: \"string\", typeid: \"String\", value: \"entry_string\" }],\n\t\t\t\t};\n\n\t\t\t\tvar DynamicWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Uint32\", value: 1 }],\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"dynamic\",\n\t\t\t\t\t\t\tproperties: [{ id: \"dynamic_string\", typeid: \"String\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar MapNestedWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nested\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar SetNestedWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nested\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar ShapeWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{ id: \"num\", typeid: \"Int8\", value: 1 },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\tvalue: [\"array_string_1\", \"array_string_2\"],\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\tvalue: [{ string: \"entry_string_poly\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tnum: 1,\n\t\t\t\t\t\t\t\tdynamic: { dynamic_string: \"dynamic_string\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_primitive\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: 1,\n\t\t\t\t\t\t\t\tkey3: 3,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: { string: \"map_string_1\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_string_3\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: { string: \"map_poly_string_1\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_poly_string_3\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey1_1: { string: \"map_nested_1_string_1\" },\n\t\t\t\t\t\t\t\t\t\tkey1_3: { string: \"map_nested_1_string_3\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey3_1: { string: \"map_nested_3_string_1\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [{ string: \"set_string_1\" }, { string: \"set_string_2\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [{ string: \"set_poly_string_1\" }, { string: \"set_poly_string_1\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_1_string_1\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_1_string_2\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_3_string_1\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_3_string_2\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithOverriddenConstants-1.0.0\"],\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{ id: \"num\", typeid: \"Int8\", value: 2 },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\tvalue: [\"array_string_1_inherited\", \"array_string_2_inherited\"],\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_poly_1_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_poly_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tnum: 2,\n\t\t\t\t\t\t\t\tdynamic: { dynamic_string: \"dynamic_string_inherited\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_primitive\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: 2,\n\t\t\t\t\t\t\t\tkey3: 3,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: { string: \"map_string_2_inherited\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_string_3_inherited\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"map_poly_string_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"map_poly_string_3_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey2_2: { string: \"map_nested_2_string_2_inherited\" },\n\t\t\t\t\t\t\t\t\t\tkey2_3: { string: \"map_nested_2_string_3_inherited\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey3_1: { string: \"map_nested_3_string_1_inherited\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{ string: \"set_string_2_inherited\" },\n\t\t\t\t\t\t\t\t{ string: \"set_string_3_inherited\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"set_poly_string_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"set_poly_string_3_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_2_string_1_inherited\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_2_string_2_inherited\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(EntryWithOverriddenConstants);\n\t\t\t\tPropertyFactory.register(EntryWithOverriddenPolyConstants);\n\t\t\t\tPropertyFactory.register(DynamicWithOverriddenConstants);\n\t\t\t\tPropertyFactory.register(MapNestedWithOverriddenConstants);\n\t\t\t\tPropertyFactory.register(SetNestedWithOverriddenConstants);\n\t\t\t\tPropertyFactory.register(ShapeWithOverriddenConstants);\n\t\t\t\tPropertyFactory.register(SquareWithOverriddenConstants);\n\n\t\t\t\tvar instance = PropertyFactory.create(\n\t\t\t\t\t\"SimpleTest:SquareWithOverriddenConstants-1.0.0\",\n\t\t\t\t);\n\n\t\t\t\texpect(instance._getChildrenCount()).to.equal(11);\n\t\t\t\texpect(instance.resolvePath(\"num\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()).and.eql([\n\t\t\t\t\t\"array_string_1_inherited\",\n\t\t\t\t\t\"array_string_2_inherited\",\n\t\t\t\t]);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues().length).to.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues()[0].string).to.eql(\n\t\t\t\t\t\"entry_string_poly_1_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues()[1].string).to.eql(\n\t\t\t\t\t\"entry_string_poly_2_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"template.num\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"template.dynamic.dynamic_string\").getValue()).and.eql(\n\t\t\t\t\t\"dynamic_string_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getIds().length).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getEntriesReadOnly().key2).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getEntriesReadOnly().key3).to.equal(3);\n\t\t\t\texpect(instance.resolvePath(\"map\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key2.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key3.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"map_poly\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map_poly\").getEntriesReadOnly().key2.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_poly_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map_poly\").getEntriesReadOnly().key3.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_poly_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"map_nest\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map_nest\").getEntriesReadOnly().key2.get(\"map_nested\").getIds()\n\t\t\t\t\t\t.length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray().length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_2_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[1]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_2_string_3_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map_nest\").getEntriesReadOnly().key3.get(\"map_nested\").getIds()\n\t\t\t\t\t\t.length,\n\t\t\t\t).to.equal(1);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key3.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_3_string_1_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set\").getIds().length).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[0].get(\"string\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_2_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[1].get(\"string\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_3_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"set_poly\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_poly\").getAsArray()[0].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_poly_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_poly\").getAsArray()[1].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_poly_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set_nest\").getIds().length).to.equal(1);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_nest\").getAsArray()[0].get(\"set_nested\").getIds().length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"set_nest\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"set_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"set_nested_2_string_1_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"set_nest\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"set_nested\")\n\t\t\t\t\t\t.getAsArray()[1]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"set_nested_2_string_2_inherited\");\n\t\t\t});\n\n\t\t\tit(\"should allow overriding constants with typed values\", function () {\n\t\t\t\tvar EntryWithTypedOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tconstants: [{ id: \"string\", typeid: \"String\", value: \"entry_string\" }],\n\t\t\t\t};\n\n\t\t\t\tvar EntryWithTypedOverriddenPolyConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\"],\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{ id: \"string\", typeid: \"String\", value: \"entry_string\" },\n\t\t\t\t\t\t{ id: \"name\", typeid: \"String\", value: \"entry2\" },\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar ShapeWithTypedOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"entry1\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"entry2\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\tvalue: [{ string: \"entry_string\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: { string: \"map_string_1\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_string_3\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [{ string: \"set_string_1\" }, { string: \"set_string_1\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithTypedOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithTypedOverriddenConstants-1.0.0\"],\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"entry1\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_1\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"entry2\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_2\", name: \"entry2\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"entry_string_1_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"entry_string_1\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"entry_string_2_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"entry_string_2\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"map_string_2_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"map_string_2\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"map_string_3_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"map_string_3\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"set_string_2_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"set_string_2\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"set_string_3_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"set_string_3\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(EntryWithTypedOverriddenConstants);\n\t\t\t\tPropertyFactory.register(EntryWithTypedOverriddenPolyConstants);\n\t\t\t\tPropertyFactory.register(ShapeWithTypedOverriddenConstants);\n\t\t\t\tPropertyFactory.register(SquareWithTypedOverriddenConstants);\n\n\t\t\t\tvar instance = PropertyFactory.create(\n\t\t\t\t\t\"SimpleTest:SquareWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t);\n\n\t\t\t\texpect(instance._getChildrenCount()).to.equal(5);\n\t\t\t\texpect(instance.resolvePath(\"entry1\").getTypeid()).to.eql(\n\t\t\t\t\t\"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"entry1.string\").getValue()).to.eql(\"entry_string_1\");\n\t\t\t\texpect(instance.resolvePath(\"entry2\").getTypeid()).to.eql(\n\t\t\t\t\t\"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"entry2.name\").getValue()).to.eql(\"entry2\");\n\t\t\t\texpect(instance.resolvePath(\"entry2.string\").getValue()).to.eql(\"entry_string_2\");\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues().length).to.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()[0].name).to.eql(\"entry_string_1\");\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()[0].string).to.eql(\n\t\t\t\t\t\"entry_string_1_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()[1].name).to.eql(\"entry_string_2\");\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()[1].string).to.eql(\n\t\t\t\t\t\"entry_string_2_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"map\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key2.get(\"name\").getValue(),\n\t\t\t\t).to.equal(\"map_string_2\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key2.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key3.get(\"name\").getValue(),\n\t\t\t\t).to.equal(\"map_string_3\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key3.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set\").getIds().length).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[0].get(\"name\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_2\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[0].get(\"string\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_2_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[1].get(\"name\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_3\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[1].get(\"string\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_3_inherited\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should not allow overriding constants when typeid is different\", function () {\n\t\t\t\tvar ShapeWithDiffTypeidConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int8\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithDiffTypeidConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithDiffTypeidConstants-1.0.0\"],\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int32\", value: 2 }],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ShapeWithDiffTypeidConstants);\n\t\t\t\tPropertyFactory.register(SquareWithDiffTypeidConstants);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:SquareWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n\t\t\t});\n\n\t\t\tit(\"should not allow overriding constants when context is different\", function () {\n\t\t\t\tvar ShapeWithDiffContextConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithDiffContextConstants-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int8\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithDiffContextConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithDiffContextConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithDiffContextConstants-1.0.0\"],\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int8\", value: [1, 2], context: \"array\" }],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ShapeWithDiffContextConstants);\n\t\t\t\tPropertyFactory.register(SquareWithDiffContextConstants);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:SquareWithDiffContextConstants-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n\t\t\t});\n\n\t\t\tit(\"should not allow overriding constants with a typedValue that does not inherit from base type\", function () {\n\t\t\t\tvar Type1 = {\n\t\t\t\t\ttypeid: \"SimpleTest:Type1-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int32\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar Type2 = {\n\t\t\t\t\ttypeid: \"SimpleTest:Type2-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int32\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar ShapeWithDiffTypedTypeidConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"type\", typeid: \"SimpleTest:Type1-1.0.0\" }],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithDiffTypedTypeidConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithDiffTypeidConstants-1.0.0\"],\n\t\t\t\t\tconstants: [{ id: \"type\", typedValue: { typeid: \"SimpleTest:Type2-1.0.0\" } }],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(Type1);\n\t\t\t\tPropertyFactory.register(Type2);\n\t\t\t\tPropertyFactory.register(ShapeWithDiffTypedTypeidConstants);\n\t\t\t\tPropertyFactory.register(SquareWithDiffTypedTypeidConstants);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:SquareWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(\n\t\t\t\t\tMSG.TYPED_VALUES_MUST_DERIVE_FROM_BASE_TYPE +\n\t\t\t\t\t\t\"SimpleTest:Type2-1.0.0 must be a subclass of SimpleTest:Type1-1.0.0\",\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"Default values\", function () {\n\t\tit(\"should set default values for primitive property\", function () {\n\t\t\tvar DefaultPrimitive = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitive-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 111 },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\", value: true },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultPrimitive);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPrimitive-1.0.0\");\n\t\t\texpect(instance.get(\"num\").getValue()).to.equal(111);\n\t\t\texpect(instance.get(\"bool\").getValue()).to.equal(true);\n\t\t});\n\n\t\tit(\"should set a default value for a string property\", function () {\n\t\t\tvar DefaultString = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultString-1.0.0\",\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\", value: \"I am a string\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultString);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultString-1.0.0\");\n\t\t\texpect(instance.get(\"string\").getValue()).to.equal(\"I am a string\");\n\t\t});\n\n\t\tit(\"should set a default value for a primitive array property\", function () {\n\t\t\tvar DefaultArray = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultArray-1.0.0\",\n\t\t\t\tproperties: [{ id: \"array\", typeid: \"Int32\", value: [111, 222], context: \"array\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultArray);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultArray-1.0.0\");\n\t\t\texpect(instance.get(\"array\").get(0)).to.equal(111);\n\t\t\texpect(instance.get(\"array\").get(1)).to.equal(222);\n\t\t});\n\n\t\tit(\"should set a default value for a typed array property\", function () {\n\t\t\tvar DefaultTypedArrayEntry = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTypedArrayEntry-1.0.0\",\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar DefaultTypedArray = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTypedArray-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultTypedArrayEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\tvalue: [{ string: \"I am string 1\" }, { string: \"I am string 2\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultTypedArrayEntry);\n\t\t\tPropertyFactory.register(DefaultTypedArray);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultTypedArray-1.0.0\");\n\t\t\texpect(instance.get(\"array\").get(0).get(\"string\").value).to.equal(\"I am string 1\");\n\t\t\texpect(instance.get(\"array\").get(1).get(\"string\").value).to.equal(\"I am string 2\");\n\t\t});\n\n\t\tit(\"should set a default value for an enum property\", function () {\n\t\t\tvar DefaultEnum = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultEnum-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"enum\",\n\t\t\t\t\t\ttypeid: \"Enum\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"solid\", value: 111 },\n\t\t\t\t\t\t\t{ id: \"dashed\", value: 222 },\n\t\t\t\t\t\t\t{ id: \"dotted\", value: 333 },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tvalue: \"dashed\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultEnum);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultEnum-1.0.0\");\n\t\t\texpect(instance.get(\"enum\").getValue()).to.equal(222);\n\t\t});\n\n\t\tit(\"should set a default value for an untyped property, parent default value has precedence\", function () {\n\t\t\tvar DefaultUntyped = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultUntyped-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"untyped\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 222 },\n\t\t\t\t\t\t\t{ id: \"string\", typeid: \"String\", value: \"I should not be set\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tvalue: { string: \"I am a string\", num: 111 },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultUntyped);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultUntyped-1.0.0\");\n\n\t\t\texpect(instance.get(\"untyped\").get(\"string\").getValue()).to.equal(\"I am a string\");\n\t\t\texpect(instance.get(\"untyped\").get(\"num\").getValue()).to.equal(111);\n\t\t});\n\n\t\tit(\"should set a default value for a template, parent default value has precedence\", function () {\n\t\t\tvar DefaultTemplateEntry = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTemplateEntry-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: \"222\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"dynamic\",\n\t\t\t\t\t\tproperties: [{ id: \"dynamic_string\", typeid: \"String\" }],\n\t\t\t\t\t\tvalue: { dynamic_string: \"I should not be set\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar DefaultTemplate = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTemplate-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultTemplateEntry-1.0.0\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tnum: 111,\n\t\t\t\t\t\t\tdynamic: { dynamic_string: \"I am a string\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultTemplateEntry);\n\t\t\tPropertyFactory.register(DefaultTemplate);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultTemplate-1.0.0\");\n\n\t\t\texpect(instance.get(\"template\").get(\"num\").getValue()).to.equal(111);\n\t\t\texpect(\n\t\t\t\tinstance.get(\"template\").get(\"dynamic\").get(\"dynamic_string\").getValue(),\n\t\t\t).to.equal(\"I am a string\");\n\t\t});\n\n\t\tit(\"should set a default value for a set\", function () {\n\t\t\tvar DefaultSetEntry = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultSetEntry-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar DefaultSet = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultSet-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultSetEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\tvalue: [{ string: \"I am a string 1\" }, { string: \"I am a string 2\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultSetEntry);\n\t\t\tPropertyFactory.register(DefaultSet);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultSet-1.0.0\");\n\n\t\t\texpect(instance.get(\"set\").getAsArray().length).to.equal(2);\n\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 1\",\n\t\t\t);\n\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 2\",\n\t\t\t);\n\t\t});\n\n\t\tit(\"should set a default value for a primitive map\", function () {\n\t\t\tvar DefaultPrimitiveMap = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitiveMap-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tkey1: 111,\n\t\t\t\t\t\t\tkey2: 222,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultPrimitiveMap);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPrimitiveMap-1.0.0\");\n\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1).to.equal(111);\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2).to.equal(222);\n\t\t});\n\n\t\tit(\"should set a default value for a typed map\", function () {\n\t\t\tvar DefaultTypedMapEntry = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTypedMapEntry-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar DefaultTypedMap = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTypedMap-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultTypedMapEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tkey1: { string: \"I am a string 1\" },\n\t\t\t\t\t\t\tkey2: { string: \"I am a string 2\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultTypedMapEntry);\n\t\t\tPropertyFactory.register(DefaultTypedMap);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultTypedMap-1.0.0\");\n\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1.get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 1\",\n\t\t\t);\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2.get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 2\",\n\t\t\t);\n\t\t});\n\n\t\tit(\"initial values should override default values\", function () {\n\t\t\tvar DefaultInitialValue = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultInitialValue-1.0.0\",\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\", value: \"I should not be set\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultInitialValue);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultInitialValue-1.0.0\", null, {\n\t\t\t\tstring: \"I am a string\",\n\t\t\t});\n\n\t\t\texpect(instance.get(\"string\").getValue()).to.equal(\"I am a string\");\n\t\t});\n\n\t\tdescribe(\"#Polymorphic\", function () {\n\t\t\tvar DefaultPolyBase = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"num\", typeid: \"Uint32\", value: 111 }],\n\t\t\t};\n\n\t\t\tvar DefaultPolySub = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\tinherits: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 222 },\n\t\t\t\t\t{ id: \"str\", typeid: \"String\", value: \"Sub\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar DefaultPolySubSub = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultPolySubSub-1.0.0\",\n\t\t\t\tinherits: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 333 },\n\t\t\t\t\t{ id: \"num2\", typeid: \"Uint32\", value: 111 },\n\t\t\t\t\t{ id: \"str\", typeid: \"String\", value: \"SubSub\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tbeforeEach(function () {\n\t\t\t\tPropertyFactory._clear();\n\t\t\t\tPropertyFactory.register(DefaultPolyBase);\n\t\t\t\tPropertyFactory.register(DefaultPolySub);\n\t\t\t\tPropertyFactory.register(DefaultPolySubSub);\n\t\t\t});\n\n\t\t\tit(\"should set default polymorphic values for non-primitive properties\", function () {\n\t\t\t\tvar DefaultPolyContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 333, str: \"PolySub\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySubSub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 444, str: \"PolySubSub\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPolyContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPolyContainer-1.0.0\");\n\t\t\t\texpect(instance.get(\"polySub\").get(\"num\").getValue()).to.equal(333);\n\t\t\t\texpect(instance.get(\"polySub\").get(\"str\").getValue()).to.equal(\"PolySub\");\n\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"num\").getValue()).to.equal(444);\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"str\").getValue()).to.equal(\"PolySubSub\");\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"num2\").getValue()).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a default typedValue that doesnt have a typeid.\", function () {\n\t\t\t\tvar DefaultPolyNoTypeIdContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyNoTypeIdContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: { value: { num: 333, str: \"PolySub\" } },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPolyNoTypeIdContainer);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPolyNoTypeIdContainer-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(\n\t\t\t\t\tMSG.FIELD_TYPEID_IS_REQUIRED + \"typedValue SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should set a default polymorphic value for a non-primitive array\", function () {\n\t\t\t\tvar DefaultPolyArrayContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyArrayContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{ typeid: \"SimpleTest:DefaultPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPolyArrayContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPolyArrayContainer-1.0.0\");\n\t\t\t\texpect(instance.get(\"array\").get(0).get(\"num\").value).to.equal(222);\n\t\t\t\texpect(instance.get(\"array\").get(0).get(\"str\").value).to.equal(\"Sub\");\n\t\t\t\texpect(instance.get(\"array\").get(1).get(\"num\").value).to.equal(222);\n\t\t\t\texpect(instance.get(\"array\").get(1).get(\"str\").value).to.equal(\"ArrSub\");\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"num\").value).to.equal(333);\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"str\").value).to.equal(\"ArrSubSub\");\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"num2\").value).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should set a default polymorphic value for a non-primitive set\", function () {\n\t\t\t\tvar DefaultPolySetContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySetContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{ typeid: \"SimpleTest:DefaultPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPolySetContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPolySetContainer-1.0.0\");\n\n\t\t\t\texpect(instance.get(\"set\").getAsArray().length).to.equal(3);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"num\").getValue()).to.equal(222);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"str\").getValue()).to.equal(\"Sub\");\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"num\").getValue()).to.equal(222);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"str\").getValue()).to.equal(\"ArrSub\");\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"num\").getValue()).to.equal(333);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"ArrSubSub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"num2\").getValue()).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should set a default polymorphic value for a non-primitive map\", function () {\n\t\t\t\tvar DefaultPolyMapContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyMapContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey1: { typeid: \"SimpleTest:DefaultPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPolyMapContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPolyMapContainer-1.0.0\");\n\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1.get(\"num\").getValue()).to.equal(\n\t\t\t\t\t222,\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1.get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"Sub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2.get(\"num\").getValue()).to.equal(\n\t\t\t\t\t222,\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2.get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"ArrSub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key3.get(\"num\").getValue()).to.equal(\n\t\t\t\t\t333,\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key3.get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"ArrSubSub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key3.get(\"num2\").getValue()).to.equal(\n\t\t\t\t\t111,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail when setting default polymorphic values not derived from base type\", function () {\n\t\t\t\tvar DefaultPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPoly-1.0.0\",\n\t\t\t\t\tproperties: [{ id: \"num\", typeid: \"Uint32\", value: 111 }],\n\t\t\t\t};\n\n\t\t\t\tvar DefaultPolyUnderivedContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyUnderivedContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPoly-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 333 },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPoly);\n\t\t\t\tPropertyFactory.register(DefaultPolyUnderivedContainer);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPolyUnderivedContainer-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(\n\t\t\t\t\tMSG.TYPED_VALUES_MUST_DERIVE_FROM_BASE_TYPE + \"SimpleTest:DefaultPoly-1.0.0\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"@bugfix should use default value when value field is missing\", function () {\n\t\t\t\tvar DefaultPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:PolyWithNoValue-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"type\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: { typeid: \"SimpleTest:DefaultPolyBase-1.0.0\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPoly);\n\t\t\t\tvar prop = PropertyFactory.create(DefaultPoly.typeid);\n\n\t\t\t\texpect(prop.get(\"type\").get(\"num\").value).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive.\", function () {\n\t\t\t\tvar DefaultPrimitiveArrayPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitivePoly-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"int\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: { typeid: \"Int32\", value: 123 },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveArrayPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitivePoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"int\");\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive array.\", function () {\n\t\t\t\tvar DefaultPrimitiveArrayPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitiveArrayPoly-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: [{ typeid: \"Int32\", value: 123 }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveArrayPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitiveArrayPoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"array\");\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive map.\", function () {\n\t\t\t\tvar DefaultPrimitiveMapPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitiveMapPoly-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey1: { typeid: \"Int32\", value: 1 },\n\t\t\t\t\t\t\t\tkey2: { typeid: \"Int32\", value: 2 },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveMapPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitiveMapPoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"map\");\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"Constants\", function () {\n\t\tit(\"should set constant properties as readonly\", function () {\n\t\t\tvar ConstantReadonly = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantReadonly-1.0.0\",\n\t\t\t\tconstants: [{ id: \"num\", typeid: \"Uint32\", value: 111 }],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantReadonly);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantReadonly-1.0.0\");\n\n\t\t\texpect(instance.get(\"num\").getValue()).to.equal(111);\n\t\t\texpect(instance.get(\"num\")._isConstant).to.equal(true);\n\t\t\texpect(instance.get(\"num\")._checkIsNotReadOnly.bind(instance.get(\"num\"), true)).to.throw(\n\t\t\t\tMSG.MODIFICATION_OF_CONSTANT_PROPERTY,\n\t\t\t);\n\t\t\texpect(instance.get(\"num\").setValue.bind(instance.get(\"num\"), 1111)).to.throw(\n\t\t\t\tMSG.MODIFICATION_OF_CONSTANT_PROPERTY,\n\t\t\t);\n\t\t});\n\n\t\tit(\"should set constant child properties as readonly\", function () {\n\t\t\tvar ConstantChildReadonlyEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantChildReadonlyEntry-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"dynamic\",\n\t\t\t\t\t\tproperties: [{ id: \"dynamic_string\", typeid: \"String\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ConstantChildReadonly = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantChildReadonly-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantChildReadonlyEntry-1.0.0\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tnum: 111,\n\t\t\t\t\t\t\tdynamic: { dynamic_string: \"I am a string\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantChildReadonlyEntry);\n\t\t\tPropertyFactory.register(ConstantChildReadonly);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantChildReadonly-1.0.0\");\n\n\t\t\texpect(instance.get(\"template\").get(\"num\")._isConstant).to.equal(true);\n\t\t\texpect(instance.get(\"template\").get(\"dynamic\")._isConstant).to.equal(true);\n\t\t\texpect(\n\t\t\t\tinstance.get(\"template\").get(\"dynamic\").get(\"dynamic_string\")._isConstant,\n\t\t\t).to.equal(true);\n\t\t\texpect(\n\t\t\t\tinstance\n\t\t\t\t\t.get(\"template\")\n\t\t\t\t\t.get(\"num\")\n\t\t\t\t\t._checkIsNotReadOnly.bind(instance.get(\"template\").get(\"num\"), true),\n\t\t\t).to.throw(MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n\t\t\texpect(\n\t\t\t\tinstance\n\t\t\t\t\t.get(\"template\")\n\t\t\t\t\t.get(\"num\")\n\t\t\t\t\t.setValue.bind(instance.get(\"template\").get(\"num\"), 1111),\n\t\t\t).to.throw(MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n\t\t\texpect(\n\t\t\t\tinstance\n\t\t\t\t\t.get(\"template\")\n\t\t\t\t\t.get(\"dynamic\")\n\t\t\t\t\t.get(\"dynamic_string\")\n\t\t\t\t\t._checkIsNotReadOnly.bind(\n\t\t\t\t\t\tinstance.get(\"template\").get(\"dynamic\").get(\"dynamic_string\"),\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t),\n\t\t\t).to.throw(MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n\t\t\texpect(\n\t\t\t\tinstance\n\t\t\t\t\t.get(\"template\")\n\t\t\t\t\t.get(\"dynamic\")\n\t\t\t\t\t.get(\"dynamic_string\")\n\t\t\t\t\t.setValue.bind(\n\t\t\t\t\t\tinstance.get(\"template\").get(\"dynamic\").get(\"dynamic_string\"),\n\t\t\t\t\t\t\"should throw\",\n\t\t\t\t\t),\n\t\t\t).to.throw(MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n\t\t});\n\n\t\tit(\"should support primitive constants\", function () {\n\t\t\tvar ConstantPrimitive = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantPrimitive-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 111 },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\", value: true },\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantPrimitive);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantPrimitive-1.0.0\");\n\n\t\t\texpect(instance.get(\"num\").getValue()).to.equal(111);\n\t\t\texpect(instance.get(\"bool\").getValue()).to.equal(true);\n\t\t});\n\n\t\tit(\"should support typed constants\", function () {\n\t\t\tvar ConstantEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantEntry-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 111 },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\", value: true },\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tvar ConstantTyped = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTyped-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"entry\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantEntry-1.0.0\",\n\t\t\t\t\t\tvalue: { num: 222, bool: false },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default2\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantEntry);\n\t\t\tPropertyFactory.register(ConstantTyped);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantTyped-1.0.0\");\n\n\t\t\texpect(instance.get(\"entry\").get(\"num\").getValue()).to.equal(222);\n\t\t\texpect(instance.get(\"entry\").get(\"bool\").getValue()).to.equal(false);\n\t\t});\n\n\t\tit(\"should support string constants\", function () {\n\t\t\tvar ConstantString = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantString-1.0.0\",\n\t\t\t\tconstants: [{ id: \"string\", typeid: \"String\", value: \"I am a string\" }],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantString);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantString-1.0.0\");\n\n\t\t\texpect(instance.get(\"string\").getValue()).to.equal(\"I am a string\");\n\t\t});\n\n\t\tit(\"should support primitive array constants\", function () {\n\t\t\tvar ConstantArray = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantArray-1.0.0\",\n\t\t\t\tconstants: [{ id: \"array\", typeid: \"Int32\", value: [111, 222], context: \"array\" }],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantArray);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantArray-1.0.0\");\n\t\t\texpect(instance.get(\"array\").get(0)).to.equal(111);\n\t\t\texpect(instance.get(\"array\").get(1)).to.equal(222);\n\t\t});\n\n\t\tit(\"should support typed array constants\", function () {\n\t\t\tvar ConstantTypedArrayEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTypedArrayEntry-1.0.0\",\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar ConstantTypedArray = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTypedArray-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantTypedArrayEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\tvalue: [{ string: \"I am string 1\" }, { string: \"I am string 2\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantTypedArrayEntry);\n\t\t\tPropertyFactory.register(ConstantTypedArray);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantTypedArray-1.0.0\");\n\t\t\texpect(instance.get(\"array\").get(0).get(\"string\").value).to.equal(\"I am string 1\");\n\t\t\texpect(instance.get(\"array\").get(1).get(\"string\").value).to.equal(\"I am string 2\");\n\t\t});\n\n\t\tit(\"should support template constants\", function () {\n\t\t\tvar ConstantTemplateEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTemplateEntry-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"dynamic\",\n\t\t\t\t\t\tproperties: [{ id: \"dynamic_string\", typeid: \"String\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ConstantTemplate = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTemplate-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantTemplateEntry-1.0.0\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tnum: 111,\n\t\t\t\t\t\t\tdynamic: { dynamic_string: \"I am a string\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantTemplateEntry);\n\t\t\tPropertyFactory._reregister(ConstantTemplate);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantTemplate-1.0.0\");\n\n\t\t\texpect(instance.get(\"template\").get(\"num\").getValue()).to.equal(111);\n\t\t\texpect(\n\t\t\t\tinstance.get(\"template\").get(\"dynamic\").get(\"dynamic_string\").getValue(),\n\t\t\t).to.equal(\"I am a string\");\n\t\t});\n\n\t\tit(\"should support set constants\", function () {\n\t\t\tvar ConstantSetEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantSetEntry-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar ConstantSet = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantSet-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantSetEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\tvalue: [{ string: \"I am a string 1\" }, { string: \"I am a string 2\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantSetEntry);\n\t\t\tPropertyFactory.register(ConstantSet);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantSet-1.0.0\");\n\n\t\t\texpect(instance.get(\"set\").getAsArray().length).to.equal(2);\n\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 1\",\n\t\t\t);\n\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 2\",\n\t\t\t);\n\n\t\t\t// All instances should share the same constant objects\n\t\t\tvar instance2 = PropertyFactory.create(\"SimpleTest:ConstantSet-1.0.0\");\n\t\t\texpect(instance.get(\"set\") === instance2.get(\"set\")).to.be.true;\n\t\t});\n\n\t\tit(\"should support primitive map constants\", function () {\n\t\t\tvar ConstantPrimitiveMap = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantPrimitiveMap-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tkey1: 111,\n\t\t\t\t\t\t\tkey2: 222,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantPrimitiveMap);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantPrimitiveMap-1.0.0\");\n\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1).to.equal(111);\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2).to.equal(222);\n\t\t});\n\n\t\tit(\"should support typed map constants\", function () {\n\t\t\tvar ConstantTypedMapEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTypedMapEntry-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar ConstantTypedMap = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTypedMap-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantTypedMapEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tkey1: { string: \"I am a string 1\" },\n\t\t\t\t\t\t\tkey2: { string: \"I am a string 2\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantTypedMapEntry);\n\t\t\tPropertyFactory.register(ConstantTypedMap);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantTypedMap-1.0.0\");\n\n\t\t\texpect(instance.get(\"map\")._contextKeyType).to.equal(\"string\");\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1.get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 1\",\n\t\t\t);\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2.get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 2\",\n\t\t\t);\n\t\t});\n\n\t\tit(\"should support map constants with templateid keys\", function () {\n\t\t\tvar ConstantTemplate = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTemplate-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tcontextKeyType: \"typeid\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate1-1.0.0\": 1,\n\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate2-1.0.0\": -1,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\t\t\tPropertyFactory._reregister(ConstantTemplate);\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantTemplate-1.0.0\");\n\n\t\t\texpect(instance.get(\"map\")._contextKeyType).to.equal(\"typeid\");\n\t\t\texpect(instance.get(\"map\").get(\"SimpleTest:ConstantTemplate1-1.0.0\")).to.equal(1);\n\t\t\texpect(instance.get(\"map\").get(\"SimpleTest:ConstantTemplate2-1.0.0\")).to.equal(-1);\n\t\t});\n\n\t\tit(\"should support constants with no value defined\", function () {\n\t\t\tvar ConstantNoValueEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Int16\" },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\" },\n\t\t\t\t\t{ id: \"string\", typeid: \"String\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ConstantNoValue = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantNoValue-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"int\", typeid: \"Int32\" },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\" },\n\t\t\t\t\t{ id: \"string\", typeid: \"String\" },\n\t\t\t\t\t{ id: \"array\", typeid: \"Int16\", context: \"array\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"array_typed\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t},\n\t\t\t\t\t{ id: \"set\", typeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\", context: \"set\" },\n\t\t\t\t\t{ id: \"map\", typeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\", context: \"map\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ConstantNoValueInherited = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueInherited-1.0.0\",\n\t\t\t\tinherits: \"SimpleTest:ConstantNoValue-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"int\", typeid: \"Int32\", value: 100 },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\", value: true },\n\t\t\t\t\t{ id: \"string\", typeid: \"String\", value: \"I am a string\" },\n\t\t\t\t\t{ id: \"array\", typeid: \"Int16\", context: \"array\", value: [100, 200] },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"array_typed\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\tvalue: [{ num: 100 }, { num: 200, string: \"I am a string 2\", bool: true }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\tvalue: [{ num: 100 }, { num: 200, string: \"I am a string 2\", bool: true }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tkey1: { num: 100 },\n\t\t\t\t\t\t\tkey2: { num: 200, string: \"I am a string 2\", bool: true },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantNoValueEntry);\n\t\t\tPropertyFactory.register(ConstantNoValue);\n\t\t\tPropertyFactory.register(ConstantNoValueInherited);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantNoValue-1.0.0\");\n\t\t\tvar instanceInherited = PropertyFactory.create(\n\t\t\t\t\"SimpleTest:ConstantNoValueInherited-1.0.0\",\n\t\t\t);\n\n\t\t\texpect(instance.get(\"int\").getValue()).to.equal(0);\n\t\t\texpect(instance.get(\"bool\").getValue()).to.equal(false);\n\t\t\texpect(instance.get(\"string\").getValue()).to.equal(\"\");\n\t\t\texpect(instance.get(\"array\").getValues()).to.deep.equal([]);\n\t\t\texpect(instance.get(\"array_typed\").getValues()).to.deep.equal([]);\n\t\t\texpect(instance.get(\"set\").getAsArray()).to.deep.equal([]);\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly()).to.deep.equal({});\n\n\t\t\texpect(instanceInherited.get(\"int\").getValue()).to.equal(100);\n\t\t\texpect(instanceInherited.get(\"bool\").getValue()).to.equal(true);\n\t\t\texpect(instanceInherited.get(\"string\").getValue()).to.equal(\"I am a string\");\n\t\t\texpect(instanceInherited.get(\"array\").getValues()).to.deep.equal([100, 200]);\n\n\t\t\tlet arr = instanceInherited.get(\"array_typed\").getValues();\n\t\t\texpect(arr[0][\"num\"]).to.equal(100);\n\t\t\texpect(arr[0][\"string\"]).to.equal(\"\");\n\t\t\texpect(arr[0][\"bool\"]).to.equal(false);\n\t\t\texpect(arr[1][\"num\"]).to.equal(200);\n\t\t\texpect(arr[1][\"string\"]).to.equal(\"I am a string 2\");\n\t\t\texpect(arr[1][\"bool\"]).to.equal(true);\n\n\t\t\tlet set = instanceInherited.get(\"set\").getAsArray();\n\n\t\t\texpect(set[0].get(\"num\").getValue()).to.equal(100);\n\t\t\texpect(set[0].get(\"string\").getValue()).to.equal(\"\");\n\t\t\texpect(set[0].get(\"bool\").getValue()).to.equal(false);\n\t\t\texpect(set[1].get(\"num\").getValue()).to.equal(200);\n\t\t\texpect(set[1].get(\"string\").getValue()).to.equal(\"I am a string 2\");\n\t\t\texpect(set[1].get(\"bool\").getValue()).to.equal(true);\n\n\t\t\tlet map = instanceInherited.get(\"map\").getEntriesReadOnly();\n\t\t\texpect(map.key1.get(\"num\").getValue()).to.equal(100);\n\t\t\texpect(map.key1.get(\"string\").getValue()).to.equal(\"\");\n\t\t\texpect(map.key1.get(\"bool\").getValue()).to.equal(false);\n\t\t\texpect(map.key2.get(\"num\").getValue()).to.equal(200);\n\t\t\texpect(map.key2.get(\"string\").getValue()).to.equal(\"I am a string 2\");\n\t\t\texpect(map.key2.get(\"bool\").getValue()).to.equal(true);\n\t\t});\n\n\t\tdescribe(\"#Polymorphic\", function () {\n\t\t\tvar ConstantPolyBase = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tconstants: [{ id: \"num\", typeid: \"Uint32\", value: 111 }],\n\t\t\t};\n\n\t\t\tvar ConstantPolySub = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\tinherits: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 222 },\n\t\t\t\t\t{ id: \"str\", typeid: \"String\", value: \"Sub\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ConstantPolySubSub = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantPolySubSub-1.0.0\",\n\t\t\t\tinherits: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 333 },\n\t\t\t\t\t{ id: \"num2\", typeid: \"Uint32\", value: 111 },\n\t\t\t\t\t{ id: \"str\", typeid: \"String\", value: \"SubSub\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tbeforeEach(function () {\n\t\t\t\tPropertyFactory._clear();\n\t\t\t\tPropertyFactory.register(ConstantPolyBase);\n\t\t\t\tPropertyFactory.register(ConstantPolySub);\n\t\t\t\tPropertyFactory.register(ConstantPolySubSub);\n\t\t\t});\n\n\t\t\tit(\"should set constant polymorphic values for non-primitive constants\", function () {\n\t\t\t\tvar ConstantPolyContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 333, str: \"PolySub\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySubSub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 444, str: \"PolySubSub\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolyContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantPolyContainer-1.0.0\");\n\t\t\t\texpect(instance.get(\"polySub\").get(\"num\").getValue()).to.equal(333);\n\t\t\t\texpect(instance.get(\"polySub\").get(\"str\").getValue()).to.equal(\"PolySub\");\n\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"num\").getValue()).to.equal(444);\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"str\").getValue()).to.equal(\"PolySubSub\");\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"num2\").getValue()).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should pass when setting a constant typedValue that doesnt have a value.\", function () {\n\t\t\t\tvar ConstantPolyNoValueContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyNoValueContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: { typeid: \"SimpleTest:ConstantPolySub-1.0.0\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolyNoValueContainer);\n\t\t\t\tvar prop = PropertyFactory.create(\"SimpleTest:ConstantPolyNoValueContainer-1.0.0\");\n\n\t\t\t\texpect(prop.get(\"polySub\").get(\"str\").value).to.equal(\"Sub\");\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a constant typedValue that doesnt have a typeid.\", function () {\n\t\t\t\tvar ConstantPolyNoTypeIdContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyNoTypeIdContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: { value: { num: 333, str: \"PolySub\" } },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolyNoTypeIdContainer);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:ConstantPolyNoTypeIdContainer-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(\n\t\t\t\t\tMSG.FIELD_TYPEID_IS_REQUIRED + \"typedValue SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should set a constant polymorphic value for a non-primitive array\", function () {\n\t\t\t\tvar ConstantPolyArrayContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyArrayContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{ typeid: \"SimpleTest:ConstantPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolyArrayContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantPolyArrayContainer-1.0.0\");\n\t\t\t\texpect(instance.get(\"array\").get(0).get(\"num\").value).to.equal(222);\n\t\t\t\texpect(instance.get(\"array\").get(0).get(\"str\").value).to.equal(\"Sub\");\n\t\t\t\texpect(instance.get(\"array\").get(1).get(\"num\").value).to.equal(222);\n\t\t\t\texpect(instance.get(\"array\").get(1).get(\"str\").value).to.equal(\"ArrSub\");\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"num\").value).to.equal(333);\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"str\").value).to.equal(\"ArrSubSub\");\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"num2\").value).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should set a constant polymorphic value for a non-primitive set\", function () {\n\t\t\t\tvar ConstantPolySetContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySetContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{ typeid: \"SimpleTest:ConstantPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolySetContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantPolySetContainer-1.0.0\");\n\n\t\t\t\texpect(instance.get(\"set\").getAsArray().length).to.equal(3);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"num\").getValue()).to.equal(222);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"str\").getValue()).to.equal(\"Sub\");\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"num\").getValue()).to.equal(222);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"str\").getValue()).to.equal(\"ArrSub\");\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"num\").getValue()).to.equal(333);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"ArrSubSub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"num2\").getValue()).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should set a constant polymorphic value for a non-primitive map\", function () {\n\t\t\t\tvar ConstantPolyMapContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyMapContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey1: { typeid: \"SimpleTest:ConstantPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolyMapContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantPolyMapContainer-1.0.0\");\n\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1.get(\"num\").getValue()).to.equal(\n\t\t\t\t\t222,\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1.get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"Sub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2.get(\"num\").getValue()).to.equal(\n\t\t\t\t\t222,\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2.get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"ArrSub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key3.get(\"num\").getValue()).to.equal(\n\t\t\t\t\t333,\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key3.get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"ArrSubSub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key3.get(\"num2\").getValue()).to.equal(\n\t\t\t\t\t111,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail when setting constant polymorphic values not derived from base type\", function () {\n\t\t\t\tvar ConstantPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPoly-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Uint32\", value: 111 }],\n\t\t\t\t};\n\n\t\t\t\tvar ConstantPolyUnderivedContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyUnderivedContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPoly-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 333 },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPoly);\n\t\t\t\tPropertyFactory.register(ConstantPolyUnderivedContainer);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:ConstantPolyUnderivedContainer-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(\n\t\t\t\t\tMSG.TYPED_VALUES_MUST_DERIVE_FROM_BASE_TYPE + \"SimpleTest:ConstantPoly-1.0.0\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive.\", function () {\n\t\t\t\tvar DefaultPrimitiveArrayPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitivePoly-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"int\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: { typeid: \"Int32\", value: 123 },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveArrayPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitivePoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"int\");\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive array.\", function () {\n\t\t\t\tvar DefaultPrimitiveArrayPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitiveArrayPoly-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: [{ typeid: \"Int32\", value: 123 }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveArrayPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitiveArrayPoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"array\");\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive map.\", function () {\n\t\t\t\tvar DefaultPrimitiveMapPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitiveMapPoly-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey1: { typeid: \"Int32\", value: 1 },\n\t\t\t\t\t\t\t\tkey2: { typeid: \"Int32\", value: 2 },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveMapPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitiveMapPoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"map\");\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"InstanceOf Type Checking\", function () {\n\t\tit(\"Native types pass instanceOf check\", function () {\n\t\t\tvar contextSingleTypes = [\"NodeProperty\", \"Enum\"];\n\t\t\tvar propTypes = [\n\t\t\t\t\"String\",\n\t\t\t\t\"Bool\",\n\t\t\t\t\"Int8\",\n\t\t\t\t\"Uint8\",\n\t\t\t\t\"Int16\",\n\t\t\t\t\"Uint16\",\n\t\t\t\t\"Int32\",\n\t\t\t\t\"Int64\",\n\t\t\t\t\"Uint64\",\n\t\t\t\t\"Uint32\",\n\t\t\t\t\"Float32\",\n\t\t\t\t\"Float64\",\n\t\t\t\t\"Reference\",\n\t\t\t];\n\n\t\t\tvar contextSingleTypes = propTypes.concat([\"NodeProperty\", \"Enum\"]);\n\t\t\tfor (var i = 0; i < contextSingleTypes.length; ++i) {\n\t\t\t\tvar propType = contextSingleTypes[i];\n\t\t\t\texpect(PropertyFactory.instanceOf(PropertyFactory.create(propType), propType)).to.be\n\t\t\t\t\t.true;\n\t\t\t}\n\n\t\t\tfor (var j = 0; j < propTypes.length; ++j) {\n\t\t\t\tvar propType = propTypes[j];\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.instanceOf(PropertyFactory.create(propType, \"map\"), propType, \"map\"),\n\t\t\t\t).to.be.true;\n\t\t\t}\n\n\t\t\tvar contextArrayTypes = propTypes.concat([\"Enum\"]);\n\t\t\tfor (var k = 0; k < contextArrayTypes.length; ++k) {\n\t\t\t\tvar propType = contextArrayTypes[k];\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.instanceOf(\n\t\t\t\t\t\tPropertyFactory.create(propType, \"array\"),\n\t\t\t\t\t\tpropType,\n\t\t\t\t\t\t\"array\",\n\t\t\t\t\t),\n\t\t\t\t).to.be.true;\n\t\t\t}\n\t\t});\n\n\t\tit(\"instanceOf check succeeds for schema based properties and native typeids\", function () {\n\t\t\tPropertyFactory.register(SimplePoint);\n\t\t\texpect(\n\t\t\t\tPropertyFactory.instanceOf(PropertyFactory.create(SimplePoint.typeid), \"BaseProperty\"),\n\t\t\t).to.be.true;\n\n\t\t\tconst testEnum = {\n\t\t\t\tinherits: \"Enum\",\n\t\t\t\ttypeid: \"test:testEnum-1.0.0\",\n\t\t\t\tproperties: [{ id: \"test\", value: 1 }],\n\t\t\t};\n\t\t\tPropertyFactory.register(testEnum);\n\t\t\texpect(\n\t\t\t\tPropertyFactory.instanceOf(\n\t\t\t\t\tPropertyFactory.create(testEnum.typeid, \"array\"),\n\t\t\t\t\t\"Enum\",\n\t\t\t\t\t\"array\",\n\t\t\t\t),\n\t\t\t).to.be.true;\n\t\t});\n\n\t\tit(\"instanceOf check fails for non native typeids\", function () {\n\t\t\tPropertyFactory.register(SimplePoint);\n\t\t\texpect(\n\t\t\t\tPropertyFactory.instanceOf(\n\t\t\t\t\tPropertyFactory.create(SimplePoint.typeid),\n\t\t\t\t\tSimplePoint.typeid,\n\t\t\t\t),\n\t\t\t).to.be.false;\n\t\t});\n\t});\n});\n\ndescribe(\"Template registration\", function () {\n\tvar ColorID, myPropertyFactory;\n\n\tbefore(function () {\n\t\tColorID = require(\"./validation/goodColorId\");\n\t});\n\n\tbeforeEach(function () {\n\t\tthis.sinon = sinon.createSandbox();\n\t\tthis.sinon.stub(console, \"warn\");\n\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\t});\n\n\tafterEach(function () {\n\t\tthis.sinon.restore();\n\t});\n\n\tit(\"should register a versioned template\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t});\n\n\tit(\"should print a warning when registering an existing template that is not different from what is in the registry\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\texpect(console.warn.callCount).to.equal(1);\n\t});\n\n\tit(\"should accept registering a different template from what is in the registry if it is semantically equivalent\", function () {\n\t\tvar testPropertyTypeId = \"TEST:array.Float32-0.0.1\";\n\t\tvar ValuesTemplate1 = {\n\t\t\ttypeid: testPropertyTypeId,\n\t\t\tinherits: \"NamedProperty\",\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"values\",\n\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\ttypeid: \"Float32\",\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tvar ValuesTemplate2 = {\n\t\t\ttypeid: testPropertyTypeId,\n\t\t\tinherits: [\"NamedProperty\"],\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"values\",\n\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\ttypeid: \"Float32\",\n\t\t\t\t\tlength: 0,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tmyPropertyFactory.register(ValuesTemplate1);\n\t\texpect(myPropertyFactory.register.bind(myPropertyFactory, ValuesTemplate2)).to.not.throw();\n\t});\n\n\tit(\"should throw when registering an existing template version that is different from what is in the registry\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\texpect(\n\t\t\tmyPropertyFactory.register.bind(myPropertyFactory, ColorID[\"1-0-0\"].modified),\n\t\t).to.throw(Error);\n\t});\n\n\tit(\"should throw when registering an unversioned template\", function () {\n\t\texpect(\n\t\t\tmyPropertyFactory.register.bind(\n\t\t\t\tmyPropertyFactory,\n\t\t\t\trequire(\"./validation/badMissingSemverInTypeid\"),\n\t\t\t),\n\t\t).to.throw(Error);\n\t});\n\n\tit(\"should throw when registering an invalid versioned template\", function () {\n\t\texpect(\n\t\t\tmyPropertyFactory.register.bind(\n\t\t\t\tmyPropertyFactory,\n\t\t\t\trequire(\"./validation/badPrimitiveTypeid\"),\n\t\t\t),\n\t\t).to.throw(Error);\n\t});\n\n\tit(\"should throw when registering a primitive property through the public API\", function () {\n\t\texpect(\n\t\t\tmyPropertyFactory.register.bind(myPropertyFactory, \"String\", StringProperty),\n\t\t).to.throw(Error);\n\t});\n\n\tit(\"should register templates out of order without any warnings or errors\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].goodSemver);\n\t\tmyPropertyFactory.register(ColorID[\"1-0-1\"].goodSemver);\n\n\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].goodSemver);\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-0-1\"].goodSemver);\n\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"should register a new template with the PATCH version updated\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-0-1\"].goodSemver);\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"should register a new template with the MINOR version updated\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].goodSemver);\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"should print a warning when registering a new template with the wrong version updated\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].badSemver1);\n\n\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].badSemver2);\n\n\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-1-0\"].badSemver1, generateGUID());\n\n\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].badSemver2);\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-0\"].original, generateGUID());\n\n\t\texpect(console.warn.callCount).to.equal(4);\n\t});\n\n\tit(\"should register a new template with the MAJOR version updated\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"2-0-0\"]);\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"should register a versioned remote template\", function () {\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-0\"].original, generateGUID());\n\t});\n\n\t// biome-ignore format: https://github.com/biomejs/biome/issues/4202\n\tit(\n\t\t\"should pass when registering a versioned remote template that exists\" +\n\t\t\t\" in the local registry but is the same from what is locally registered\",\n\t\tfunction () {\n\t\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-0\"].original, generateGUID());\n\n\t\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\n\t\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-0\"].original, generateGUID());\n\t\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\t\texpect(console.warn.callCount).to.equal(0);\n\t\t},\n\t);\n\n\t// biome-ignore format: https://github.com/biomejs/biome/issues/4202\n\tit(\n\t\t\"should fail when registering a versioned remote template that exists\" +\n\t\t\t\" in the local registry but differs from what is locally registered\",\n\t\tfunction () {\n\t\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\t\texpect(\n\t\t\t\tmyPropertyFactory._registerRemoteTemplate.bind(\n\t\t\t\t\tmyPropertyFactory,\n\t\t\t\t\tColorID[\"1-0-0\"].modified,\n\t\t\t\t\tgenerateGUID(),\n\t\t\t\t),\n\t\t\t).to.throw(Error);\n\t\t},\n\t);\n\n\tit(\"should throw when registering an unversioned remote template\", function () {\n\t\texpect(\n\t\t\tmyPropertyFactory._registerRemoteTemplate.bind(\n\t\t\t\tmyPropertyFactory,\n\t\t\t\trequire(\"./validation/badMissingSemverInTypeid\"),\n\t\t\t\tgenerateGUID(),\n\t\t\t),\n\t\t).to.throw(Error);\n\t});\n\n\tit(\"should register a remote template even when there are other versions of the same template in the local registry\", function () {\n\t\tvar scope = generateGUID();\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"2-0-0\"]);\n\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-1-0\"].goodSemver, scope);\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-1\"].goodSemver, scope);\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"should register a local template even when there are other versions of the same template in the remote registry\", function () {\n\t\tvar scope = generateGUID();\n\t\tvar scope2 = generateGUID();\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-1-0\"].goodSemver, scope);\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-1\"].goodSemver, scope);\n\t\tmyPropertyFactory._registerRemoteTemplate(require(\"./validation/goodPointId\"), scope2);\n\t\tmyPropertyFactory._registerRemoteTemplate(\n\t\t\trequire(\"./validation/goodColorPalette\"),\n\t\t\tscope2,\n\t\t);\n\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"2-0-0\"]);\n\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"`registered` event is triggered when registering a template\", function (done) {\n\t\tvar typeid = \"test:schemaReg-1.0.0\";\n\t\tvar registeredEventListener = function (template) {\n\t\t\texpect(template).to.exist;\n\t\t\texpect(template.typeid).to.equal(typeid);\n\t\t\tdone();\n\t\t};\n\n\t\tPropertyFactory.addListener(\"registered\", registeredEventListener);\n\n\t\tPropertyFactory.register({\n\t\t\ttypeid: typeid,\n\t\t});\n\t\t// We remove the listener to avoid unnecessary calls for later templates registration.\n\t\tPropertyFactory.removeListener(\"registered\", registeredEventListener);\n\t});\n});\n\ndescribe('Only properties and constants that inherit from NamedProperty can have the \"set\" context', function () {\n\tbeforeEach(() => PropertyFactory._clear());\n\tafterEach(() => PropertyFactory._clear());\n\n\tdescribe(\"Properties\", () => {\n\t\tdescribe(\"should throw when trying to register a set not inheriting from a namedProperty\", () => {\n\t\t\tit(\"declared in a template\", () => {\n\t\t\t\tvar templateChild = {\n\t\t\t\t\ttypeid: \"adsk.test:anotherTestSchema-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar template = {\n\t\t\t\t\ttypeid: \"adsk.test:testSchema-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"something\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypeid: \"adsk.test:anotherTestSchema-1.0.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(template);\n\t\t\t\tPropertyFactory.register(templateChild);\n\n\t\t\t\texpect(() => {\n\t\t\t\t\tPropertyFactory.create(template.typeid);\n\t\t\t\t}).to.throw(MSG.SET_ONLY_NAMED_PROPS + templateChild.typeid);\n\t\t\t});\n\n\t\t\tit(\"declared in a template with two level of inheritance\", () => {\n\t\t\t\tvar itemParentTemplate = {\n\t\t\t\t\ttypeid: \"adsk.test:itemParent-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar itemTemplate = {\n\t\t\t\t\ttypeid: \"adsk.test:item-1.0.0\",\n\t\t\t\t\tinherits: \"adsk.test:itemParent-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar template = {\n\t\t\t\t\ttypeid: \"adsk.test:set-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"something\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypeid: \"adsk.test:item-1.0.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(itemParentTemplate);\n\t\t\t\tPropertyFactory.register(itemTemplate);\n\t\t\t\tPropertyFactory.register(template);\n\n\t\t\t\texpect(() => {\n\t\t\t\t\tPropertyFactory.create(template.typeid);\n\t\t\t\t}).to.throw(MSG.SET_ONLY_NAMED_PROPS + itemTemplate.typeid);\n\t\t\t});\n\n\t\t\tit(\"when passed as a parameter of the create method\", () => {\n\t\t\t\tvar template = {\n\t\t\t\t\ttypeid: \"adsk.test:test-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(template);\n\n\t\t\t\texpect(() => {\n\t\t\t\t\tPropertyFactory.create(template.typeid, \"set\");\n\t\t\t\t}).to.throw(MSG.SET_ONLY_NAMED_PROPS + template.typeid);\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"Constants\", () => {\n\t\tdescribe(\"should throw when trying to register a set not inheriting from a namedProperty\", () => {\n\t\t\tit(\"declared in a template\", () => {\n\t\t\t\tvar templateChild = {\n\t\t\t\t\ttypeid: \"adsk.test:anotherTestSchema-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar template = {\n\t\t\t\t\ttypeid: \"adsk.test:testSchema-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"something\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypeid: \"adsk.test:anotherTestSchema-1.0.0\",\n\t\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(template);\n\t\t\t\tPropertyFactory.register(templateChild);\n\n\t\t\t\texpect(() => {\n\t\t\t\t\tPropertyFactory.create(template.typeid);\n\t\t\t\t}).to.throw(MSG.SET_ONLY_NAMED_PROPS + templateChild.typeid);\n\t\t\t});\n\n\t\t\tit(\"declared in a template with two level of inheritance\", () => {\n\t\t\t\tvar itemParentTemplate = {\n\t\t\t\t\ttypeid: \"adsk.test:itemParent-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar itemTemplate = {\n\t\t\t\t\ttypeid: \"adsk.test:item-1.0.0\",\n\t\t\t\t\tinherits: \"adsk.test:itemParent-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar template = {\n\t\t\t\t\ttypeid: \"adsk.test:set-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"something\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypeid: \"adsk.test:item-1.0.0\",\n\t\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(itemParentTemplate);\n\t\t\t\tPropertyFactory.register(itemTemplate);\n\t\t\t\tPropertyFactory.register(template);\n\n\t\t\t\texpect(() => {\n\t\t\t\t\tPropertyFactory.create(template.typeid);\n\t\t\t\t}).to.throw(MSG.SET_ONLY_NAMED_PROPS + itemTemplate.typeid);\n\t\t\t});\n\t\t\tvar unit = {\n\t\t\t\tannotation: {\n\t\t\t\t\tdescription: \"A definite magnitude used as a standard of measurement.\",\n\t\t\t\t\tdoc: \"http://docs.adskunits.apiary.io/#introduction/definitions/measurement-units\",\n\t\t\t\t},\n\t\t\t\ttypeid: \"autodesk.unit:unit-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"name\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tvar quantity = {\n\t\t\t\tannotation: {\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"A quantity typically measured in a particular set of compatible units.\",\n\t\t\t\t},\n\t\t\t\ttypeid: \"autodesk.unit:quantity-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"name\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"units\",\n\t\t\t\t\t\ttypeid: \"autodesk.unit:unit-1.0.0\",\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\ttypedValue: [],\n\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\"List of all measurement units applicable to the measurable quantity.\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tvar area = {\n\t\t\t\tannotation: { description: \"Area.\" },\n\t\t\t\ttypeid: \"autodesk.unit.quantity:area-1.0.0\",\n\t\t\t\tinherits: [\"autodesk.unit:quantity-1.0.0\"],\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"name\", value: \"Area\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"units\",\n\t\t\t\t\t\ttypedValue: [{ typeid: \"autodesk.unit.unit:squareCentimeters-1.0.0\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tvar centimeter = {\n\t\t\t\tannotation: { description: \"Square centimeters.\" },\n\t\t\t\ttypeid: \"autodesk.unit.unit:squareCentimeters-1.0.0\",\n\t\t\t\tinherits: [\"autodesk.unit:unit-1.0.0\"],\n\t\t\t\tconstants: [{ id: \"name\", value: \"Square centimeters\" }],\n\t\t\t};\n\t\t\tit(\"@bugfix should support constant which inhirets from a polymorphic array\", () => {\n\t\t\t\tPropertyFactory.register(unit);\n\t\t\t\tPropertyFactory.register(quantity);\n\t\t\t\tPropertyFactory.register(area);\n\t\t\t\tPropertyFactory.register(centimeter);\n\t\t\t\tvar centimeterProp = PropertyFactory.create(centimeter.typeid);\n\n\t\t\t\tvar areaProp = PropertyFactory.create(area.typeid);\n\n\t\t\t\texpect(areaProp.get(\"units\").get(0).get(\"name\").value).to.equal(\n\t\t\t\t\tcentimeterProp.get(\"name\").value,\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t});\n});\n\ndescribe(\"Async validation\", function () {\n\tvar TemplateValidator;\n\tvar inheritsFromAsync = async function (child, ancestor) {\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tsetTimeout(function () {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(PropertyFactory.inheritsFrom(child, ancestor));\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t}, 0);\n\t\t});\n\t};\n\n\tvar hasSchemaAsync = async function (typeid) {\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tsetTimeout(function () {\n\t\t\t\tresolve(PropertyFactory._has(typeid));\n\t\t\t}, 0);\n\t\t});\n\t};\n\n\tbefore(function () {\n\t\tTemplateValidator = require(\"@fluid-experimental/property-changeset\").TemplateValidator;\n\t});\n\n\tit(\"can validate asynchronously\", function () {\n\t\tvar templateValidator = new TemplateValidator({\n\t\t\tinheritsFromAsync: inheritsFromAsync,\n\t\t\thasSchemaAsync: hasSchemaAsync,\n\t\t});\n\n\t\tvar templatePrevious = JSON.parse(JSON.stringify(require(\"./validation/goodPointId\")));\n\t\tvar template = JSON.parse(JSON.stringify(templatePrevious));\n\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-0.9.9\";\n\t\treturn templateValidator.validateAsync(template, templatePrevious).then(function (result) {\n\t\t\texpect(result).property(\"isValid\", false);\n\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\texpect(result.errors[0].message).to.have.string(MSG.VERSION_REGRESSION_1);\n\t\t});\n\t});\n\n\tit(\"can perform context validation asynchronously\", function (done) {\n\t\tvar templateValidator = new TemplateValidator({\n\t\t\tinheritsFromAsync: inheritsFromAsync,\n\t\t\thasSchemaAsync: hasSchemaAsync,\n\t\t});\n\n\t\t// Doesn't inherit from 'NamedProperty'. Will cause an error\n\t\tvar grandParentSchema = {\n\t\t\ttypeid: \"test:grandparentschema-1.0.0\",\n\t\t};\n\n\t\tvar parentSchema = {\n\t\t\ttypeid: \"test:parentschema-1.0.0\",\n\t\t\tinherits: [\"test:grandparentschema-1.0.0\"],\n\t\t};\n\n\t\tvar childSchema = {\n\t\t\ttypeid: \"test:childchema-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"set\",\n\t\t\t\t\ttypeid: \"test:parentschema-1.0.0\",\n\t\t\t\t\tcontext: \"set\",\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tPropertyFactory.register(grandParentSchema);\n\t\tPropertyFactory.register(parentSchema);\n\n\t\ttemplateValidator\n\t\t\t.validateAsync(childSchema)\n\t\t\t.then(function (result) {\n\t\t\t\tdone(new Error(\"Should not be valid!\"));\n\t\t\t})\n\t\t\t.catch(function (error) {\n\t\t\t\texpect(error).to.exist;\n\t\t\t\tdone();\n\t\t\t});\n\t});\n});\n\ndescribe(\"inheritsFrom() method\", () => {\n\tbeforeEach(() => {\n\t\tPropertyFactory._clear();\n\t\tPropertyFactory.register([\n\t\t\t{\n\t\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\t\tinherits: \"NamedProperty\",\n\t\t\t},\n\t\t]);\n\t});\n\n\tit(\"should recognize that the Int8 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Int8\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Uint8 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Uint8\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Int16 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Int16\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Uint16 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Uint16\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Int32 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Int32\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Uint32 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Uint32\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Float32 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Float32\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Int64 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Int64\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Uint64 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Uint64\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Float64 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Float64\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Bool only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Bool\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Reference only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Reference\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Enum only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Enum\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the String inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"String\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NodeProperty inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NodeProperty\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the ContainerProperty inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"ContainerProperty\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NamedProperty inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NamedProperty\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NamedNodeProperty inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NamedNodeProperty\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NodeProperty inherits from ContainerProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NodeProperty\", \"ContainerProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NamedProperty inherits from ContainerProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NamedProperty\", \"ContainerProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the String inherits from ContainerProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"String\", \"ContainerProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NamedNodeProperty inherits from NamedProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NamedNodeProperty\", \"NamedProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NamedNodeProperty inherits from NodeProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NamedNodeProperty\", \"NodeProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the test set that inherits from NamedNodeProperty also inherits from BaseProperty\", () => {\n\t\tPropertyFactory._reregister({\n\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\tinherits: \"NamedNodeProperty\",\n\t\t});\n\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\"BaseProperty\",\n\t\t);\n\n\t\texpect(result).to.be.true;\n\t});\n\n\t// biome-ignore format: https://github.com/biomejs/biome/issues/4202\n\tit(\n\t\t\"should recognize that the test set that inherits from NamedNodeProperty\" +\n\t\t\t\" also inherits from AbstractStaticCollectionProperty\",\n\t\t() => {\n\t\t\tPropertyFactory._reregister({\n\t\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\t\tinherits: \"NamedNodeProperty\",\n\t\t\t});\n\t\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\t\"AbstractStaticCollectionProperty\",\n\t\t\t);\n\n\t\t\texpect(result).to.be.true;\n\t\t},\n\t);\n\n\tit(\"should recognize that the test set that inherits from NamedNodeProperty also inherits from NodeProperty\", () => {\n\t\tPropertyFactory._reregister({\n\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\tinherits: \"NamedNodeProperty\",\n\t\t});\n\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\"NodeProperty\",\n\t\t);\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the test set that inherits from NamedNodeProperty also inherits from NamedProperty\", () => {\n\t\tPropertyFactory._reregister({\n\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\tinherits: \"NamedNodeProperty\",\n\t\t});\n\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\"NamedProperty\",\n\t\t);\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the testSet doesn't inherits from foe\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"autodesk.examples:test.set-1.0.0\", \"foe\");\n\n\t\texpect(result).to.be.false;\n\t});\n\n\tit(\"should return true if in_templateTypeid = in_baseTypeid\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t);\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should return false if in_templateTypeid = in_baseTypeid but in_options.includeSelf is false\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t{ includeSelf: false },\n\t\t);\n\n\t\texpect(result).to.be.false;\n\t});\n\n\tdescribe(\"Caching\", () => {\n\t\tbeforeEach(() => {\n\t\t\t// add a second schema for the cache tests\n\t\t\tPropertyFactory.register({\n\t\t\t\ttypeid: \"autodesk.examples:test.set-2.0.0\",\n\t\t\t\tinherits: \"NamedProperty\",\n\t\t\t});\n\t\t});\n\n\t\tit(\"should cache results\", () => {\n\t\t\tPropertyFactory.inheritsFrom(\"autodesk.examples:test.set-1.0.0\", \"NamedProperty\");\n\t\t\tPropertyFactory.inheritsFrom(\"autodesk.examples:test.set-2.0.0\", \"NamedProperty\");\n\n\t\t\tconst expectedResults = {\n\t\t\t\t\"autodesk.examples:test.set-1.0.0\": {\n\t\t\t\t\tBaseProperty: true,\n\t\t\t\t\tAbstractStaticCollectionProperty: true,\n\t\t\t\t\tNamedProperty: true,\n\t\t\t\t},\n\t\t\t\t\"autodesk.examples:test.set-2.0.0\": {\n\t\t\t\t\tBaseProperty: true,\n\t\t\t\t\tAbstractStaticCollectionProperty: true,\n\t\t\t\t\tNamedProperty: true,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\texpect(PropertyFactory._inheritanceCache).to.deep.equal(expectedResults);\n\t\t});\n\n\t\tit(\"should refresh the cache when _reregister() is called\", () => {\n\t\t\tPropertyFactory.inheritsFrom(\"autodesk.examples:test.set-1.0.0\", \"NamedProperty\");\n\n\t\t\tPropertyFactory._reregister({\n\t\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\t\tinherits: \"NodeProperty\",\n\t\t\t});\n\t\t\texpect(PropertyFactory.inheritsFrom(\"autodesk.examples:test.set-1.0.0\", \"NodeProperty\"))\n\t\t\t\t.to.be.true;\n\n\t\t\tPropertyFactory._reregister({\n\t\t\t\ttypeid: \"autodesk.examples:test.set-2.0.0\",\n\t\t\t\tinherits: \"NodeProperty\",\n\t\t\t});\n\t\t\texpect(PropertyFactory.inheritsFrom(\"autodesk.examples:test.set-2.0.0\", \"NodeProperty\"))\n\t\t\t\t.to.be.true;\n\n\t\t\tconst expectedResults = {\n\t\t\t\t\"autodesk.examples:test.set-1.0.0\": {\n\t\t\t\t\tBaseProperty: true,\n\t\t\t\t\tAbstractStaticCollectionProperty: true,\n\t\t\t\t\tNodeProperty: true,\n\t\t\t\t},\n\t\t\t\t\"autodesk.examples:test.set-2.0.0\": {\n\t\t\t\t\tBaseProperty: true,\n\t\t\t\t\tAbstractStaticCollectionProperty: true,\n\t\t\t\t\tNodeProperty: true,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\texpect(PropertyFactory._inheritanceCache).to.deep.equal(expectedResults);\n\t\t});\n\n\t\tit(\"should flush the cache when _clear() is called\", () => {\n\t\t\texpect(PropertyFactory.inheritsFrom(\"autodesk.examples:test.set-1.0.0\", \"NamedProperty\"))\n\t\t\t\t.to.be.true;\n\t\t\texpect(PropertyFactory.inheritsFrom(\"autodesk.examples:test.set-2.0.0\", \"NamedProperty\"))\n\t\t\t\t.to.be.true;\n\n\t\t\tPropertyFactory._clear();\n\t\t\texpect(PropertyFactory._inheritanceCache).to.be.empty;\n\t\t});\n\t});\n});\n\ndescribe(\"Remote template scope collection\", () => {\n\tvar ColorID;\n\tvar scope = () => PropertyFactory._remoteScopedAndVersionedTemplates;\n\n\tbefore(() => {\n\t\tColorID = require(\"./validation/goodColorId\");\n\t});\n\n\tbeforeEach(() => {\n\t\tPropertyFactory._clear();\n\t});\n\n\tit(\"should collect registered remote templates in the scope.\", () => {\n\t\tconst scopeGuid = generateGUID();\n\t\tconst templateA = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testA:ColorID-1.0.0\",\n\t\t});\n\t\tconst templateB = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testB:ColorID-1.0.0\",\n\t\t});\n\n\t\tPropertyFactory._registerRemoteTemplate(templateA, scopeGuid);\n\t\tPropertyFactory._registerRemoteTemplate(templateB, scopeGuid);\n\n\t\texpect(scope().getCount()).to.be.equal(1);\n\t\texpect(scope().has(scopeGuid)).to.be.true;\n\t\texpect(scope().item(scopeGuid).getCount()).to.be.equal(2);\n\n\t\texpect(scope().item(scopeGuid).has(\"testA:ColorID\")).to.be.true;\n\t\texpect(scope().item(scopeGuid).item(\"testA:ColorID\").getKeys()).to.have.members([\"1.0.0\"]);\n\n\t\texpect(scope().item(scopeGuid).has(\"testB:ColorID\")).to.be.true;\n\t\texpect(scope().item(scopeGuid).item(\"testB:ColorID\").getKeys()).to.have.members([\"1.0.0\"]);\n\t});\n\n\tit(\"should remove a specific scope from the scope collection when _removeScope is called.\", () => {\n\t\tconst scopeGuidA = generateGUID();\n\t\tconst scopeGuidB = generateGUID();\n\t\tconst templateA = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testA:ColorID-1.0.0\",\n\t\t});\n\t\tconst templateB = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testB:ColorID-1.0.0\",\n\t\t});\n\n\t\tPropertyFactory._registerRemoteTemplate(templateA, scopeGuidA);\n\t\tPropertyFactory._registerRemoteTemplate(templateB, scopeGuidB);\n\n\t\texpect(scope().getCount()).to.be.equal(2);\n\t\texpect(scope().has(scopeGuidA)).to.be.true;\n\t\texpect(scope().has(scopeGuidB)).to.be.true;\n\n\t\tPropertyFactory._removeScope(scopeGuidA);\n\n\t\texpect(scope().getCount()).to.be.equal(1);\n\t\texpect(scope().has(scopeGuidA)).to.be.false;\n\t\texpect(scope().has(scopeGuidB)).to.be.true;\n\t});\n\n\tit(\"should be able to get a specific template from the scope collection.\", () => {\n\t\tconst scopeGuidA = generateGUID();\n\t\tconst scopeGuidB = generateGUID();\n\t\tconst templateA = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testA:ColorID-1.0.0\",\n\t\t});\n\t\tconst templateB = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testB:ColorID-1.0.0\",\n\t\t});\n\n\t\tPropertyFactory._registerRemoteTemplate(templateA, scopeGuidA);\n\t\tPropertyFactory._registerRemoteTemplate(templateB, scopeGuidB);\n\n\t\texpect(\n\t\t\tPropertyFactory._get(\"testA:ColorID-1.0.0\", undefined, scopeGuidA).typeid,\n\t\t).to.be.equal(\"testA:ColorID-1.0.0\");\n\n\t\texpect(\n\t\t\tPropertyFactory._get(\"testB:ColorID-1.0.0\", undefined, scopeGuidB).typeid,\n\t\t).to.be.equal(\"testB:ColorID-1.0.0\");\n\t});\n\n\tit(\"should be cleared when the PropertyFactory is.\", () => {\n\t\tconst scopeGuid = generateGUID();\n\t\tconst template = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"test:ColorID-1.0.0\",\n\t\t});\n\n\t\tPropertyFactory._registerRemoteTemplate(template, scopeGuid);\n\t\tPropertyFactory._clear();\n\n\t\texpect(scope().getCount()).to.be.equal(0);\n\t});\n});\n"]}
|
|
1
|
+
{"version":3,"file":"propertyFactory.spec.js","sourceRoot":"","sources":["../../src/test/propertyFactory.spec.js"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* globals sinon */\n\nconst { MSG } = require(\"@fluid-experimental/property-common\").constants;\nconst { generateGUID } = require(\"@fluid-experimental/property-common\").GuidUtils;\n\nconst { PropertyFactory } = require(\"..\");\nconst { StringProperty } = require(\"../properties/stringProperty\");\n\ndescribe(\"PropertyFactory\", function () {\n\tbeforeEach(() => {\n\t\tPropertyFactory._clear();\n\t});\n\n\tlet SimplePoint = {\n\t\ttypeid: \"SimpleTest:PointID-1.0.0\",\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tid: \"position\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"x\",\n\t\t\t\t\t\ttypeid: \"Float32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"y\",\n\t\t\t\t\t\ttypeid: \"Float32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"z\",\n\t\t\t\t\t\ttypeid: \"Float32\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"normal\",\n\t\t\t\ttypeid: \"Float32\",\n\t\t\t\tcontext: \"array\",\n\t\t\t\tsize: 3,\n\t\t\t},\n\t\t],\n\t};\n\n\tit(\"is not a function.\", function (done) {\n\t\texpect(PropertyFactory).to.not.be.a(\"function\");\n\t\texpect(PropertyFactory).to.be.an(\"object\");\n\t\tdone();\n\t});\n\n\tit(\"should validate a simple file\", function () {\n\t\tvar testFile1 = require(\"./validation/goodPointId\");\n\t\tvar result = PropertyFactory.validate(testFile1);\n\t\texpect(result.isValid).to.equal(true);\n\t});\n\n\tit(\"should fail an invalid file\", function () {\n\t\tvar testFile1 = require(\"./validation/badPrimitiveTypeid\");\n\t\tvar result = PropertyFactory.validate(testFile1);\n\t\texpect(result.isValid).to.equal(false);\n\t\texpect(result.errors.length).to.be.greaterThan(0);\n\t\texpect(result.unresolvedTypes.length).to.equal(1);\n\t});\n\n\tit(\"should create and initialize a property set\", function () {\n\t\tPropertyFactory.register(SimplePoint);\n\t\tvar goodPointTest = PropertyFactory.create(\"SimpleTest:PointID-1.0.0\");\n\t\texpect(goodPointTest.resolvePath(\"normal\")._dataArrayRef._buffer.length).to.equal(3);\n\n\t\tvar goodPoint = PropertyFactory.create(\"SimpleTest:PointID-1.0.0\", null, {\n\t\t\tposition: {\n\t\t\t\tx: 0.0,\n\t\t\t\ty: 1.0,\n\t\t\t\tz: 2.0,\n\t\t\t},\n\t\t\tnormal: [1.23, 2.3399999141693115, 3.45],\n\t\t});\n\n\t\texpect(goodPoint.resolvePath(\"normal\").get(1)).to.equal(2.3399999141693115);\n\t});\n\n\tit(\"should throw on unknown Template\", function () {\n\t\tvar insertUnknownPropertyChangeSet = {\n\t\t\tinsert: {\n\t\t\t\tUnknownProperty: {\n\t\t\t\t\ttest: {\n\t\t\t\t\t\tString: {\n\t\t\t\t\t\t\tunknownStringProperty: \"Hi There!\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t\tvar root = PropertyFactory.create(\"NodeProperty\");\n\t\texpect(function () {\n\t\t\troot.deserialize(insertUnknownPropertyChangeSet);\n\t\t}).to.throw();\n\t});\n\n\tit(\"should throw when trying to create with undefined as typeid\", function () {\n\t\tvar creationFunction = function () {\n\t\t\tPropertyFactory.create(undefined);\n\t\t};\n\t\texpect(creationFunction).to.throw(MSG.UNKNOWN_TYPEID_SPECIFIED + \"undefined\");\n\t});\n\n\tit(\"should throw when trying to create with a number as typeid\", function () {\n\t\tvar creationFunction = function () {\n\t\t\tPropertyFactory.create(1);\n\t\t};\n\t\texpect(creationFunction).to.throw(MSG.UNKNOWN_TYPEID_SPECIFIED + \"1\");\n\t});\n\n\tit(\"should support the creation of a polymorphic collection\", function () {\n\t\tvar testSet = {\n\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\tinherits: \"NamedProperty\",\n\t\t};\n\t\tPropertyFactory.register(testSet);\n\n\t\tvar testTemplate = {\n\t\t\ttypeid: \"autodesk.examples:polymorphic.collection.test-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{ id: \"testMap\", context: \"map\" },\n\t\t\t\t{ id: \"testSet\", typeid: \"autodesk.examples:test.set-1.0.0\", context: \"set\" },\n\t\t\t\t// TODO: add array as soon as polymorphic arrays are supported: {id: 'testArray', context:'array' }\n\t\t\t],\n\t\t};\n\n\t\tPropertyFactory._reregister(testTemplate);\n\t\tvar instance = PropertyFactory.create(\n\t\t\t\"autodesk.examples:polymorphic.collection.test-1.0.0\",\n\t\t);\n\n\t\texpect(instance._properties.testMap).to.exist;\n\t\texpect(instance._properties.testMap.getContext()).to.equal(\"map\");\n\t\texpect(instance._properties.testMap.getTypeid()).to.equal(\"BaseProperty\");\n\n\t\texpect(instance._properties.testSet).to.exist;\n\t\texpect(instance._properties.testSet.getContext()).to.equal(\"set\");\n\t\texpect(\n\t\t\tPropertyFactory.inheritsFrom(instance._properties.testSet.getTypeid(), \"NamedProperty\"),\n\t\t).to.equal(true);\n\t});\n\n\tit(\"should return correct template based on typeid\", function () {\n\t\tPropertyFactory.register(SimplePoint);\n\t\tvar returnedTemplate = JSON.parse(\n\t\t\tJSON.stringify(PropertyFactory.getTemplate(SimplePoint.typeid)),\n\t\t);\n\t\tif (!SimplePoint.annotation) {\n\t\t\tdelete returnedTemplate.annotation;\n\t\t}\n\t\tif (!SimplePoint.length) {\n\t\t\tdelete returnedTemplate.length;\n\t\t}\n\t\tdelete returnedTemplate._serializedParams;\n\n\t\texpect(returnedTemplate).to.deep.equal(SimplePoint);\n\t\texpect(PropertyFactory.getTemplate(\"Adsk.Library:Colors.ColorPalette-1.0.0\")).to.be\n\t\t\t.undefined;\n\t});\n\n\tdescribe(\"Inheritance\", function () {\n\t\tbeforeEach(function () {\n\t\t\tPropertyFactory._clear();\n\n\t\t\tvar Shape = {\n\t\t\t\ttypeid: \"SimpleTest:Shape-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"props\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"x\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t{ id: \"y\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"size\",\n\t\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t\t{ id: \"width\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t\t\t{ id: \"height\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"border\",\n\t\t\t\t\t\t\t\t\t\tproperties: [{ id: \"weight\", typeid: \"Int32\" }],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tPropertyFactory.register(Shape);\n\n\t\t\tvar Color = {\n\t\t\t\ttypeid: \"SimpleTest:Color-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"stroke\", typeid: \"String\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"fill\",\n\t\t\t\t\t\tproperties: [{ id: \"rgb\", typeid: \"String\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tPropertyFactory.register(Color);\n\n\t\t\tvar EntryWithOverriddenDefaults = {\n\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\", value: \"entry_string\" }],\n\t\t\t};\n\t\t\tPropertyFactory.register(EntryWithOverriddenDefaults);\n\n\t\t\tvar EntryWithOverriddenPolyDefaults = {\n\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:EntryWithOverriddenDefaults-1.0.0\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\", value: \"entry_string\" }],\n\t\t\t};\n\t\t\tPropertyFactory.register(EntryWithOverriddenPolyDefaults);\n\n\t\t\tvar DynamicWithOverriddenDefaults = {\n\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenDefaults-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"dynamic\",\n\t\t\t\t\t\tproperties: [{ id: \"dynamic_string\", typeid: \"String\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tPropertyFactory.register(DynamicWithOverriddenDefaults);\n\t\t});\n\n\t\tit(\"should allow the creation of an inherited type\", function () {\n\t\t\tvar Square = {\n\t\t\t\ttypeid: \"SimpleTest:Square-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\"],\n\t\t\t\tproperties: [{ id: \"area\", typeid: \"Float32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(Square);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:Square-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(2);\n\t\t\texpect(square.get(\"props\")).to.exist;\n\t\t\texpect(square.get(\"area\")).to.exist;\n\t\t});\n\n\t\tit(\"should inherit constants\", function () {\n\t\t\tvar ShapeWithConstant = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeWithConstant-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\"],\n\t\t\t\tconstants: [{ id: \"originX\", typeid: \"Int8\", value: 10 }],\n\t\t\t};\n\n\t\t\tvar SquareWithConstant = {\n\t\t\t\ttypeid: \"SimpleTest:SquareWithConstant-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:ShapeWithConstant-1.0.0\"],\n\t\t\t\tconstants: [{ id: \"originY\", typeid: \"Int8\", value: 20 }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ShapeWithConstant);\n\t\t\tPropertyFactory.register(SquareWithConstant);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:ShapeWithConstant-1.0.0\");\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:SquareWithConstant-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(3);\n\t\t\texpect(square.get(\"props\")).to.exist;\n\t\t\texpect(square.get(\"originX\")).to.exist;\n\t\t\texpect(square.get(\"originY\")).to.exist;\n\n\t\t\texpect(square.get(\"originX\").getValue()).to.equal(10);\n\t\t\texpect(square.get(\"originY\").getValue()).to.equal(20);\n\t\t});\n\n\t\tit(\"Will complete constants definition from inherited template\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const2\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: [\"hello\"],\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\tannotation: { description: \"The second constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest:template-2.0.0\",\n\t\t\t\tinherits: \"consttest:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const2\",\n\t\t\t\t\t\tvalue: [\"hello2\"],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(testedTemplate);\n\t\t\tPropertyFactory.register(template1);\n\n\t\t\tvar tested = PropertyFactory.create(\"consttest:template-2.0.0\");\n\t\t\texpect(tested._getChildrenCount()).to.equal(2);\n\t\t\texpect(tested.get(\"const1\")).to.exist;\n\t\t\texpect(tested.get(\"const2\")).to.exist;\n\t\t\texpect(tested.get(\"const1\").getValue()).to.equal(\"hello2\");\n\t\t\texpect(tested.get(\"const2\").getValues()).to.deep.equal([\"hello2\"]);\n\t\t});\n\n\t\tit(\"Will throw because typeid is still missing at creation\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest2:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const2\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest2:template-2.0.0\",\n\t\t\t\tinherits: \"consttest2:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(template1);\n\t\t\tPropertyFactory.register(testedTemplate);\n\n\t\t\ttry {\n\t\t\t\tPropertyFactory.create(\"consttest2:template-2.0.0\");\n\t\t\t} catch (error) {\n\t\t\t\texpect(error.message).to.include(\n\t\t\t\t\t'PF-043: Field \"typeid\" is required.' +\n\t\t\t\t\t\t' It is the \"typeid\" of the resulting PropertySets Template.const1.typeid',\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tit(\"Will throw because of a type mismatch when creating template\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest3:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar template2 = {\n\t\t\t\ttypeid: \"consttest3:template-2.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"Uint8\",\n\t\t\t\t\t\tvalue: 3,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest3:template-3.0.0\",\n\t\t\t\tinherits: [\"consttest3:template-2.0.0\", \"consttest3:template-1.0.0\"],\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(template2);\n\t\t\tPropertyFactory.register(template1);\n\t\t\tPropertyFactory.register(testedTemplate);\n\n\t\t\ttry {\n\t\t\t\tPropertyFactory.create(\"consttest3:template-3.0.0\");\n\t\t\t} catch (error) {\n\t\t\t\texpect(error.message).to.include(\"PF-001: Id already exists: const1\");\n\t\t\t}\n\t\t});\n\n\t\tit(\"Will fail if inheriting constants with the same id from multiple templates\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest4:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const2\",\n\t\t\t\t\t\ttypeid: \"Uint8\",\n\t\t\t\t\t\tvalue: 5,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar template2 = {\n\t\t\t\ttypeid: \"consttest4:template-2.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"bye\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest4:template-3.0.0\",\n\t\t\t\tinherits: [\"consttest4:template-1.0.0\", \"consttest4:template-2.0.0\"],\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const2\",\n\t\t\t\t\t\tvalue: 14,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(testedTemplate);\n\t\t\tPropertyFactory.register(template1);\n\t\t\tPropertyFactory.register(template2);\n\n\t\t\texpect(\n\t\t\t\tPropertyFactory.create.bind(PropertyFactory, \"consttest4:template-3.0.0\"),\n\t\t\t).to.throw(MSG.OVERWRITING_ID + \"const1\");\n\t\t});\n\n\t\tit(\"Will allow to register the same inherited template again\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest5:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest5:template-2.0.0\",\n\t\t\t\tinherits: \"consttest5:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(template1);\n\t\t\tPropertyFactory.register(testedTemplate);\n\t\t\tPropertyFactory.register(testedTemplate);\n\t\t});\n\n\t\tit(\"Will not allow to register a different template under the same id\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest6:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest6:template-2.0.0\",\n\t\t\t\tinherits: \"consttest6:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate2 = {\n\t\t\t\ttypeid: \"consttest6:template-2.0.0\",\n\t\t\t\tinherits: \"consttest6:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello3\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\ttry {\n\t\t\t\tPropertyFactory.register(template1);\n\t\t\t\tPropertyFactory.register(testedTemplate);\n\t\t\t\tPropertyFactory.register(testedTemplate2);\n\t\t\t\tthrow new Error(\"Should have failed\");\n\t\t\t} catch (error) {\n\t\t\t\texpect(error.message).to.include(\n\t\t\t\t\t\"PF-004: Template structures do not match for typeid: consttest6:template-2.0.0\",\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tit(\"Wont register if constant id is missing\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest7:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest7:template-2.0.0\",\n\t\t\t\tinherits: \"consttest7:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\ttry {\n\t\t\t\tPropertyFactory.register(template1);\n\t\t\t\tPropertyFactory.register(testedTemplate);\n\t\t\t\tthrow new Error(\"Should have failed\");\n\t\t\t} catch (error) {\n\t\t\t\texpect(error.message).to.include(\n\t\t\t\t\t\"PF-050: Failed to register typeid = consttest7:template-2.0.0\",\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tit(\"should allow inheriting from schemas with no properties defined\", function () {\n\t\t\tvar ShapeAbstract1 = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeAbstract1-1.0.0\",\n\t\t\t};\n\n\t\t\tvar ShapeAbstract2 = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeAbstract2-1.0.0\",\n\t\t\t\tproperties: [{ id: \"area\", properties: [] }, { id: \"color\" }],\n\t\t\t};\n\n\t\t\tvar SquareAbstract = {\n\t\t\t\ttypeid: \"SimpleTest:SquareAbstract-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:ShapeAbstract1-1.0.0\", \"SimpleTest:ShapeAbstract2-1.0.0\"],\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"originX\", properties: [] },\n\t\t\t\t\t{ id: \"originY\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"color\",\n\t\t\t\t\t\tproperties: [{ id: \"rgb\", typeid: \"Int64\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ShapeAbstract1);\n\t\t\tPropertyFactory.register(ShapeAbstract2);\n\t\t\tPropertyFactory.register(SquareAbstract);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:SquareAbstract-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(4);\n\t\t\texpect(square.get(\"area\")).to.exist;\n\t\t\texpect(square.get(\"color\")).to.exist;\n\t\t\texpect(square.get(\"originX\")).to.exist;\n\t\t\texpect(square.get(\"originY\")).to.exist;\n\t\t\texpect(square.get([\"color\", \"rgb\"])).to.exist;\n\t\t});\n\n\t\tit(\"should allow multiple inheritance\", function () {\n\t\t\tvar SquareWithColor = {\n\t\t\t\ttypeid: \"SimpleTest:SquareWithColor-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\", \"SimpleTest:Color-1.0.0\"],\n\t\t\t\tproperties: [{ id: \"area\", typeid: \"Float32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(SquareWithColor);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:SquareWithColor-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(4);\n\t\t\texpect(square.get(\"area\")).to.exist;\n\t\t\texpect(square.get(\"props\")).to.exist;\n\t\t\texpect(square.get(\"stroke\")).to.exist;\n\t\t\texpect(square.get(\"fill\")).to.exist;\n\t\t});\n\n\t\tit(\"should fail when inheriting from multiple types that have the same property name\", function () {\n\t\t\tvar Point = {\n\t\t\t\ttypeid: \"SimpleTest:Point-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"props\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"x\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t{ id: \"y\", typeid: \"Float32\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ShapeWithInheritanceError = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeWithInheritanceError-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\", \"SimpleTest:Point-1.0.0\"],\n\t\t\t\tproperties: [{ id: \"weight\", typeid: \"Float32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(Point);\n\t\t\tPropertyFactory.register(ShapeWithInheritanceError);\n\n\t\t\texpect(\n\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\"SimpleTest:ShapeWithInheritanceError-1.0.0\",\n\t\t\t\t),\n\t\t\t).to.throw(MSG.OVERWRITING_ID + \"props\");\n\t\t});\n\n\t\tit(\"should fail when overriding an inherited typed property\", function () {\n\t\t\tvar ShapeWithOverridesError = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeWithOverridesError-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\"],\n\t\t\t\tproperties: [{ id: \"props\", typeid: \"Float32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ShapeWithOverridesError);\n\n\t\t\texpect(\n\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\"SimpleTest:ShapeWithOverridesError-1.0.0\",\n\t\t\t\t),\n\t\t\t).to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n\t\t});\n\n\t\tit(\"should allow extending inherited nested untyped properties\", function () {\n\t\t\tvar SquareWithOverrides = {\n\t\t\t\ttypeid: \"SimpleTest:SquareWithOverrides-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\", \"SimpleTest:Color-1.0.0\"],\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"normal\", typeid: \"Float32\", context: \"array\", size: 3 },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"props\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"z\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"size\",\n\t\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t\t{ id: \"unit\", typeid: \"Int32\" },\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"border\",\n\t\t\t\t\t\t\t\t\t\tproperties: [{ id: \"color\", typeid: \"String\" }],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"fill\",\n\t\t\t\t\t\tproperties: [{ id: \"unit\", typeid: \"Int32\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(SquareWithOverrides);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:SquareWithOverrides-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(4);\n\t\t\texpect(square.get(\"normal\")).to.exist;\n\t\t\texpect(square.get(\"props\")).to.exist;\n\t\t\texpect(square.get(\"stroke\")).to.exist;\n\t\t\texpect(square.get(\"fill\")).to.exist;\n\n\t\t\texpect(square.get(\"props\")._getChildrenCount()).to.equal(4);\n\t\t\texpect(square.get([\"props\", \"x\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"y\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"z\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\"])).to.exist;\n\n\t\t\texpect(square.get([\"props\", \"size\"])._getChildrenCount()).to.equal(4);\n\t\t\texpect(square.get([\"props\", \"size\", \"unit\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\", \"border\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\", \"width\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\", \"height\"])).to.exist;\n\n\t\t\texpect(square.get([\"props\", \"size\", \"border\"])._getChildrenCount()).to.equal(2);\n\t\t\texpect(square.get([\"props\", \"size\", \"border\", \"color\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\", \"border\", \"weight\"])).to.exist;\n\n\t\t\texpect(square.get(\"fill\")._getChildrenCount()).to.equal(2);\n\t\t\texpect(square.get([\"fill\", \"rgb\"])).to.exist;\n\t\t\texpect(square.get([\"fill\", \"unit\"])).to.exist;\n\t\t});\n\n\t\tit(\"should support more than one level of inheritance\", function () {\n\t\t\tvar ShapeWithArea = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeWithArea-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\"],\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"props\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"area\",\n\t\t\t\t\t\t\t\tproperties: [{ id: \"length\", typeid: \"Float32\" }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar SquareWithArea = {\n\t\t\t\ttypeid: \"SimpleTest:SquareWithArea-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:ShapeWithArea-1.0.0\"],\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"normal\", typeid: \"String\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"props\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"color\", typeid: \"String\" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"area\",\n\t\t\t\t\t\t\t\tproperties: [{ id: \"unit\", typeid: \"String\" }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ShapeWithArea);\n\t\t\tPropertyFactory.register(SquareWithArea);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:SquareWithArea-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(2);\n\t\t\texpect(square.get(\"normal\")).to.exist;\n\t\t\texpect(square.get(\"props\")).to.exist;\n\n\t\t\texpect(square.get(\"props\")._getChildrenCount()).to.equal(5);\n\t\t\texpect(square.get([\"props\", \"x\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"y\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"color\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"area\"])).to.exist;\n\n\t\t\texpect(square.get([\"props\", \"area\"])._getChildrenCount()).to.equal(2);\n\t\t\texpect(square.get([\"props\", \"area\", \"unit\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"area\", \"length\"])).to.exist;\n\t\t});\n\n\t\tit('should work with properties named \"length\"', function () {\n\t\t\tvar DefaultInitialValue = {\n\t\t\t\ttypeid: \"autodesk.product:components.physicalProperties-0.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"mass\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"value\",\n\t\t\t\t\t\t\t\ttypeid: \"Float64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"unit\",\n\t\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"boundingBox\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"length\",\n\t\t\t\t\t\t\t\ttypeid: \"Float64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"width\",\n\t\t\t\t\t\t\t\ttypeid: \"Float64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"height\",\n\t\t\t\t\t\t\t\ttypeid: \"Float64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"unit\",\n\t\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"material\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tannotation: {\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Specialized component storing physical properties computed from a model.\",\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultInitialValue);\n\n\t\t\tvar prop = PropertyFactory.create(\n\t\t\t\t\"autodesk.product:components.physicalProperties-0.0.0\",\n\t\t\t\tnull,\n\t\t\t\t{\n\t\t\t\t\tmass: {\n\t\t\t\t\t\tvalue: 1.2,\n\t\t\t\t\t\tunit: \"units\",\n\t\t\t\t\t},\n\t\t\t\t\tboundingBox: {\n\t\t\t\t\t\tlength: 1.2,\n\t\t\t\t\t\twidth: 1.4,\n\t\t\t\t\t\theight: 34.2,\n\t\t\t\t\t\tunit: \"units\",\n\t\t\t\t\t},\n\t\t\t\t\tmaterial: \"ABS Plastic\",\n\t\t\t\t},\n\t\t\t);\n\n\t\t\texpect(prop.get(\"boundingBox\").get(\"length\").value).to.equal(1.2);\n\t\t});\n\n\t\tdescribe(\"Overriding default values\", function () {\n\t\t\tit(\"should allow overriding default values\", function () {\n\t\t\t\tvar MapNestedWithOverriddenDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nested\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar SetNestedWithOverriddenDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nested\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar ShapeWithOverriddenDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{ id: \"num\", typeid: \"Int8\", value: 1 },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\tvalue: [\"array_string_1\", \"array_string_2\"],\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\tvalue: [{ string: \"entry_string_poly\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"enum\",\n\t\t\t\t\t\t\ttypeid: \"Enum\",\n\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t{ id: \"solid\", value: 1 },\n\t\t\t\t\t\t\t\t{ id: \"dashed\", value: 2 },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvalue: \"solid\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"untyped\",\n\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\" },\n\t\t\t\t\t\t\t\t{ id: \"string\", typeid: \"String\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvalue: { string: \"untyped_string\", num: 1 },\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tnum: 1,\n\t\t\t\t\t\t\t\tdynamic: { dynamic_string: \"dynamic_string\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_primitive\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: 1,\n\t\t\t\t\t\t\t\tkey3: 3,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: { string: \"map_string_1\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_string_3\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: { string: \"map_poly_string_1\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_poly_string_3\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey1_1: { string: \"map_nested_1_string_1\" },\n\t\t\t\t\t\t\t\t\t\tkey1_3: { string: \"map_nested_1_string_3\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey3_1: { string: \"map_nested_3_string_1\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [{ string: \"set_string_1\" }, { string: \"set_string_2\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [{ string: \"set_poly_string_1\" }, { string: \"set_poly_string_1\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_1_string_1\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_1_string_2\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_3_string_1\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_3_string_2\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithOverriddenDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithOverriddenDefaults-1.0.0\"],\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{ id: \"num\", typeid: \"Int8\", value: 2 },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\tvalue: [\"array_string_1_inherited\", \"array_string_2_inherited\"],\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_poly_1_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_poly_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"enum\",\n\t\t\t\t\t\t\ttypeid: \"Enum\",\n\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t{ id: \"solid\", value: 1 },\n\t\t\t\t\t\t\t\t{ id: \"dashed\", value: 2 },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvalue: \"dashed\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"untyped\",\n\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\" },\n\t\t\t\t\t\t\t\t{ id: \"string\", typeid: \"String\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvalue: { string: \"untyped_string_inherited\", num: 2 },\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tnum: 2,\n\t\t\t\t\t\t\t\tdynamic: { dynamic_string: \"dynamic_string_inherited\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_primitive\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: 2,\n\t\t\t\t\t\t\t\tkey3: 3,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: { string: \"map_string_2_inherited\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_string_3_inherited\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"map_poly_string_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"map_poly_string_3_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey2_2: { string: \"map_nested_2_string_2_inherited\" },\n\t\t\t\t\t\t\t\t\t\tkey2_3: { string: \"map_nested_2_string_3_inherited\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey3_1: { string: \"map_nested_3_string_1_inherited\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{ string: \"set_string_2_inherited\" },\n\t\t\t\t\t\t\t\t{ string: \"set_string_3_inherited\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"set_poly_string_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"set_poly_string_3_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_2_string_1_inherited\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_2_string_2_inherited\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(MapNestedWithOverriddenDefaults);\n\t\t\t\tPropertyFactory.register(SetNestedWithOverriddenDefaults);\n\t\t\t\tPropertyFactory.register(ShapeWithOverriddenDefaults);\n\t\t\t\tPropertyFactory.register(SquareWithOverriddenDefaults);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:SquareWithOverriddenDefaults-1.0.0\");\n\n\t\t\t\texpect(instance._getChildrenCount()).to.equal(13);\n\t\t\t\texpect(instance.resolvePath(\"num\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()).and.eql([\n\t\t\t\t\t\"array_string_1_inherited\",\n\t\t\t\t\t\"array_string_2_inherited\",\n\t\t\t\t]);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues().length).to.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues()[0].string).to.eql(\n\t\t\t\t\t\"entry_string_poly_1_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues()[1].string).to.eql(\n\t\t\t\t\t\"entry_string_poly_2_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"enum\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"untyped.num\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"untyped.string\").getValue()).and.eql(\n\t\t\t\t\t\"untyped_string_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"template.num\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"template.dynamic.dynamic_string\").getValue()).and.eql(\n\t\t\t\t\t\"dynamic_string_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getIds().length).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getEntriesReadOnly().key2).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getEntriesReadOnly().key3).to.equal(3);\n\t\t\t\texpect(instance.resolvePath(\"map\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key2.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key3.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"map_poly\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map_poly\").getEntriesReadOnly().key2.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_poly_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map_poly\").getEntriesReadOnly().key3.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_poly_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"map_nest\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map_nest\").getEntriesReadOnly().key2.get(\"map_nested\").getIds()\n\t\t\t\t\t\t.length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray().length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_2_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[1]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_2_string_3_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map_nest\").getEntriesReadOnly().key3.get(\"map_nested\").getIds()\n\t\t\t\t\t\t.length,\n\t\t\t\t).to.equal(1);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key3.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_3_string_1_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set\").getIds().length).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[0].get(\"string\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_2_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[1].get(\"string\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_3_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"set_poly\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_poly\").getAsArray()[0].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_poly_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_poly\").getAsArray()[1].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_poly_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set_nest\").getIds().length).to.equal(1);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_nest\").getAsArray()[0].get(\"set_nested\").getIds().length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"set_nest\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"set_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"set_nested_2_string_1_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"set_nest\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"set_nested\")\n\t\t\t\t\t\t.getAsArray()[1]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"set_nested_2_string_2_inherited\");\n\t\t\t});\n\n\t\t\tit(\"should not allow overriding default values when typeid is different\", function () {\n\t\t\t\tvar ShapeWithDiffTypeidDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithDiffTypeidDefaults-1.0.0\",\n\t\t\t\t\tproperties: [{ id: \"num\", typeid: \"Int8\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithDiffTypeidDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithDiffTypeidDefaults-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithDiffTypeidDefaults-1.0.0\"],\n\t\t\t\t\tproperties: [{ id: \"num\", typeid: \"Int32\", value: 2 }],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ShapeWithDiffTypeidDefaults);\n\t\t\t\tPropertyFactory.register(SquareWithDiffTypeidDefaults);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:SquareWithDiffTypeidDefaults-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n\t\t\t});\n\n\t\t\tit(\"should not allow overriding default values when context is different\", function () {\n\t\t\t\tvar ShapeWithDiffContextDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithDiffContextDefaults-1.0.0\",\n\t\t\t\t\tproperties: [{ id: \"num\", typeid: \"Int8\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithDiffContextDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithDiffContextDefaults-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithDiffContextDefaults-1.0.0\"],\n\t\t\t\t\tproperties: [{ id: \"num\", typeid: \"Int8\", value: [1, 2], context: \"array\" }],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ShapeWithDiffContextDefaults);\n\t\t\t\tPropertyFactory.register(SquareWithDiffContextDefaults);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:SquareWithDiffContextDefaults-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"Overriding constants\", function () {\n\t\t\tit(\"should allow overriding constants\", function () {\n\t\t\t\tvar EntryWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tconstants: [{ id: \"string\", typeid: \"String\", value: \"entry_string\" }],\n\t\t\t\t};\n\n\t\t\t\tvar EntryWithOverriddenPolyConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:EntryWithOverriddenConstants-1.0.0\"],\n\t\t\t\t\tconstants: [{ id: \"string\", typeid: \"String\", value: \"entry_string\" }],\n\t\t\t\t};\n\n\t\t\t\tvar DynamicWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Uint32\", value: 1 }],\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"dynamic\",\n\t\t\t\t\t\t\tproperties: [{ id: \"dynamic_string\", typeid: \"String\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar MapNestedWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nested\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar SetNestedWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nested\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar ShapeWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{ id: \"num\", typeid: \"Int8\", value: 1 },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\tvalue: [\"array_string_1\", \"array_string_2\"],\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\tvalue: [{ string: \"entry_string_poly\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tnum: 1,\n\t\t\t\t\t\t\t\tdynamic: { dynamic_string: \"dynamic_string\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_primitive\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: 1,\n\t\t\t\t\t\t\t\tkey3: 3,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: { string: \"map_string_1\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_string_3\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: { string: \"map_poly_string_1\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_poly_string_3\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey1_1: { string: \"map_nested_1_string_1\" },\n\t\t\t\t\t\t\t\t\t\tkey1_3: { string: \"map_nested_1_string_3\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey3_1: { string: \"map_nested_3_string_1\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [{ string: \"set_string_1\" }, { string: \"set_string_2\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [{ string: \"set_poly_string_1\" }, { string: \"set_poly_string_1\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_1_string_1\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_1_string_2\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_3_string_1\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_3_string_2\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithOverriddenConstants-1.0.0\"],\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{ id: \"num\", typeid: \"Int8\", value: 2 },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\tvalue: [\"array_string_1_inherited\", \"array_string_2_inherited\"],\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_poly_1_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_poly_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tnum: 2,\n\t\t\t\t\t\t\t\tdynamic: { dynamic_string: \"dynamic_string_inherited\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_primitive\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: 2,\n\t\t\t\t\t\t\t\tkey3: 3,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: { string: \"map_string_2_inherited\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_string_3_inherited\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"map_poly_string_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"map_poly_string_3_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey2_2: { string: \"map_nested_2_string_2_inherited\" },\n\t\t\t\t\t\t\t\t\t\tkey2_3: { string: \"map_nested_2_string_3_inherited\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey3_1: { string: \"map_nested_3_string_1_inherited\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{ string: \"set_string_2_inherited\" },\n\t\t\t\t\t\t\t\t{ string: \"set_string_3_inherited\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"set_poly_string_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"set_poly_string_3_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_2_string_1_inherited\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_2_string_2_inherited\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(EntryWithOverriddenConstants);\n\t\t\t\tPropertyFactory.register(EntryWithOverriddenPolyConstants);\n\t\t\t\tPropertyFactory.register(DynamicWithOverriddenConstants);\n\t\t\t\tPropertyFactory.register(MapNestedWithOverriddenConstants);\n\t\t\t\tPropertyFactory.register(SetNestedWithOverriddenConstants);\n\t\t\t\tPropertyFactory.register(ShapeWithOverriddenConstants);\n\t\t\t\tPropertyFactory.register(SquareWithOverriddenConstants);\n\n\t\t\t\tvar instance = PropertyFactory.create(\n\t\t\t\t\t\"SimpleTest:SquareWithOverriddenConstants-1.0.0\",\n\t\t\t\t);\n\n\t\t\t\texpect(instance._getChildrenCount()).to.equal(11);\n\t\t\t\texpect(instance.resolvePath(\"num\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()).and.eql([\n\t\t\t\t\t\"array_string_1_inherited\",\n\t\t\t\t\t\"array_string_2_inherited\",\n\t\t\t\t]);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues().length).to.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues()[0].string).to.eql(\n\t\t\t\t\t\"entry_string_poly_1_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues()[1].string).to.eql(\n\t\t\t\t\t\"entry_string_poly_2_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"template.num\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"template.dynamic.dynamic_string\").getValue()).and.eql(\n\t\t\t\t\t\"dynamic_string_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getIds().length).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getEntriesReadOnly().key2).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getEntriesReadOnly().key3).to.equal(3);\n\t\t\t\texpect(instance.resolvePath(\"map\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key2.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key3.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"map_poly\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map_poly\").getEntriesReadOnly().key2.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_poly_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map_poly\").getEntriesReadOnly().key3.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_poly_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"map_nest\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map_nest\").getEntriesReadOnly().key2.get(\"map_nested\").getIds()\n\t\t\t\t\t\t.length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray().length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_2_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[1]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_2_string_3_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map_nest\").getEntriesReadOnly().key3.get(\"map_nested\").getIds()\n\t\t\t\t\t\t.length,\n\t\t\t\t).to.equal(1);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key3.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_3_string_1_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set\").getIds().length).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[0].get(\"string\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_2_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[1].get(\"string\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_3_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"set_poly\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_poly\").getAsArray()[0].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_poly_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_poly\").getAsArray()[1].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_poly_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set_nest\").getIds().length).to.equal(1);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_nest\").getAsArray()[0].get(\"set_nested\").getIds().length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"set_nest\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"set_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"set_nested_2_string_1_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"set_nest\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"set_nested\")\n\t\t\t\t\t\t.getAsArray()[1]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"set_nested_2_string_2_inherited\");\n\t\t\t});\n\n\t\t\tit(\"should allow overriding constants with typed values\", function () {\n\t\t\t\tvar EntryWithTypedOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tconstants: [{ id: \"string\", typeid: \"String\", value: \"entry_string\" }],\n\t\t\t\t};\n\n\t\t\t\tvar EntryWithTypedOverriddenPolyConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\"],\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{ id: \"string\", typeid: \"String\", value: \"entry_string\" },\n\t\t\t\t\t\t{ id: \"name\", typeid: \"String\", value: \"entry2\" },\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar ShapeWithTypedOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"entry1\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"entry2\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\tvalue: [{ string: \"entry_string\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: { string: \"map_string_1\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_string_3\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [{ string: \"set_string_1\" }, { string: \"set_string_1\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithTypedOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithTypedOverriddenConstants-1.0.0\"],\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"entry1\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_1\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"entry2\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_2\", name: \"entry2\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"entry_string_1_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"entry_string_1\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"entry_string_2_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"entry_string_2\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"map_string_2_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"map_string_2\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"map_string_3_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"map_string_3\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"set_string_2_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"set_string_2\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"set_string_3_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"set_string_3\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(EntryWithTypedOverriddenConstants);\n\t\t\t\tPropertyFactory.register(EntryWithTypedOverriddenPolyConstants);\n\t\t\t\tPropertyFactory.register(ShapeWithTypedOverriddenConstants);\n\t\t\t\tPropertyFactory.register(SquareWithTypedOverriddenConstants);\n\n\t\t\t\tvar instance = PropertyFactory.create(\n\t\t\t\t\t\"SimpleTest:SquareWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t);\n\n\t\t\t\texpect(instance._getChildrenCount()).to.equal(5);\n\t\t\t\texpect(instance.resolvePath(\"entry1\").getTypeid()).to.eql(\n\t\t\t\t\t\"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"entry1.string\").getValue()).to.eql(\"entry_string_1\");\n\t\t\t\texpect(instance.resolvePath(\"entry2\").getTypeid()).to.eql(\n\t\t\t\t\t\"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"entry2.name\").getValue()).to.eql(\"entry2\");\n\t\t\t\texpect(instance.resolvePath(\"entry2.string\").getValue()).to.eql(\"entry_string_2\");\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues().length).to.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()[0].name).to.eql(\"entry_string_1\");\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()[0].string).to.eql(\n\t\t\t\t\t\"entry_string_1_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()[1].name).to.eql(\"entry_string_2\");\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()[1].string).to.eql(\n\t\t\t\t\t\"entry_string_2_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"map\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key2.get(\"name\").getValue(),\n\t\t\t\t).to.equal(\"map_string_2\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key2.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key3.get(\"name\").getValue(),\n\t\t\t\t).to.equal(\"map_string_3\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key3.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set\").getIds().length).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[0].get(\"name\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_2\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[0].get(\"string\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_2_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[1].get(\"name\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_3\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[1].get(\"string\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_3_inherited\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should not allow overriding constants when typeid is different\", function () {\n\t\t\t\tvar ShapeWithDiffTypeidConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int8\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithDiffTypeidConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithDiffTypeidConstants-1.0.0\"],\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int32\", value: 2 }],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ShapeWithDiffTypeidConstants);\n\t\t\t\tPropertyFactory.register(SquareWithDiffTypeidConstants);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:SquareWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n\t\t\t});\n\n\t\t\tit(\"should not allow overriding constants when context is different\", function () {\n\t\t\t\tvar ShapeWithDiffContextConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithDiffContextConstants-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int8\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithDiffContextConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithDiffContextConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithDiffContextConstants-1.0.0\"],\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int8\", value: [1, 2], context: \"array\" }],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ShapeWithDiffContextConstants);\n\t\t\t\tPropertyFactory.register(SquareWithDiffContextConstants);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:SquareWithDiffContextConstants-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n\t\t\t});\n\n\t\t\tit(\"should not allow overriding constants with a typedValue that does not inherit from base type\", function () {\n\t\t\t\tvar Type1 = {\n\t\t\t\t\ttypeid: \"SimpleTest:Type1-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int32\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar Type2 = {\n\t\t\t\t\ttypeid: \"SimpleTest:Type2-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int32\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar ShapeWithDiffTypedTypeidConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"type\", typeid: \"SimpleTest:Type1-1.0.0\" }],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithDiffTypedTypeidConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithDiffTypeidConstants-1.0.0\"],\n\t\t\t\t\tconstants: [{ id: \"type\", typedValue: { typeid: \"SimpleTest:Type2-1.0.0\" } }],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(Type1);\n\t\t\t\tPropertyFactory.register(Type2);\n\t\t\t\tPropertyFactory.register(ShapeWithDiffTypedTypeidConstants);\n\t\t\t\tPropertyFactory.register(SquareWithDiffTypedTypeidConstants);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:SquareWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(\n\t\t\t\t\tMSG.TYPED_VALUES_MUST_DERIVE_FROM_BASE_TYPE +\n\t\t\t\t\t\t\"SimpleTest:Type2-1.0.0 must be a subclass of SimpleTest:Type1-1.0.0\",\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"Default values\", function () {\n\t\tit(\"should set default values for primitive property\", function () {\n\t\t\tvar DefaultPrimitive = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitive-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 111 },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\", value: true },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultPrimitive);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPrimitive-1.0.0\");\n\t\t\texpect(instance.get(\"num\").getValue()).to.equal(111);\n\t\t\texpect(instance.get(\"bool\").getValue()).to.equal(true);\n\t\t});\n\n\t\tit(\"should set a default value for a string property\", function () {\n\t\t\tvar DefaultString = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultString-1.0.0\",\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\", value: \"I am a string\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultString);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultString-1.0.0\");\n\t\t\texpect(instance.get(\"string\").getValue()).to.equal(\"I am a string\");\n\t\t});\n\n\t\tit(\"should set a default value for a primitive array property\", function () {\n\t\t\tvar DefaultArray = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultArray-1.0.0\",\n\t\t\t\tproperties: [{ id: \"array\", typeid: \"Int32\", value: [111, 222], context: \"array\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultArray);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultArray-1.0.0\");\n\t\t\texpect(instance.get(\"array\").get(0)).to.equal(111);\n\t\t\texpect(instance.get(\"array\").get(1)).to.equal(222);\n\t\t});\n\n\t\tit(\"should set a default value for a typed array property\", function () {\n\t\t\tvar DefaultTypedArrayEntry = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTypedArrayEntry-1.0.0\",\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar DefaultTypedArray = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTypedArray-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultTypedArrayEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\tvalue: [{ string: \"I am string 1\" }, { string: \"I am string 2\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultTypedArrayEntry);\n\t\t\tPropertyFactory.register(DefaultTypedArray);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultTypedArray-1.0.0\");\n\t\t\texpect(instance.get(\"array\").get(0).get(\"string\").value).to.equal(\"I am string 1\");\n\t\t\texpect(instance.get(\"array\").get(1).get(\"string\").value).to.equal(\"I am string 2\");\n\t\t});\n\n\t\tit(\"should set a default value for an enum property\", function () {\n\t\t\tvar DefaultEnum = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultEnum-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"enum\",\n\t\t\t\t\t\ttypeid: \"Enum\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"solid\", value: 111 },\n\t\t\t\t\t\t\t{ id: \"dashed\", value: 222 },\n\t\t\t\t\t\t\t{ id: \"dotted\", value: 333 },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tvalue: \"dashed\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultEnum);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultEnum-1.0.0\");\n\t\t\texpect(instance.get(\"enum\").getValue()).to.equal(222);\n\t\t});\n\n\t\tit(\"should set a default value for an untyped property, parent default value has precedence\", function () {\n\t\t\tvar DefaultUntyped = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultUntyped-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"untyped\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 222 },\n\t\t\t\t\t\t\t{ id: \"string\", typeid: \"String\", value: \"I should not be set\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tvalue: { string: \"I am a string\", num: 111 },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultUntyped);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultUntyped-1.0.0\");\n\n\t\t\texpect(instance.get(\"untyped\").get(\"string\").getValue()).to.equal(\"I am a string\");\n\t\t\texpect(instance.get(\"untyped\").get(\"num\").getValue()).to.equal(111);\n\t\t});\n\n\t\tit(\"should set a default value for a template, parent default value has precedence\", function () {\n\t\t\tvar DefaultTemplateEntry = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTemplateEntry-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: \"222\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"dynamic\",\n\t\t\t\t\t\tproperties: [{ id: \"dynamic_string\", typeid: \"String\" }],\n\t\t\t\t\t\tvalue: { dynamic_string: \"I should not be set\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar DefaultTemplate = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTemplate-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultTemplateEntry-1.0.0\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tnum: 111,\n\t\t\t\t\t\t\tdynamic: { dynamic_string: \"I am a string\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultTemplateEntry);\n\t\t\tPropertyFactory.register(DefaultTemplate);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultTemplate-1.0.0\");\n\n\t\t\texpect(instance.get(\"template\").get(\"num\").getValue()).to.equal(111);\n\t\t\texpect(\n\t\t\t\tinstance.get(\"template\").get(\"dynamic\").get(\"dynamic_string\").getValue(),\n\t\t\t).to.equal(\"I am a string\");\n\t\t});\n\n\t\tit(\"should set a default value for a set\", function () {\n\t\t\tvar DefaultSetEntry = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultSetEntry-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar DefaultSet = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultSet-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultSetEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\tvalue: [{ string: \"I am a string 1\" }, { string: \"I am a string 2\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultSetEntry);\n\t\t\tPropertyFactory.register(DefaultSet);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultSet-1.0.0\");\n\n\t\t\texpect(instance.get(\"set\").getAsArray().length).to.equal(2);\n\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 1\",\n\t\t\t);\n\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 2\",\n\t\t\t);\n\t\t});\n\n\t\tit(\"should set a default value for a primitive map\", function () {\n\t\t\tvar DefaultPrimitiveMap = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitiveMap-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tkey1: 111,\n\t\t\t\t\t\t\tkey2: 222,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultPrimitiveMap);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPrimitiveMap-1.0.0\");\n\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1).to.equal(111);\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2).to.equal(222);\n\t\t});\n\n\t\tit(\"should set a default value for a typed map\", function () {\n\t\t\tvar DefaultTypedMapEntry = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTypedMapEntry-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar DefaultTypedMap = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTypedMap-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultTypedMapEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tkey1: { string: \"I am a string 1\" },\n\t\t\t\t\t\t\tkey2: { string: \"I am a string 2\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultTypedMapEntry);\n\t\t\tPropertyFactory.register(DefaultTypedMap);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultTypedMap-1.0.0\");\n\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1.get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 1\",\n\t\t\t);\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2.get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 2\",\n\t\t\t);\n\t\t});\n\n\t\tit(\"initial values should override default values\", function () {\n\t\t\tvar DefaultInitialValue = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultInitialValue-1.0.0\",\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\", value: \"I should not be set\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultInitialValue);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultInitialValue-1.0.0\", null, {\n\t\t\t\tstring: \"I am a string\",\n\t\t\t});\n\n\t\t\texpect(instance.get(\"string\").getValue()).to.equal(\"I am a string\");\n\t\t});\n\n\t\tdescribe(\"#Polymorphic\", function () {\n\t\t\tvar DefaultPolyBase = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"num\", typeid: \"Uint32\", value: 111 }],\n\t\t\t};\n\n\t\t\tvar DefaultPolySub = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\tinherits: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 222 },\n\t\t\t\t\t{ id: \"str\", typeid: \"String\", value: \"Sub\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar DefaultPolySubSub = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultPolySubSub-1.0.0\",\n\t\t\t\tinherits: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 333 },\n\t\t\t\t\t{ id: \"num2\", typeid: \"Uint32\", value: 111 },\n\t\t\t\t\t{ id: \"str\", typeid: \"String\", value: \"SubSub\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tbeforeEach(function () {\n\t\t\t\tPropertyFactory._clear();\n\t\t\t\tPropertyFactory.register(DefaultPolyBase);\n\t\t\t\tPropertyFactory.register(DefaultPolySub);\n\t\t\t\tPropertyFactory.register(DefaultPolySubSub);\n\t\t\t});\n\n\t\t\tit(\"should set default polymorphic values for non-primitive properties\", function () {\n\t\t\t\tvar DefaultPolyContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 333, str: \"PolySub\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySubSub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 444, str: \"PolySubSub\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPolyContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPolyContainer-1.0.0\");\n\t\t\t\texpect(instance.get(\"polySub\").get(\"num\").getValue()).to.equal(333);\n\t\t\t\texpect(instance.get(\"polySub\").get(\"str\").getValue()).to.equal(\"PolySub\");\n\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"num\").getValue()).to.equal(444);\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"str\").getValue()).to.equal(\"PolySubSub\");\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"num2\").getValue()).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a default typedValue that doesnt have a typeid.\", function () {\n\t\t\t\tvar DefaultPolyNoTypeIdContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyNoTypeIdContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: { value: { num: 333, str: \"PolySub\" } },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPolyNoTypeIdContainer);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPolyNoTypeIdContainer-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(\n\t\t\t\t\tMSG.FIELD_TYPEID_IS_REQUIRED + \"typedValue SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should set a default polymorphic value for a non-primitive array\", function () {\n\t\t\t\tvar DefaultPolyArrayContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyArrayContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{ typeid: \"SimpleTest:DefaultPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPolyArrayContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPolyArrayContainer-1.0.0\");\n\t\t\t\texpect(instance.get(\"array\").get(0).get(\"num\").value).to.equal(222);\n\t\t\t\texpect(instance.get(\"array\").get(0).get(\"str\").value).to.equal(\"Sub\");\n\t\t\t\texpect(instance.get(\"array\").get(1).get(\"num\").value).to.equal(222);\n\t\t\t\texpect(instance.get(\"array\").get(1).get(\"str\").value).to.equal(\"ArrSub\");\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"num\").value).to.equal(333);\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"str\").value).to.equal(\"ArrSubSub\");\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"num2\").value).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should set a default polymorphic value for a non-primitive set\", function () {\n\t\t\t\tvar DefaultPolySetContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySetContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{ typeid: \"SimpleTest:DefaultPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPolySetContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPolySetContainer-1.0.0\");\n\n\t\t\t\texpect(instance.get(\"set\").getAsArray().length).to.equal(3);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"num\").getValue()).to.equal(222);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"str\").getValue()).to.equal(\"Sub\");\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"num\").getValue()).to.equal(222);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"str\").getValue()).to.equal(\"ArrSub\");\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"num\").getValue()).to.equal(333);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"ArrSubSub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"num2\").getValue()).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should set a default polymorphic value for a non-primitive map\", function () {\n\t\t\t\tvar DefaultPolyMapContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyMapContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey1: { typeid: \"SimpleTest:DefaultPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPolyMapContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPolyMapContainer-1.0.0\");\n\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1.get(\"num\").getValue()).to.equal(\n\t\t\t\t\t222,\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1.get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"Sub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2.get(\"num\").getValue()).to.equal(\n\t\t\t\t\t222,\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2.get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"ArrSub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key3.get(\"num\").getValue()).to.equal(\n\t\t\t\t\t333,\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key3.get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"ArrSubSub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key3.get(\"num2\").getValue()).to.equal(\n\t\t\t\t\t111,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail when setting default polymorphic values not derived from base type\", function () {\n\t\t\t\tvar DefaultPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPoly-1.0.0\",\n\t\t\t\t\tproperties: [{ id: \"num\", typeid: \"Uint32\", value: 111 }],\n\t\t\t\t};\n\n\t\t\t\tvar DefaultPolyUnderivedContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyUnderivedContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPoly-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 333 },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPoly);\n\t\t\t\tPropertyFactory.register(DefaultPolyUnderivedContainer);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPolyUnderivedContainer-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(\n\t\t\t\t\tMSG.TYPED_VALUES_MUST_DERIVE_FROM_BASE_TYPE + \"SimpleTest:DefaultPoly-1.0.0\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"@bugfix should use default value when value field is missing\", function () {\n\t\t\t\tvar DefaultPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:PolyWithNoValue-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"type\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: { typeid: \"SimpleTest:DefaultPolyBase-1.0.0\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPoly);\n\t\t\t\tvar prop = PropertyFactory.create(DefaultPoly.typeid);\n\n\t\t\t\texpect(prop.get(\"type\").get(\"num\").value).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive.\", function () {\n\t\t\t\tvar DefaultPrimitiveArrayPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitivePoly-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"int\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: { typeid: \"Int32\", value: 123 },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveArrayPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitivePoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"int\");\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive array.\", function () {\n\t\t\t\tvar DefaultPrimitiveArrayPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitiveArrayPoly-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: [{ typeid: \"Int32\", value: 123 }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveArrayPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitiveArrayPoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"array\");\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive map.\", function () {\n\t\t\t\tvar DefaultPrimitiveMapPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitiveMapPoly-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey1: { typeid: \"Int32\", value: 1 },\n\t\t\t\t\t\t\t\tkey2: { typeid: \"Int32\", value: 2 },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveMapPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitiveMapPoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"map\");\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"Constants\", function () {\n\t\tit(\"should set constant properties as readonly\", function () {\n\t\t\tvar ConstantReadonly = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantReadonly-1.0.0\",\n\t\t\t\tconstants: [{ id: \"num\", typeid: \"Uint32\", value: 111 }],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantReadonly);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantReadonly-1.0.0\");\n\n\t\t\texpect(instance.get(\"num\").getValue()).to.equal(111);\n\t\t\texpect(instance.get(\"num\")._isConstant).to.equal(true);\n\t\t\texpect(instance.get(\"num\")._checkIsNotReadOnly.bind(instance.get(\"num\"), true)).to.throw(\n\t\t\t\tMSG.MODIFICATION_OF_CONSTANT_PROPERTY,\n\t\t\t);\n\t\t\texpect(instance.get(\"num\").setValue.bind(instance.get(\"num\"), 1111)).to.throw(\n\t\t\t\tMSG.MODIFICATION_OF_CONSTANT_PROPERTY,\n\t\t\t);\n\t\t});\n\n\t\tit(\"should set constant child properties as readonly\", function () {\n\t\t\tvar ConstantChildReadonlyEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantChildReadonlyEntry-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"dynamic\",\n\t\t\t\t\t\tproperties: [{ id: \"dynamic_string\", typeid: \"String\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ConstantChildReadonly = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantChildReadonly-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantChildReadonlyEntry-1.0.0\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tnum: 111,\n\t\t\t\t\t\t\tdynamic: { dynamic_string: \"I am a string\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantChildReadonlyEntry);\n\t\t\tPropertyFactory.register(ConstantChildReadonly);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantChildReadonly-1.0.0\");\n\n\t\t\texpect(instance.get(\"template\").get(\"num\")._isConstant).to.equal(true);\n\t\t\texpect(instance.get(\"template\").get(\"dynamic\")._isConstant).to.equal(true);\n\t\t\texpect(\n\t\t\t\tinstance.get(\"template\").get(\"dynamic\").get(\"dynamic_string\")._isConstant,\n\t\t\t).to.equal(true);\n\t\t\texpect(\n\t\t\t\tinstance\n\t\t\t\t\t.get(\"template\")\n\t\t\t\t\t.get(\"num\")\n\t\t\t\t\t._checkIsNotReadOnly.bind(instance.get(\"template\").get(\"num\"), true),\n\t\t\t).to.throw(MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n\t\t\texpect(\n\t\t\t\tinstance\n\t\t\t\t\t.get(\"template\")\n\t\t\t\t\t.get(\"num\")\n\t\t\t\t\t.setValue.bind(instance.get(\"template\").get(\"num\"), 1111),\n\t\t\t).to.throw(MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n\t\t\texpect(\n\t\t\t\tinstance\n\t\t\t\t\t.get(\"template\")\n\t\t\t\t\t.get(\"dynamic\")\n\t\t\t\t\t.get(\"dynamic_string\")\n\t\t\t\t\t._checkIsNotReadOnly.bind(\n\t\t\t\t\t\tinstance.get(\"template\").get(\"dynamic\").get(\"dynamic_string\"),\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t),\n\t\t\t).to.throw(MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n\t\t\texpect(\n\t\t\t\tinstance\n\t\t\t\t\t.get(\"template\")\n\t\t\t\t\t.get(\"dynamic\")\n\t\t\t\t\t.get(\"dynamic_string\")\n\t\t\t\t\t.setValue.bind(\n\t\t\t\t\t\tinstance.get(\"template\").get(\"dynamic\").get(\"dynamic_string\"),\n\t\t\t\t\t\t\"should throw\",\n\t\t\t\t\t),\n\t\t\t).to.throw(MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n\t\t});\n\n\t\tit(\"should support primitive constants\", function () {\n\t\t\tvar ConstantPrimitive = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantPrimitive-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 111 },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\", value: true },\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantPrimitive);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantPrimitive-1.0.0\");\n\n\t\t\texpect(instance.get(\"num\").getValue()).to.equal(111);\n\t\t\texpect(instance.get(\"bool\").getValue()).to.equal(true);\n\t\t});\n\n\t\tit(\"should support typed constants\", function () {\n\t\t\tvar ConstantEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantEntry-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 111 },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\", value: true },\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tvar ConstantTyped = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTyped-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"entry\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantEntry-1.0.0\",\n\t\t\t\t\t\tvalue: { num: 222, bool: false },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default2\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantEntry);\n\t\t\tPropertyFactory.register(ConstantTyped);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantTyped-1.0.0\");\n\n\t\t\texpect(instance.get(\"entry\").get(\"num\").getValue()).to.equal(222);\n\t\t\texpect(instance.get(\"entry\").get(\"bool\").getValue()).to.equal(false);\n\t\t});\n\n\t\tit(\"should support string constants\", function () {\n\t\t\tvar ConstantString = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantString-1.0.0\",\n\t\t\t\tconstants: [{ id: \"string\", typeid: \"String\", value: \"I am a string\" }],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantString);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantString-1.0.0\");\n\n\t\t\texpect(instance.get(\"string\").getValue()).to.equal(\"I am a string\");\n\t\t});\n\n\t\tit(\"should support primitive array constants\", function () {\n\t\t\tvar ConstantArray = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantArray-1.0.0\",\n\t\t\t\tconstants: [{ id: \"array\", typeid: \"Int32\", value: [111, 222], context: \"array\" }],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantArray);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantArray-1.0.0\");\n\t\t\texpect(instance.get(\"array\").get(0)).to.equal(111);\n\t\t\texpect(instance.get(\"array\").get(1)).to.equal(222);\n\t\t});\n\n\t\tit(\"should support typed array constants\", function () {\n\t\t\tvar ConstantTypedArrayEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTypedArrayEntry-1.0.0\",\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar ConstantTypedArray = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTypedArray-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantTypedArrayEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\tvalue: [{ string: \"I am string 1\" }, { string: \"I am string 2\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantTypedArrayEntry);\n\t\t\tPropertyFactory.register(ConstantTypedArray);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantTypedArray-1.0.0\");\n\t\t\texpect(instance.get(\"array\").get(0).get(\"string\").value).to.equal(\"I am string 1\");\n\t\t\texpect(instance.get(\"array\").get(1).get(\"string\").value).to.equal(\"I am string 2\");\n\t\t});\n\n\t\tit(\"should support template constants\", function () {\n\t\t\tvar ConstantTemplateEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTemplateEntry-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"dynamic\",\n\t\t\t\t\t\tproperties: [{ id: \"dynamic_string\", typeid: \"String\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ConstantTemplate = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTemplate-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantTemplateEntry-1.0.0\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tnum: 111,\n\t\t\t\t\t\t\tdynamic: { dynamic_string: \"I am a string\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantTemplateEntry);\n\t\t\tPropertyFactory._reregister(ConstantTemplate);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantTemplate-1.0.0\");\n\n\t\t\texpect(instance.get(\"template\").get(\"num\").getValue()).to.equal(111);\n\t\t\texpect(\n\t\t\t\tinstance.get(\"template\").get(\"dynamic\").get(\"dynamic_string\").getValue(),\n\t\t\t).to.equal(\"I am a string\");\n\t\t});\n\n\t\tit(\"should support set constants\", function () {\n\t\t\tvar ConstantSetEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantSetEntry-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar ConstantSet = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantSet-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantSetEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\tvalue: [{ string: \"I am a string 1\" }, { string: \"I am a string 2\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantSetEntry);\n\t\t\tPropertyFactory.register(ConstantSet);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantSet-1.0.0\");\n\n\t\t\texpect(instance.get(\"set\").getAsArray().length).to.equal(2);\n\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 1\",\n\t\t\t);\n\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 2\",\n\t\t\t);\n\n\t\t\t// All instances should share the same constant objects\n\t\t\tvar instance2 = PropertyFactory.create(\"SimpleTest:ConstantSet-1.0.0\");\n\t\t\texpect(instance.get(\"set\") === instance2.get(\"set\")).to.be.true;\n\t\t});\n\n\t\tit(\"should support primitive map constants\", function () {\n\t\t\tvar ConstantPrimitiveMap = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantPrimitiveMap-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tkey1: 111,\n\t\t\t\t\t\t\tkey2: 222,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantPrimitiveMap);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantPrimitiveMap-1.0.0\");\n\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1).to.equal(111);\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2).to.equal(222);\n\t\t});\n\n\t\tit(\"should support typed map constants\", function () {\n\t\t\tvar ConstantTypedMapEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTypedMapEntry-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar ConstantTypedMap = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTypedMap-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantTypedMapEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tkey1: { string: \"I am a string 1\" },\n\t\t\t\t\t\t\tkey2: { string: \"I am a string 2\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantTypedMapEntry);\n\t\t\tPropertyFactory.register(ConstantTypedMap);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantTypedMap-1.0.0\");\n\n\t\t\texpect(instance.get(\"map\")._contextKeyType).to.equal(\"string\");\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1.get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 1\",\n\t\t\t);\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2.get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 2\",\n\t\t\t);\n\t\t});\n\n\t\tit(\"should support map constants with templateid keys\", function () {\n\t\t\tvar ConstantTemplate = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTemplate-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tcontextKeyType: \"typeid\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate1-1.0.0\": 1,\n\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate2-1.0.0\": -1,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\t\t\tPropertyFactory._reregister(ConstantTemplate);\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantTemplate-1.0.0\");\n\n\t\t\texpect(instance.get(\"map\")._contextKeyType).to.equal(\"typeid\");\n\t\t\texpect(instance.get(\"map\").get(\"SimpleTest:ConstantTemplate1-1.0.0\")).to.equal(1);\n\t\t\texpect(instance.get(\"map\").get(\"SimpleTest:ConstantTemplate2-1.0.0\")).to.equal(-1);\n\t\t});\n\n\t\tit(\"should support constants with no value defined\", function () {\n\t\t\tvar ConstantNoValueEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Int16\" },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\" },\n\t\t\t\t\t{ id: \"string\", typeid: \"String\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ConstantNoValue = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantNoValue-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"int\", typeid: \"Int32\" },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\" },\n\t\t\t\t\t{ id: \"string\", typeid: \"String\" },\n\t\t\t\t\t{ id: \"array\", typeid: \"Int16\", context: \"array\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"array_typed\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t},\n\t\t\t\t\t{ id: \"set\", typeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\", context: \"set\" },\n\t\t\t\t\t{ id: \"map\", typeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\", context: \"map\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ConstantNoValueInherited = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueInherited-1.0.0\",\n\t\t\t\tinherits: \"SimpleTest:ConstantNoValue-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"int\", typeid: \"Int32\", value: 100 },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\", value: true },\n\t\t\t\t\t{ id: \"string\", typeid: \"String\", value: \"I am a string\" },\n\t\t\t\t\t{ id: \"array\", typeid: \"Int16\", context: \"array\", value: [100, 200] },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"array_typed\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\tvalue: [{ num: 100 }, { num: 200, string: \"I am a string 2\", bool: true }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\tvalue: [{ num: 100 }, { num: 200, string: \"I am a string 2\", bool: true }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tkey1: { num: 100 },\n\t\t\t\t\t\t\tkey2: { num: 200, string: \"I am a string 2\", bool: true },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantNoValueEntry);\n\t\t\tPropertyFactory.register(ConstantNoValue);\n\t\t\tPropertyFactory.register(ConstantNoValueInherited);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantNoValue-1.0.0\");\n\t\t\tvar instanceInherited = PropertyFactory.create(\n\t\t\t\t\"SimpleTest:ConstantNoValueInherited-1.0.0\",\n\t\t\t);\n\n\t\t\texpect(instance.get(\"int\").getValue()).to.equal(0);\n\t\t\texpect(instance.get(\"bool\").getValue()).to.equal(false);\n\t\t\texpect(instance.get(\"string\").getValue()).to.equal(\"\");\n\t\t\texpect(instance.get(\"array\").getValues()).to.deep.equal([]);\n\t\t\texpect(instance.get(\"array_typed\").getValues()).to.deep.equal([]);\n\t\t\texpect(instance.get(\"set\").getAsArray()).to.deep.equal([]);\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly()).to.deep.equal({});\n\n\t\t\texpect(instanceInherited.get(\"int\").getValue()).to.equal(100);\n\t\t\texpect(instanceInherited.get(\"bool\").getValue()).to.equal(true);\n\t\t\texpect(instanceInherited.get(\"string\").getValue()).to.equal(\"I am a string\");\n\t\t\texpect(instanceInherited.get(\"array\").getValues()).to.deep.equal([100, 200]);\n\n\t\t\tlet arr = instanceInherited.get(\"array_typed\").getValues();\n\t\t\texpect(arr[0][\"num\"]).to.equal(100);\n\t\t\texpect(arr[0][\"string\"]).to.equal(\"\");\n\t\t\texpect(arr[0][\"bool\"]).to.equal(false);\n\t\t\texpect(arr[1][\"num\"]).to.equal(200);\n\t\t\texpect(arr[1][\"string\"]).to.equal(\"I am a string 2\");\n\t\t\texpect(arr[1][\"bool\"]).to.equal(true);\n\n\t\t\tlet set = instanceInherited.get(\"set\").getAsArray();\n\n\t\t\texpect(set[0].get(\"num\").getValue()).to.equal(100);\n\t\t\texpect(set[0].get(\"string\").getValue()).to.equal(\"\");\n\t\t\texpect(set[0].get(\"bool\").getValue()).to.equal(false);\n\t\t\texpect(set[1].get(\"num\").getValue()).to.equal(200);\n\t\t\texpect(set[1].get(\"string\").getValue()).to.equal(\"I am a string 2\");\n\t\t\texpect(set[1].get(\"bool\").getValue()).to.equal(true);\n\n\t\t\tlet map = instanceInherited.get(\"map\").getEntriesReadOnly();\n\t\t\texpect(map.key1.get(\"num\").getValue()).to.equal(100);\n\t\t\texpect(map.key1.get(\"string\").getValue()).to.equal(\"\");\n\t\t\texpect(map.key1.get(\"bool\").getValue()).to.equal(false);\n\t\t\texpect(map.key2.get(\"num\").getValue()).to.equal(200);\n\t\t\texpect(map.key2.get(\"string\").getValue()).to.equal(\"I am a string 2\");\n\t\t\texpect(map.key2.get(\"bool\").getValue()).to.equal(true);\n\t\t});\n\n\t\tdescribe(\"#Polymorphic\", function () {\n\t\t\tvar ConstantPolyBase = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tconstants: [{ id: \"num\", typeid: \"Uint32\", value: 111 }],\n\t\t\t};\n\n\t\t\tvar ConstantPolySub = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\tinherits: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 222 },\n\t\t\t\t\t{ id: \"str\", typeid: \"String\", value: \"Sub\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ConstantPolySubSub = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantPolySubSub-1.0.0\",\n\t\t\t\tinherits: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 333 },\n\t\t\t\t\t{ id: \"num2\", typeid: \"Uint32\", value: 111 },\n\t\t\t\t\t{ id: \"str\", typeid: \"String\", value: \"SubSub\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tbeforeEach(function () {\n\t\t\t\tPropertyFactory._clear();\n\t\t\t\tPropertyFactory.register(ConstantPolyBase);\n\t\t\t\tPropertyFactory.register(ConstantPolySub);\n\t\t\t\tPropertyFactory.register(ConstantPolySubSub);\n\t\t\t});\n\n\t\t\tit(\"should set constant polymorphic values for non-primitive constants\", function () {\n\t\t\t\tvar ConstantPolyContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 333, str: \"PolySub\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySubSub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 444, str: \"PolySubSub\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolyContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantPolyContainer-1.0.0\");\n\t\t\t\texpect(instance.get(\"polySub\").get(\"num\").getValue()).to.equal(333);\n\t\t\t\texpect(instance.get(\"polySub\").get(\"str\").getValue()).to.equal(\"PolySub\");\n\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"num\").getValue()).to.equal(444);\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"str\").getValue()).to.equal(\"PolySubSub\");\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"num2\").getValue()).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should pass when setting a constant typedValue that doesnt have a value.\", function () {\n\t\t\t\tvar ConstantPolyNoValueContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyNoValueContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: { typeid: \"SimpleTest:ConstantPolySub-1.0.0\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolyNoValueContainer);\n\t\t\t\tvar prop = PropertyFactory.create(\"SimpleTest:ConstantPolyNoValueContainer-1.0.0\");\n\n\t\t\t\texpect(prop.get(\"polySub\").get(\"str\").value).to.equal(\"Sub\");\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a constant typedValue that doesnt have a typeid.\", function () {\n\t\t\t\tvar ConstantPolyNoTypeIdContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyNoTypeIdContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: { value: { num: 333, str: \"PolySub\" } },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolyNoTypeIdContainer);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:ConstantPolyNoTypeIdContainer-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(\n\t\t\t\t\tMSG.FIELD_TYPEID_IS_REQUIRED + \"typedValue SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should set a constant polymorphic value for a non-primitive array\", function () {\n\t\t\t\tvar ConstantPolyArrayContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyArrayContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{ typeid: \"SimpleTest:ConstantPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolyArrayContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantPolyArrayContainer-1.0.0\");\n\t\t\t\texpect(instance.get(\"array\").get(0).get(\"num\").value).to.equal(222);\n\t\t\t\texpect(instance.get(\"array\").get(0).get(\"str\").value).to.equal(\"Sub\");\n\t\t\t\texpect(instance.get(\"array\").get(1).get(\"num\").value).to.equal(222);\n\t\t\t\texpect(instance.get(\"array\").get(1).get(\"str\").value).to.equal(\"ArrSub\");\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"num\").value).to.equal(333);\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"str\").value).to.equal(\"ArrSubSub\");\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"num2\").value).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should set a constant polymorphic value for a non-primitive set\", function () {\n\t\t\t\tvar ConstantPolySetContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySetContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{ typeid: \"SimpleTest:ConstantPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolySetContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantPolySetContainer-1.0.0\");\n\n\t\t\t\texpect(instance.get(\"set\").getAsArray().length).to.equal(3);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"num\").getValue()).to.equal(222);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"str\").getValue()).to.equal(\"Sub\");\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"num\").getValue()).to.equal(222);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"str\").getValue()).to.equal(\"ArrSub\");\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"num\").getValue()).to.equal(333);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"ArrSubSub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"num2\").getValue()).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should set a constant polymorphic value for a non-primitive map\", function () {\n\t\t\t\tvar ConstantPolyMapContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyMapContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey1: { typeid: \"SimpleTest:ConstantPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolyMapContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantPolyMapContainer-1.0.0\");\n\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1.get(\"num\").getValue()).to.equal(\n\t\t\t\t\t222,\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1.get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"Sub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2.get(\"num\").getValue()).to.equal(\n\t\t\t\t\t222,\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2.get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"ArrSub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key3.get(\"num\").getValue()).to.equal(\n\t\t\t\t\t333,\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key3.get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"ArrSubSub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key3.get(\"num2\").getValue()).to.equal(\n\t\t\t\t\t111,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail when setting constant polymorphic values not derived from base type\", function () {\n\t\t\t\tvar ConstantPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPoly-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Uint32\", value: 111 }],\n\t\t\t\t};\n\n\t\t\t\tvar ConstantPolyUnderivedContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyUnderivedContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPoly-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 333 },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPoly);\n\t\t\t\tPropertyFactory.register(ConstantPolyUnderivedContainer);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:ConstantPolyUnderivedContainer-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(\n\t\t\t\t\tMSG.TYPED_VALUES_MUST_DERIVE_FROM_BASE_TYPE + \"SimpleTest:ConstantPoly-1.0.0\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive.\", function () {\n\t\t\t\tvar DefaultPrimitiveArrayPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitivePoly-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"int\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: { typeid: \"Int32\", value: 123 },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveArrayPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitivePoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"int\");\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive array.\", function () {\n\t\t\t\tvar DefaultPrimitiveArrayPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitiveArrayPoly-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: [{ typeid: \"Int32\", value: 123 }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveArrayPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitiveArrayPoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"array\");\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive map.\", function () {\n\t\t\t\tvar DefaultPrimitiveMapPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitiveMapPoly-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey1: { typeid: \"Int32\", value: 1 },\n\t\t\t\t\t\t\t\tkey2: { typeid: \"Int32\", value: 2 },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveMapPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitiveMapPoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"map\");\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"InstanceOf Type Checking\", function () {\n\t\tit(\"Native types pass instanceOf check\", function () {\n\t\t\tvar contextSingleTypes = [\"NodeProperty\", \"Enum\"];\n\t\t\tvar propTypes = [\n\t\t\t\t\"String\",\n\t\t\t\t\"Bool\",\n\t\t\t\t\"Int8\",\n\t\t\t\t\"Uint8\",\n\t\t\t\t\"Int16\",\n\t\t\t\t\"Uint16\",\n\t\t\t\t\"Int32\",\n\t\t\t\t\"Int64\",\n\t\t\t\t\"Uint64\",\n\t\t\t\t\"Uint32\",\n\t\t\t\t\"Float32\",\n\t\t\t\t\"Float64\",\n\t\t\t\t\"Reference\",\n\t\t\t];\n\n\t\t\tvar contextSingleTypes = propTypes.concat([\"NodeProperty\", \"Enum\"]);\n\t\t\tfor (var i = 0; i < contextSingleTypes.length; ++i) {\n\t\t\t\tvar propType = contextSingleTypes[i];\n\t\t\t\texpect(PropertyFactory.instanceOf(PropertyFactory.create(propType), propType)).to.be\n\t\t\t\t\t.true;\n\t\t\t}\n\n\t\t\tfor (var j = 0; j < propTypes.length; ++j) {\n\t\t\t\tvar propType = propTypes[j];\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.instanceOf(PropertyFactory.create(propType, \"map\"), propType, \"map\"),\n\t\t\t\t).to.be.true;\n\t\t\t}\n\n\t\t\tvar contextArrayTypes = propTypes.concat([\"Enum\"]);\n\t\t\tfor (var k = 0; k < contextArrayTypes.length; ++k) {\n\t\t\t\tvar propType = contextArrayTypes[k];\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.instanceOf(\n\t\t\t\t\t\tPropertyFactory.create(propType, \"array\"),\n\t\t\t\t\t\tpropType,\n\t\t\t\t\t\t\"array\",\n\t\t\t\t\t),\n\t\t\t\t).to.be.true;\n\t\t\t}\n\t\t});\n\n\t\tit(\"instanceOf check succeeds for schema based properties and native typeids\", function () {\n\t\t\tPropertyFactory.register(SimplePoint);\n\t\t\texpect(\n\t\t\t\tPropertyFactory.instanceOf(PropertyFactory.create(SimplePoint.typeid), \"BaseProperty\"),\n\t\t\t).to.be.true;\n\n\t\t\tconst testEnum = {\n\t\t\t\tinherits: \"Enum\",\n\t\t\t\ttypeid: \"test:testEnum-1.0.0\",\n\t\t\t\tproperties: [{ id: \"test\", value: 1 }],\n\t\t\t};\n\t\t\tPropertyFactory.register(testEnum);\n\t\t\texpect(\n\t\t\t\tPropertyFactory.instanceOf(\n\t\t\t\t\tPropertyFactory.create(testEnum.typeid, \"array\"),\n\t\t\t\t\t\"Enum\",\n\t\t\t\t\t\"array\",\n\t\t\t\t),\n\t\t\t).to.be.true;\n\t\t});\n\n\t\tit(\"instanceOf check fails for non native typeids\", function () {\n\t\t\tPropertyFactory.register(SimplePoint);\n\t\t\texpect(\n\t\t\t\tPropertyFactory.instanceOf(\n\t\t\t\t\tPropertyFactory.create(SimplePoint.typeid),\n\t\t\t\t\tSimplePoint.typeid,\n\t\t\t\t),\n\t\t\t).to.be.false;\n\t\t});\n\t});\n});\n\ndescribe(\"Template registration\", function () {\n\tvar ColorID, myPropertyFactory;\n\n\tbefore(function () {\n\t\tColorID = require(\"./validation/goodColorId\");\n\t});\n\n\tbeforeEach(function () {\n\t\tthis.sinon = sinon.createSandbox();\n\t\tthis.sinon.stub(console, \"warn\");\n\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\t});\n\n\tafterEach(function () {\n\t\tthis.sinon.restore();\n\t});\n\n\tit(\"should register a versioned template\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t});\n\n\tit(\"should print a warning when registering an existing template that is not different from what is in the registry\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\texpect(console.warn.callCount).to.equal(1);\n\t});\n\n\tit(\"should accept registering a different template from what is in the registry if it is semantically equivalent\", function () {\n\t\tvar testPropertyTypeId = \"TEST:array.Float32-0.0.1\";\n\t\tvar ValuesTemplate1 = {\n\t\t\ttypeid: testPropertyTypeId,\n\t\t\tinherits: \"NamedProperty\",\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"values\",\n\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\ttypeid: \"Float32\",\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tvar ValuesTemplate2 = {\n\t\t\ttypeid: testPropertyTypeId,\n\t\t\tinherits: [\"NamedProperty\"],\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"values\",\n\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\ttypeid: \"Float32\",\n\t\t\t\t\tlength: 0,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tmyPropertyFactory.register(ValuesTemplate1);\n\t\texpect(myPropertyFactory.register.bind(myPropertyFactory, ValuesTemplate2)).to.not.throw();\n\t});\n\n\tit(\"should throw when registering an existing template version that is different from what is in the registry\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\texpect(\n\t\t\tmyPropertyFactory.register.bind(myPropertyFactory, ColorID[\"1-0-0\"].modified),\n\t\t).to.throw(Error);\n\t});\n\n\tit(\"should throw when registering an unversioned template\", function () {\n\t\texpect(\n\t\t\tmyPropertyFactory.register.bind(\n\t\t\t\tmyPropertyFactory,\n\t\t\t\trequire(\"./validation/badMissingSemverInTypeid\"),\n\t\t\t),\n\t\t).to.throw(Error);\n\t});\n\n\tit(\"should throw when registering an invalid versioned template\", function () {\n\t\texpect(\n\t\t\tmyPropertyFactory.register.bind(\n\t\t\t\tmyPropertyFactory,\n\t\t\t\trequire(\"./validation/badPrimitiveTypeid\"),\n\t\t\t),\n\t\t).to.throw(Error);\n\t});\n\n\tit(\"should throw when registering a primitive property through the public API\", function () {\n\t\texpect(\n\t\t\tmyPropertyFactory.register.bind(myPropertyFactory, \"String\", StringProperty),\n\t\t).to.throw(Error);\n\t});\n\n\tit(\"should register templates out of order without any warnings or errors\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].goodSemver);\n\t\tmyPropertyFactory.register(ColorID[\"1-0-1\"].goodSemver);\n\n\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].goodSemver);\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-0-1\"].goodSemver);\n\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"should register a new template with the PATCH version updated\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-0-1\"].goodSemver);\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"should register a new template with the MINOR version updated\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].goodSemver);\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"should print a warning when registering a new template with the wrong version updated\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].badSemver1);\n\n\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].badSemver2);\n\n\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-1-0\"].badSemver1, generateGUID());\n\n\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].badSemver2);\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-0\"].original, generateGUID());\n\n\t\texpect(console.warn.callCount).to.equal(4);\n\t});\n\n\tit(\"should register a new template with the MAJOR version updated\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"2-0-0\"]);\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"should register a versioned remote template\", function () {\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-0\"].original, generateGUID());\n\t});\n\n\t// biome-ignore format: https://github.com/biomejs/biome/issues/4202\n\tit(\n\t\t\"should pass when registering a versioned remote template that exists\" +\n\t\t\t\" in the local registry but is the same from what is locally registered\",\n\t\tfunction () {\n\t\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-0\"].original, generateGUID());\n\n\t\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\n\t\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-0\"].original, generateGUID());\n\t\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\t\texpect(console.warn.callCount).to.equal(0);\n\t\t},\n\t);\n\n\t// biome-ignore format: https://github.com/biomejs/biome/issues/4202\n\tit(\n\t\t\"should fail when registering a versioned remote template that exists\" +\n\t\t\t\" in the local registry but differs from what is locally registered\",\n\t\tfunction () {\n\t\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\t\texpect(\n\t\t\t\tmyPropertyFactory._registerRemoteTemplate.bind(\n\t\t\t\t\tmyPropertyFactory,\n\t\t\t\t\tColorID[\"1-0-0\"].modified,\n\t\t\t\t\tgenerateGUID(),\n\t\t\t\t),\n\t\t\t).to.throw(Error);\n\t\t},\n\t);\n\n\tit(\"should throw when registering an unversioned remote template\", function () {\n\t\texpect(\n\t\t\tmyPropertyFactory._registerRemoteTemplate.bind(\n\t\t\t\tmyPropertyFactory,\n\t\t\t\trequire(\"./validation/badMissingSemverInTypeid\"),\n\t\t\t\tgenerateGUID(),\n\t\t\t),\n\t\t).to.throw(Error);\n\t});\n\n\tit(\"should register a remote template even when there are other versions of the same template in the local registry\", function () {\n\t\tvar scope = generateGUID();\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"2-0-0\"]);\n\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-1-0\"].goodSemver, scope);\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-1\"].goodSemver, scope);\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"should register a local template even when there are other versions of the same template in the remote registry\", function () {\n\t\tvar scope = generateGUID();\n\t\tvar scope2 = generateGUID();\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-1-0\"].goodSemver, scope);\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-1\"].goodSemver, scope);\n\t\tmyPropertyFactory._registerRemoteTemplate(require(\"./validation/goodPointId\"), scope2);\n\t\tmyPropertyFactory._registerRemoteTemplate(\n\t\t\trequire(\"./validation/goodColorPalette\"),\n\t\t\tscope2,\n\t\t);\n\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"2-0-0\"]);\n\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"`registered` event is triggered when registering a template\", function (done) {\n\t\tvar typeid = \"test:schemaReg-1.0.0\";\n\t\tvar registeredEventListener = function (template) {\n\t\t\texpect(template).to.exist;\n\t\t\texpect(template.typeid).to.equal(typeid);\n\t\t\tdone();\n\t\t};\n\n\t\tPropertyFactory.addListener(\"registered\", registeredEventListener);\n\n\t\tPropertyFactory.register({\n\t\t\ttypeid: typeid,\n\t\t});\n\t\t// We remove the listener to avoid unnecessary calls for later templates registration.\n\t\tPropertyFactory.removeListener(\"registered\", registeredEventListener);\n\t});\n});\n\ndescribe('Only properties and constants that inherit from NamedProperty can have the \"set\" context', function () {\n\tbeforeEach(() => PropertyFactory._clear());\n\tafterEach(() => PropertyFactory._clear());\n\n\tdescribe(\"Properties\", () => {\n\t\tdescribe(\"should throw when trying to register a set not inheriting from a namedProperty\", () => {\n\t\t\tit(\"declared in a template\", () => {\n\t\t\t\tvar templateChild = {\n\t\t\t\t\ttypeid: \"adsk.test:anotherTestSchema-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar template = {\n\t\t\t\t\ttypeid: \"adsk.test:testSchema-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"something\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypeid: \"adsk.test:anotherTestSchema-1.0.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(template);\n\t\t\t\tPropertyFactory.register(templateChild);\n\n\t\t\t\texpect(() => {\n\t\t\t\t\tPropertyFactory.create(template.typeid);\n\t\t\t\t}).to.throw(MSG.SET_ONLY_NAMED_PROPS + templateChild.typeid);\n\t\t\t});\n\n\t\t\tit(\"declared in a template with two level of inheritance\", () => {\n\t\t\t\tvar itemParentTemplate = {\n\t\t\t\t\ttypeid: \"adsk.test:itemParent-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar itemTemplate = {\n\t\t\t\t\ttypeid: \"adsk.test:item-1.0.0\",\n\t\t\t\t\tinherits: \"adsk.test:itemParent-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar template = {\n\t\t\t\t\ttypeid: \"adsk.test:set-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"something\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypeid: \"adsk.test:item-1.0.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(itemParentTemplate);\n\t\t\t\tPropertyFactory.register(itemTemplate);\n\t\t\t\tPropertyFactory.register(template);\n\n\t\t\t\texpect(() => {\n\t\t\t\t\tPropertyFactory.create(template.typeid);\n\t\t\t\t}).to.throw(MSG.SET_ONLY_NAMED_PROPS + itemTemplate.typeid);\n\t\t\t});\n\n\t\t\tit(\"when passed as a parameter of the create method\", () => {\n\t\t\t\tvar template = {\n\t\t\t\t\ttypeid: \"adsk.test:test-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(template);\n\n\t\t\t\texpect(() => {\n\t\t\t\t\tPropertyFactory.create(template.typeid, \"set\");\n\t\t\t\t}).to.throw(MSG.SET_ONLY_NAMED_PROPS + template.typeid);\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"Constants\", () => {\n\t\tdescribe(\"should throw when trying to register a set not inheriting from a namedProperty\", () => {\n\t\t\tit(\"declared in a template\", () => {\n\t\t\t\tvar templateChild = {\n\t\t\t\t\ttypeid: \"adsk.test:anotherTestSchema-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar template = {\n\t\t\t\t\ttypeid: \"adsk.test:testSchema-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"something\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypeid: \"adsk.test:anotherTestSchema-1.0.0\",\n\t\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(template);\n\t\t\t\tPropertyFactory.register(templateChild);\n\n\t\t\t\texpect(() => {\n\t\t\t\t\tPropertyFactory.create(template.typeid);\n\t\t\t\t}).to.throw(MSG.SET_ONLY_NAMED_PROPS + templateChild.typeid);\n\t\t\t});\n\n\t\t\tit(\"declared in a template with two level of inheritance\", () => {\n\t\t\t\tvar itemParentTemplate = {\n\t\t\t\t\ttypeid: \"adsk.test:itemParent-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar itemTemplate = {\n\t\t\t\t\ttypeid: \"adsk.test:item-1.0.0\",\n\t\t\t\t\tinherits: \"adsk.test:itemParent-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar template = {\n\t\t\t\t\ttypeid: \"adsk.test:set-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"something\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypeid: \"adsk.test:item-1.0.0\",\n\t\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(itemParentTemplate);\n\t\t\t\tPropertyFactory.register(itemTemplate);\n\t\t\t\tPropertyFactory.register(template);\n\n\t\t\t\texpect(() => {\n\t\t\t\t\tPropertyFactory.create(template.typeid);\n\t\t\t\t}).to.throw(MSG.SET_ONLY_NAMED_PROPS + itemTemplate.typeid);\n\t\t\t});\n\t\t\tvar unit = {\n\t\t\t\tannotation: {\n\t\t\t\t\tdescription: \"A definite magnitude used as a standard of measurement.\",\n\t\t\t\t\tdoc: \"http://docs.adskunits.apiary.io/#introduction/definitions/measurement-units\",\n\t\t\t\t},\n\t\t\t\ttypeid: \"autodesk.unit:unit-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"name\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tvar quantity = {\n\t\t\t\tannotation: {\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"A quantity typically measured in a particular set of compatible units.\",\n\t\t\t\t},\n\t\t\t\ttypeid: \"autodesk.unit:quantity-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"name\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"units\",\n\t\t\t\t\t\ttypeid: \"autodesk.unit:unit-1.0.0\",\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\ttypedValue: [],\n\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\"List of all measurement units applicable to the measurable quantity.\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tvar area = {\n\t\t\t\tannotation: { description: \"Area.\" },\n\t\t\t\ttypeid: \"autodesk.unit.quantity:area-1.0.0\",\n\t\t\t\tinherits: [\"autodesk.unit:quantity-1.0.0\"],\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"name\", value: \"Area\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"units\",\n\t\t\t\t\t\ttypedValue: [{ typeid: \"autodesk.unit.unit:squareCentimeters-1.0.0\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tvar centimeter = {\n\t\t\t\tannotation: { description: \"Square centimeters.\" },\n\t\t\t\ttypeid: \"autodesk.unit.unit:squareCentimeters-1.0.0\",\n\t\t\t\tinherits: [\"autodesk.unit:unit-1.0.0\"],\n\t\t\t\tconstants: [{ id: \"name\", value: \"Square centimeters\" }],\n\t\t\t};\n\t\t\tit(\"@bugfix should support constant which inhirets from a polymorphic array\", () => {\n\t\t\t\tPropertyFactory.register(unit);\n\t\t\t\tPropertyFactory.register(quantity);\n\t\t\t\tPropertyFactory.register(area);\n\t\t\t\tPropertyFactory.register(centimeter);\n\t\t\t\tvar centimeterProp = PropertyFactory.create(centimeter.typeid);\n\n\t\t\t\tvar areaProp = PropertyFactory.create(area.typeid);\n\n\t\t\t\texpect(areaProp.get(\"units\").get(0).get(\"name\").value).to.equal(\n\t\t\t\t\tcentimeterProp.get(\"name\").value,\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t});\n});\n\ndescribe(\"Async validation\", function () {\n\tvar TemplateValidator;\n\tvar inheritsFromAsync = async function (child, ancestor) {\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tsetTimeout(function () {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(PropertyFactory.inheritsFrom(child, ancestor));\n\t\t\t\t} catch (error) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t}, 0);\n\t\t});\n\t};\n\n\tvar hasSchemaAsync = async function (typeid) {\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tsetTimeout(function () {\n\t\t\t\tresolve(PropertyFactory._has(typeid));\n\t\t\t}, 0);\n\t\t});\n\t};\n\n\tbefore(function () {\n\t\tTemplateValidator = require(\"@fluid-experimental/property-changeset\").TemplateValidator;\n\t});\n\n\tit(\"can validate asynchronously\", function () {\n\t\tvar templateValidator = new TemplateValidator({\n\t\t\tinheritsFromAsync: inheritsFromAsync,\n\t\t\thasSchemaAsync: hasSchemaAsync,\n\t\t});\n\n\t\tvar templatePrevious = JSON.parse(JSON.stringify(require(\"./validation/goodPointId\")));\n\t\tvar template = JSON.parse(JSON.stringify(templatePrevious));\n\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-0.9.9\";\n\t\treturn templateValidator.validateAsync(template, templatePrevious).then(function (result) {\n\t\t\texpect(result).property(\"isValid\", false);\n\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\texpect(result.errors[0].message).to.have.string(MSG.VERSION_REGRESSION_1);\n\t\t});\n\t});\n\n\tit(\"can perform context validation asynchronously\", function (done) {\n\t\tvar templateValidator = new TemplateValidator({\n\t\t\tinheritsFromAsync: inheritsFromAsync,\n\t\t\thasSchemaAsync: hasSchemaAsync,\n\t\t});\n\n\t\t// Doesn't inherit from 'NamedProperty'. Will cause an error\n\t\tvar grandParentSchema = {\n\t\t\ttypeid: \"test:grandparentschema-1.0.0\",\n\t\t};\n\n\t\tvar parentSchema = {\n\t\t\ttypeid: \"test:parentschema-1.0.0\",\n\t\t\tinherits: [\"test:grandparentschema-1.0.0\"],\n\t\t};\n\n\t\tvar childSchema = {\n\t\t\ttypeid: \"test:childchema-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"set\",\n\t\t\t\t\ttypeid: \"test:parentschema-1.0.0\",\n\t\t\t\t\tcontext: \"set\",\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tPropertyFactory.register(grandParentSchema);\n\t\tPropertyFactory.register(parentSchema);\n\n\t\ttemplateValidator\n\t\t\t.validateAsync(childSchema)\n\t\t\t.then(function (result) {\n\t\t\t\tdone(new Error(\"Should not be valid!\"));\n\t\t\t})\n\t\t\t.catch(function (error) {\n\t\t\t\texpect(error).to.exist;\n\t\t\t\tdone();\n\t\t\t});\n\t});\n});\n\ndescribe(\"inheritsFrom() method\", () => {\n\tbeforeEach(() => {\n\t\tPropertyFactory._clear();\n\t\tPropertyFactory.register([\n\t\t\t{\n\t\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\t\tinherits: \"NamedProperty\",\n\t\t\t},\n\t\t]);\n\t});\n\n\tit(\"should recognize that the Int8 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Int8\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Uint8 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Uint8\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Int16 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Int16\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Uint16 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Uint16\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Int32 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Int32\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Uint32 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Uint32\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Float32 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Float32\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Int64 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Int64\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Uint64 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Uint64\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Float64 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Float64\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Bool only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Bool\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Reference only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Reference\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Enum only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Enum\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the String inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"String\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NodeProperty inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NodeProperty\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the ContainerProperty inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"ContainerProperty\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NamedProperty inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NamedProperty\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NamedNodeProperty inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NamedNodeProperty\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NodeProperty inherits from ContainerProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NodeProperty\", \"ContainerProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NamedProperty inherits from ContainerProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NamedProperty\", \"ContainerProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the String inherits from ContainerProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"String\", \"ContainerProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NamedNodeProperty inherits from NamedProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NamedNodeProperty\", \"NamedProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NamedNodeProperty inherits from NodeProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NamedNodeProperty\", \"NodeProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the test set that inherits from NamedNodeProperty also inherits from BaseProperty\", () => {\n\t\tPropertyFactory._reregister({\n\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\tinherits: \"NamedNodeProperty\",\n\t\t});\n\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\"BaseProperty\",\n\t\t);\n\n\t\texpect(result).to.be.true;\n\t});\n\n\t// biome-ignore format: https://github.com/biomejs/biome/issues/4202\n\tit(\n\t\t\"should recognize that the test set that inherits from NamedNodeProperty\" +\n\t\t\t\" also inherits from AbstractStaticCollectionProperty\",\n\t\t() => {\n\t\t\tPropertyFactory._reregister({\n\t\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\t\tinherits: \"NamedNodeProperty\",\n\t\t\t});\n\t\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\t\"AbstractStaticCollectionProperty\",\n\t\t\t);\n\n\t\t\texpect(result).to.be.true;\n\t\t},\n\t);\n\n\tit(\"should recognize that the test set that inherits from NamedNodeProperty also inherits from NodeProperty\", () => {\n\t\tPropertyFactory._reregister({\n\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\tinherits: \"NamedNodeProperty\",\n\t\t});\n\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\"NodeProperty\",\n\t\t);\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the test set that inherits from NamedNodeProperty also inherits from NamedProperty\", () => {\n\t\tPropertyFactory._reregister({\n\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\tinherits: \"NamedNodeProperty\",\n\t\t});\n\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\"NamedProperty\",\n\t\t);\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the testSet doesn't inherits from foe\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"autodesk.examples:test.set-1.0.0\", \"foe\");\n\n\t\texpect(result).to.be.false;\n\t});\n\n\tit(\"should return true if in_templateTypeid = in_baseTypeid\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t);\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should return false if in_templateTypeid = in_baseTypeid but in_options.includeSelf is false\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t{ includeSelf: false },\n\t\t);\n\n\t\texpect(result).to.be.false;\n\t});\n\n\tdescribe(\"Caching\", () => {\n\t\tbeforeEach(() => {\n\t\t\t// add a second schema for the cache tests\n\t\t\tPropertyFactory.register({\n\t\t\t\ttypeid: \"autodesk.examples:test.set-2.0.0\",\n\t\t\t\tinherits: \"NamedProperty\",\n\t\t\t});\n\t\t});\n\n\t\tit(\"should cache results\", () => {\n\t\t\tPropertyFactory.inheritsFrom(\"autodesk.examples:test.set-1.0.0\", \"NamedProperty\");\n\t\t\tPropertyFactory.inheritsFrom(\"autodesk.examples:test.set-2.0.0\", \"NamedProperty\");\n\n\t\t\tconst expectedResults = {\n\t\t\t\t\"autodesk.examples:test.set-1.0.0\": {\n\t\t\t\t\tBaseProperty: true,\n\t\t\t\t\tAbstractStaticCollectionProperty: true,\n\t\t\t\t\tNamedProperty: true,\n\t\t\t\t},\n\t\t\t\t\"autodesk.examples:test.set-2.0.0\": {\n\t\t\t\t\tBaseProperty: true,\n\t\t\t\t\tAbstractStaticCollectionProperty: true,\n\t\t\t\t\tNamedProperty: true,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\texpect(PropertyFactory._inheritanceCache).to.deep.equal(expectedResults);\n\t\t});\n\n\t\tit(\"should refresh the cache when _reregister() is called\", () => {\n\t\t\tPropertyFactory.inheritsFrom(\"autodesk.examples:test.set-1.0.0\", \"NamedProperty\");\n\n\t\t\tPropertyFactory._reregister({\n\t\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\t\tinherits: \"NodeProperty\",\n\t\t\t});\n\t\t\texpect(PropertyFactory.inheritsFrom(\"autodesk.examples:test.set-1.0.0\", \"NodeProperty\"))\n\t\t\t\t.to.be.true;\n\n\t\t\tPropertyFactory._reregister({\n\t\t\t\ttypeid: \"autodesk.examples:test.set-2.0.0\",\n\t\t\t\tinherits: \"NodeProperty\",\n\t\t\t});\n\t\t\texpect(PropertyFactory.inheritsFrom(\"autodesk.examples:test.set-2.0.0\", \"NodeProperty\"))\n\t\t\t\t.to.be.true;\n\n\t\t\tconst expectedResults = {\n\t\t\t\t\"autodesk.examples:test.set-1.0.0\": {\n\t\t\t\t\tBaseProperty: true,\n\t\t\t\t\tAbstractStaticCollectionProperty: true,\n\t\t\t\t\tNodeProperty: true,\n\t\t\t\t},\n\t\t\t\t\"autodesk.examples:test.set-2.0.0\": {\n\t\t\t\t\tBaseProperty: true,\n\t\t\t\t\tAbstractStaticCollectionProperty: true,\n\t\t\t\t\tNodeProperty: true,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\texpect(PropertyFactory._inheritanceCache).to.deep.equal(expectedResults);\n\t\t});\n\n\t\tit(\"should flush the cache when _clear() is called\", () => {\n\t\t\texpect(PropertyFactory.inheritsFrom(\"autodesk.examples:test.set-1.0.0\", \"NamedProperty\"))\n\t\t\t\t.to.be.true;\n\t\t\texpect(PropertyFactory.inheritsFrom(\"autodesk.examples:test.set-2.0.0\", \"NamedProperty\"))\n\t\t\t\t.to.be.true;\n\n\t\t\tPropertyFactory._clear();\n\t\t\texpect(PropertyFactory._inheritanceCache).to.be.empty;\n\t\t});\n\t});\n});\n\ndescribe(\"Remote template scope collection\", () => {\n\tvar ColorID;\n\tvar scope = () => PropertyFactory._remoteScopedAndVersionedTemplates;\n\n\tbefore(() => {\n\t\tColorID = require(\"./validation/goodColorId\");\n\t});\n\n\tbeforeEach(() => {\n\t\tPropertyFactory._clear();\n\t});\n\n\tit(\"should collect registered remote templates in the scope.\", () => {\n\t\tconst scopeGuid = generateGUID();\n\t\tconst templateA = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testA:ColorID-1.0.0\",\n\t\t});\n\t\tconst templateB = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testB:ColorID-1.0.0\",\n\t\t});\n\n\t\tPropertyFactory._registerRemoteTemplate(templateA, scopeGuid);\n\t\tPropertyFactory._registerRemoteTemplate(templateB, scopeGuid);\n\n\t\texpect(scope().getCount()).to.be.equal(1);\n\t\texpect(scope().has(scopeGuid)).to.be.true;\n\t\texpect(scope().item(scopeGuid).getCount()).to.be.equal(2);\n\n\t\texpect(scope().item(scopeGuid).has(\"testA:ColorID\")).to.be.true;\n\t\texpect(scope().item(scopeGuid).item(\"testA:ColorID\").getKeys()).to.have.members([\"1.0.0\"]);\n\n\t\texpect(scope().item(scopeGuid).has(\"testB:ColorID\")).to.be.true;\n\t\texpect(scope().item(scopeGuid).item(\"testB:ColorID\").getKeys()).to.have.members([\"1.0.0\"]);\n\t});\n\n\tit(\"should remove a specific scope from the scope collection when _removeScope is called.\", () => {\n\t\tconst scopeGuidA = generateGUID();\n\t\tconst scopeGuidB = generateGUID();\n\t\tconst templateA = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testA:ColorID-1.0.0\",\n\t\t});\n\t\tconst templateB = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testB:ColorID-1.0.0\",\n\t\t});\n\n\t\tPropertyFactory._registerRemoteTemplate(templateA, scopeGuidA);\n\t\tPropertyFactory._registerRemoteTemplate(templateB, scopeGuidB);\n\n\t\texpect(scope().getCount()).to.be.equal(2);\n\t\texpect(scope().has(scopeGuidA)).to.be.true;\n\t\texpect(scope().has(scopeGuidB)).to.be.true;\n\n\t\tPropertyFactory._removeScope(scopeGuidA);\n\n\t\texpect(scope().getCount()).to.be.equal(1);\n\t\texpect(scope().has(scopeGuidA)).to.be.false;\n\t\texpect(scope().has(scopeGuidB)).to.be.true;\n\t});\n\n\tit(\"should be able to get a specific template from the scope collection.\", () => {\n\t\tconst scopeGuidA = generateGUID();\n\t\tconst scopeGuidB = generateGUID();\n\t\tconst templateA = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testA:ColorID-1.0.0\",\n\t\t});\n\t\tconst templateB = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testB:ColorID-1.0.0\",\n\t\t});\n\n\t\tPropertyFactory._registerRemoteTemplate(templateA, scopeGuidA);\n\t\tPropertyFactory._registerRemoteTemplate(templateB, scopeGuidB);\n\n\t\texpect(\n\t\t\tPropertyFactory._get(\"testA:ColorID-1.0.0\", undefined, scopeGuidA).typeid,\n\t\t).to.be.equal(\"testA:ColorID-1.0.0\");\n\n\t\texpect(\n\t\t\tPropertyFactory._get(\"testB:ColorID-1.0.0\", undefined, scopeGuidB).typeid,\n\t\t).to.be.equal(\"testB:ColorID-1.0.0\");\n\t});\n\n\tit(\"should be cleared when the PropertyFactory is.\", () => {\n\t\tconst scopeGuid = generateGUID();\n\t\tconst template = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"test:ColorID-1.0.0\",\n\t\t});\n\n\t\tPropertyFactory._registerRemoteTemplate(template, scopeGuid);\n\t\tPropertyFactory._clear();\n\n\t\texpect(scope().getCount()).to.be.equal(0);\n\t});\n});\n"]}
|