@fluid-experimental/property-properties 2.0.0-internal.3.0.2 → 2.0.0-internal.3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/README.md +1 -0
  2. package/dist/containerSerializer.d.ts.map +1 -1
  3. package/dist/containerSerializer.js +5 -5
  4. package/dist/containerSerializer.js.map +1 -1
  5. package/dist/enableValidations.js.map +1 -1
  6. package/dist/index.d.ts +19 -19
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/properties/abstractStaticCollectionProperty.d.ts +10 -10
  10. package/dist/properties/abstractStaticCollectionProperty.d.ts.map +1 -1
  11. package/dist/properties/abstractStaticCollectionProperty.js +70 -53
  12. package/dist/properties/abstractStaticCollectionProperty.js.map +1 -1
  13. package/dist/properties/arrayProperty.d.ts.map +1 -1
  14. package/dist/properties/arrayProperty.js +152 -103
  15. package/dist/properties/arrayProperty.js.map +1 -1
  16. package/dist/properties/baseProperty.d.ts +4 -4
  17. package/dist/properties/baseProperty.d.ts.map +1 -1
  18. package/dist/properties/baseProperty.js +69 -47
  19. package/dist/properties/baseProperty.js.map +1 -1
  20. package/dist/properties/boolProperty.d.ts.map +1 -1
  21. package/dist/properties/boolProperty.js +3 -3
  22. package/dist/properties/boolProperty.js.map +1 -1
  23. package/dist/properties/containerProperty.d.ts +8 -8
  24. package/dist/properties/containerProperty.d.ts.map +1 -1
  25. package/dist/properties/containerProperty.js +33 -26
  26. package/dist/properties/containerProperty.js.map +1 -1
  27. package/dist/properties/enumArrayProperty.d.ts.map +1 -1
  28. package/dist/properties/enumArrayProperty.js +14 -14
  29. package/dist/properties/enumArrayProperty.js.map +1 -1
  30. package/dist/properties/enumProperty.d.ts.map +1 -1
  31. package/dist/properties/enumProperty.js +17 -17
  32. package/dist/properties/enumProperty.js.map +1 -1
  33. package/dist/properties/floatProperties.js +4 -4
  34. package/dist/properties/floatProperties.js.map +1 -1
  35. package/dist/properties/index.d.ts +23 -23
  36. package/dist/properties/index.d.ts.map +1 -1
  37. package/dist/properties/index.js.map +1 -1
  38. package/dist/properties/indexedCollectionBaseProperty.d.ts.map +1 -1
  39. package/dist/properties/indexedCollectionBaseProperty.js +47 -37
  40. package/dist/properties/indexedCollectionBaseProperty.js.map +1 -1
  41. package/dist/properties/intProperties.d.ts.map +1 -1
  42. package/dist/properties/intProperties.js +10 -10
  43. package/dist/properties/intProperties.js.map +1 -1
  44. package/dist/properties/lazyLoadedProperties.js.map +1 -1
  45. package/dist/properties/mapProperty.d.ts.map +1 -1
  46. package/dist/properties/mapProperty.js +21 -17
  47. package/dist/properties/mapProperty.js.map +1 -1
  48. package/dist/properties/namedNodeProperty.d.ts.map +1 -1
  49. package/dist/properties/namedNodeProperty.js +3 -3
  50. package/dist/properties/namedNodeProperty.js.map +1 -1
  51. package/dist/properties/namedProperty.d.ts.map +1 -1
  52. package/dist/properties/namedProperty.js +7 -5
  53. package/dist/properties/namedProperty.js.map +1 -1
  54. package/dist/properties/nodeProperty.d.ts.map +1 -1
  55. package/dist/properties/nodeProperty.js +5 -3
  56. package/dist/properties/nodeProperty.js.map +1 -1
  57. package/dist/properties/primitiveTypeCasts.d.ts.map +1 -1
  58. package/dist/properties/primitiveTypeCasts.js +9 -9
  59. package/dist/properties/primitiveTypeCasts.js.map +1 -1
  60. package/dist/properties/referenceArrayProperty.d.ts.map +1 -1
  61. package/dist/properties/referenceArrayProperty.js +31 -25
  62. package/dist/properties/referenceArrayProperty.js.map +1 -1
  63. package/dist/properties/referenceMapProperty.d.ts.map +1 -1
  64. package/dist/properties/referenceMapProperty.js +18 -18
  65. package/dist/properties/referenceMapProperty.js.map +1 -1
  66. package/dist/properties/referenceProperty.d.ts.map +1 -1
  67. package/dist/properties/referenceProperty.js +33 -29
  68. package/dist/properties/referenceProperty.js.map +1 -1
  69. package/dist/properties/setProperty.d.ts.map +1 -1
  70. package/dist/properties/setProperty.js +31 -29
  71. package/dist/properties/setProperty.js.map +1 -1
  72. package/dist/properties/stringProperty.d.ts.map +1 -1
  73. package/dist/properties/stringProperty.js +56 -40
  74. package/dist/properties/stringProperty.js.map +1 -1
  75. package/dist/properties/uintProperties.js +5 -5
  76. package/dist/properties/uintProperties.js.map +1 -1
  77. package/dist/properties/valueArrayProperty.d.ts +1 -1
  78. package/dist/properties/valueArrayProperty.d.ts.map +1 -1
  79. package/dist/properties/valueArrayProperty.js +30 -29
  80. package/dist/properties/valueArrayProperty.js.map +1 -1
  81. package/dist/properties/valueMapProperty.d.ts.map +1 -1
  82. package/dist/properties/valueMapProperty.js +31 -29
  83. package/dist/properties/valueMapProperty.js.map +1 -1
  84. package/dist/properties/valueProperty.d.ts.map +1 -1
  85. package/dist/properties/valueProperty.js +11 -9
  86. package/dist/properties/valueProperty.js.map +1 -1
  87. package/dist/propertyFactory.d.ts.map +1 -1
  88. package/dist/propertyFactory.js +309 -252
  89. package/dist/propertyFactory.js.map +1 -1
  90. package/dist/propertyTemplate.d.ts +17 -17
  91. package/dist/propertyTemplate.d.ts.map +1 -1
  92. package/dist/propertyTemplate.js +64 -45
  93. package/dist/propertyTemplate.js.map +1 -1
  94. package/dist/propertyTemplateWrapper.d.ts.map +1 -1
  95. package/dist/propertyTemplateWrapper.js +40 -25
  96. package/dist/propertyTemplateWrapper.js.map +1 -1
  97. package/dist/propertyUtils.d.ts.map +1 -1
  98. package/dist/propertyUtils.js.map +1 -1
  99. package/dist/test/properties/arrayProperty.spec.js +566 -490
  100. package/dist/test/properties/arrayProperty.spec.js.map +1 -1
  101. package/dist/test/properties/baseProperty.spec.js +293 -280
  102. package/dist/test/properties/baseProperty.spec.js.map +1 -1
  103. package/dist/test/properties/containerProperty.spec.js +100 -94
  104. package/dist/test/properties/containerProperty.spec.js.map +1 -1
  105. package/dist/test/properties/customArrayProperty.spec.js +174 -147
  106. package/dist/test/properties/customArrayProperty.spec.js.map +1 -1
  107. package/dist/test/properties/enumArrayProperty.spec.js +67 -63
  108. package/dist/test/properties/enumArrayProperty.spec.js.map +1 -1
  109. package/dist/test/properties/enumProperty.spec.js +115 -97
  110. package/dist/test/properties/enumProperty.spec.js.map +1 -1
  111. package/dist/test/properties/float32.spec.js +5 -5
  112. package/dist/test/properties/float32.spec.js.map +1 -1
  113. package/dist/test/properties/int64ArrayProperty.spec.js +157 -93
  114. package/dist/test/properties/int64ArrayProperty.spec.js.map +1 -1
  115. package/dist/test/properties/int64MapProperty.spec.js +185 -166
  116. package/dist/test/properties/int64MapProperty.spec.js.map +1 -1
  117. package/dist/test/properties/int64Property.spec.js +109 -109
  118. package/dist/test/properties/int64Property.spec.js.map +1 -1
  119. package/dist/test/properties/isLeafNode.spec.js +75 -76
  120. package/dist/test/properties/isLeafNode.spec.js.map +1 -1
  121. package/dist/test/properties/mapProperty.spec.js +571 -531
  122. package/dist/test/properties/mapProperty.spec.js.map +1 -1
  123. package/dist/test/properties/namedNodeProperty.spec.js +31 -31
  124. package/dist/test/properties/namedNodeProperty.spec.js.map +1 -1
  125. package/dist/test/properties/nodeProperty.spec.js +805 -795
  126. package/dist/test/properties/nodeProperty.spec.js.map +1 -1
  127. package/dist/test/properties/referenceProperty.spec.js +729 -679
  128. package/dist/test/properties/referenceProperty.spec.js.map +1 -1
  129. package/dist/test/properties/relationshipProperty.spec.js +16 -16
  130. package/dist/test/properties/relationshipProperty.spec.js.map +1 -1
  131. package/dist/test/properties/setProperty.spec.js +288 -227
  132. package/dist/test/properties/setProperty.spec.js.map +1 -1
  133. package/dist/test/properties/stringProperty.spec.js +326 -318
  134. package/dist/test/properties/stringProperty.spec.js.map +1 -1
  135. package/dist/test/properties/uint64Property.spec.js +46 -36
  136. package/dist/test/properties/uint64Property.spec.js.map +1 -1
  137. package/dist/test/properties/valueMapProperty.spec.js +259 -246
  138. package/dist/test/properties/valueMapProperty.spec.js.map +1 -1
  139. package/dist/test/properties/valueProperty.spec.js +49 -43
  140. package/dist/test/properties/valueProperty.spec.js.map +1 -1
  141. package/dist/test/propertyFactory.spec.js +2038 -1631
  142. package/dist/test/propertyFactory.spec.js.map +1 -1
  143. package/dist/test/propertyTemplateWrapper.spec.js +72 -102
  144. package/dist/test/propertyTemplateWrapper.spec.js.map +1 -1
  145. package/dist/test/propertyUtils.spec.js +22 -21
  146. package/dist/test/propertyUtils.spec.js.map +1 -1
  147. package/dist/test/reversibleChangeset.spec.js +857 -703
  148. package/dist/test/reversibleChangeset.spec.js.map +1 -1
  149. package/dist/test/setup.js +5 -5
  150. package/dist/test/setup.js.map +1 -1
  151. package/dist/test/tsconfig.tsbuildinfo +1 -1
  152. package/dist/test/utils.spec.js +1334 -1144
  153. package/dist/test/utils.spec.js.map +1 -1
  154. package/dist/test/validation/badMissingSemverInTypeid.js +20 -20
  155. package/dist/test/validation/badMissingSemverInTypeid.js.map +1 -1
  156. package/dist/test/validation/badPrimitiveTypeid.js +12 -12
  157. package/dist/test/validation/badPrimitiveTypeid.js.map +1 -1
  158. package/dist/test/validation/goodColorId.js +91 -91
  159. package/dist/test/validation/goodColorId.js.map +1 -1
  160. package/dist/test/validation/goodColorPalette.js +4 -4
  161. package/dist/test/validation/goodColorPalette.js.map +1 -1
  162. package/dist/test/validation/goodPointId.js +20 -20
  163. package/dist/test/validation/goodPointId.js.map +1 -1
  164. package/dist/test/validation/reversibleChangeSetTestData.js +23841 -2
  165. package/dist/test/validation/reversibleChangeSetTestData.js.map +1 -1
  166. package/lib/containerSerializer.d.ts.map +1 -1
  167. package/lib/containerSerializer.js +5 -5
  168. package/lib/containerSerializer.js.map +1 -1
  169. package/lib/enableValidations.js.map +1 -1
  170. package/lib/index.d.ts +19 -19
  171. package/lib/index.d.ts.map +1 -1
  172. package/lib/index.js +19 -19
  173. package/lib/index.js.map +1 -1
  174. package/lib/properties/abstractStaticCollectionProperty.d.ts +10 -10
  175. package/lib/properties/abstractStaticCollectionProperty.d.ts.map +1 -1
  176. package/lib/properties/abstractStaticCollectionProperty.js +70 -53
  177. package/lib/properties/abstractStaticCollectionProperty.js.map +1 -1
  178. package/lib/properties/arrayProperty.d.ts.map +1 -1
  179. package/lib/properties/arrayProperty.js +152 -103
  180. package/lib/properties/arrayProperty.js.map +1 -1
  181. package/lib/properties/baseProperty.d.ts +4 -4
  182. package/lib/properties/baseProperty.d.ts.map +1 -1
  183. package/lib/properties/baseProperty.js +73 -51
  184. package/lib/properties/baseProperty.js.map +1 -1
  185. package/lib/properties/boolProperty.d.ts.map +1 -1
  186. package/lib/properties/boolProperty.js +3 -3
  187. package/lib/properties/boolProperty.js.map +1 -1
  188. package/lib/properties/containerProperty.d.ts +8 -8
  189. package/lib/properties/containerProperty.d.ts.map +1 -1
  190. package/lib/properties/containerProperty.js +33 -26
  191. package/lib/properties/containerProperty.js.map +1 -1
  192. package/lib/properties/enumArrayProperty.d.ts.map +1 -1
  193. package/lib/properties/enumArrayProperty.js +14 -14
  194. package/lib/properties/enumArrayProperty.js.map +1 -1
  195. package/lib/properties/enumProperty.d.ts.map +1 -1
  196. package/lib/properties/enumProperty.js +17 -17
  197. package/lib/properties/enumProperty.js.map +1 -1
  198. package/lib/properties/floatProperties.js +4 -4
  199. package/lib/properties/floatProperties.js.map +1 -1
  200. package/lib/properties/index.d.ts +23 -23
  201. package/lib/properties/index.d.ts.map +1 -1
  202. package/lib/properties/index.js +23 -23
  203. package/lib/properties/index.js.map +1 -1
  204. package/lib/properties/indexedCollectionBaseProperty.d.ts.map +1 -1
  205. package/lib/properties/indexedCollectionBaseProperty.js +47 -37
  206. package/lib/properties/indexedCollectionBaseProperty.js.map +1 -1
  207. package/lib/properties/intProperties.d.ts.map +1 -1
  208. package/lib/properties/intProperties.js +10 -10
  209. package/lib/properties/intProperties.js.map +1 -1
  210. package/lib/properties/lazyLoadedProperties.js.map +1 -1
  211. package/lib/properties/mapProperty.d.ts.map +1 -1
  212. package/lib/properties/mapProperty.js +21 -17
  213. package/lib/properties/mapProperty.js.map +1 -1
  214. package/lib/properties/namedNodeProperty.d.ts.map +1 -1
  215. package/lib/properties/namedNodeProperty.js +3 -3
  216. package/lib/properties/namedNodeProperty.js.map +1 -1
  217. package/lib/properties/namedProperty.d.ts.map +1 -1
  218. package/lib/properties/namedProperty.js +7 -5
  219. package/lib/properties/namedProperty.js.map +1 -1
  220. package/lib/properties/nodeProperty.d.ts.map +1 -1
  221. package/lib/properties/nodeProperty.js +5 -3
  222. package/lib/properties/nodeProperty.js.map +1 -1
  223. package/lib/properties/primitiveTypeCasts.d.ts.map +1 -1
  224. package/lib/properties/primitiveTypeCasts.js +9 -9
  225. package/lib/properties/primitiveTypeCasts.js.map +1 -1
  226. package/lib/properties/referenceArrayProperty.d.ts.map +1 -1
  227. package/lib/properties/referenceArrayProperty.js +31 -25
  228. package/lib/properties/referenceArrayProperty.js.map +1 -1
  229. package/lib/properties/referenceMapProperty.d.ts.map +1 -1
  230. package/lib/properties/referenceMapProperty.js +18 -18
  231. package/lib/properties/referenceMapProperty.js.map +1 -1
  232. package/lib/properties/referenceProperty.d.ts.map +1 -1
  233. package/lib/properties/referenceProperty.js +33 -29
  234. package/lib/properties/referenceProperty.js.map +1 -1
  235. package/lib/properties/setProperty.d.ts.map +1 -1
  236. package/lib/properties/setProperty.js +31 -29
  237. package/lib/properties/setProperty.js.map +1 -1
  238. package/lib/properties/stringProperty.d.ts.map +1 -1
  239. package/lib/properties/stringProperty.js +56 -40
  240. package/lib/properties/stringProperty.js.map +1 -1
  241. package/lib/properties/uintProperties.js +5 -5
  242. package/lib/properties/uintProperties.js.map +1 -1
  243. package/lib/properties/valueArrayProperty.d.ts +1 -1
  244. package/lib/properties/valueArrayProperty.d.ts.map +1 -1
  245. package/lib/properties/valueArrayProperty.js +30 -29
  246. package/lib/properties/valueArrayProperty.js.map +1 -1
  247. package/lib/properties/valueMapProperty.d.ts.map +1 -1
  248. package/lib/properties/valueMapProperty.js +31 -29
  249. package/lib/properties/valueMapProperty.js.map +1 -1
  250. package/lib/properties/valueProperty.d.ts.map +1 -1
  251. package/lib/properties/valueProperty.js +11 -9
  252. package/lib/properties/valueProperty.js.map +1 -1
  253. package/lib/propertyFactory.d.ts.map +1 -1
  254. package/lib/propertyFactory.js +309 -252
  255. package/lib/propertyFactory.js.map +1 -1
  256. package/lib/propertyTemplate.d.ts +17 -17
  257. package/lib/propertyTemplate.d.ts.map +1 -1
  258. package/lib/propertyTemplate.js +64 -45
  259. package/lib/propertyTemplate.js.map +1 -1
  260. package/lib/propertyTemplateWrapper.d.ts.map +1 -1
  261. package/lib/propertyTemplateWrapper.js +40 -25
  262. package/lib/propertyTemplateWrapper.js.map +1 -1
  263. package/lib/propertyUtils.d.ts.map +1 -1
  264. package/lib/propertyUtils.js.map +1 -1
  265. package/package.json +28 -28
  266. package/src/index.d.ts +2750 -2681
@@ -11,935 +11,985 @@
11
11
  *
12
12
  * - /src/properties/referenceMapProperty.js
13
13
  */
14
- const { ChangeSet } = require('@fluid-experimental/property-changeset');
15
- const { MSG } = require('@fluid-experimental/property-common').constants;
16
- const { BaseProperty } = require('../..');
17
- const { PropertyFactory } = require('../..');
18
- const { ReferenceProperty } = require('../../properties/referenceProperty');
19
- const { ReferenceMapProperty } = require('../../properties/referenceMapProperty');
20
- const { ReferenceArrayProperty } = require('../../properties/referenceArrayProperty');
21
- describe('Reference Properties', function () {
14
+ const { ChangeSet } = require("@fluid-experimental/property-changeset");
15
+ const { MSG } = require("@fluid-experimental/property-common").constants;
16
+ const { BaseProperty } = require("../..");
17
+ const { PropertyFactory } = require("../..");
18
+ const { ReferenceProperty } = require("../../properties/referenceProperty");
19
+ const { ReferenceMapProperty } = require("../../properties/referenceMapProperty");
20
+ const { ReferenceArrayProperty } = require("../../properties/referenceArrayProperty");
21
+ describe("Reference Properties", function () {
22
22
  var dereferenceToken;
23
23
  before(function () {
24
24
  dereferenceToken = BaseProperty.PATH_TOKENS.REF;
25
25
  // A template that contains all types of reference properties
26
26
  var referencePropertyTestTemplate = {
27
- typeid: 'autodesk.test:referencePropertyTest-1.0.0',
27
+ typeid: "autodesk.test:referencePropertyTest-1.0.0",
28
28
  properties: [
29
- { id: 'ref', typeid: 'Reference<NodeProperty>' },
30
- { id: 'ref_anon', typeid: 'Reference' },
31
- { id: 'refArray', typeid: 'Reference<NodeProperty>', context: 'array' },
32
- { id: 'refArray_anon', typeid: 'Reference', context: 'array' },
33
- { id: 'refMap', typeid: 'Reference<NodeProperty>', context: 'map' },
34
- { id: 'refMap_anon', typeid: 'Reference', context: 'map' },
29
+ { id: "ref", typeid: "Reference<NodeProperty>" },
30
+ { id: "ref_anon", typeid: "Reference" },
31
+ { id: "refArray", typeid: "Reference<NodeProperty>", context: "array" },
32
+ { id: "refArray_anon", typeid: "Reference", context: "array" },
33
+ { id: "refMap", typeid: "Reference<NodeProperty>", context: "map" },
34
+ { id: "refMap_anon", typeid: "Reference", context: "map" },
35
35
  ],
36
36
  };
37
37
  PropertyFactory._reregister(referencePropertyTestTemplate);
38
38
  });
39
- describe('ReferenceProperty', function () {
40
- it('should be possible to create', function () {
39
+ describe("ReferenceProperty", function () {
40
+ it("should be possible to create", function () {
41
41
  // Test creation of an anonymous reference
42
- var reference = PropertyFactory.create('Reference');
42
+ var reference = PropertyFactory.create("Reference");
43
43
  expect(reference).to.be.instanceof(ReferenceProperty);
44
- expect(reference.getReferenceTargetTypeId()).to.equal('BaseProperty');
44
+ expect(reference.getReferenceTargetTypeId()).to.equal("BaseProperty");
45
45
  // Test creation of a typed reference
46
- var reference = PropertyFactory.create('Reference<NodeProperty>');
46
+ var reference = PropertyFactory.create("Reference<NodeProperty>");
47
47
  expect(reference).to.be.instanceof(ReferenceProperty);
48
- expect(reference.getReferenceTargetTypeId()).to.equal('NodeProperty');
48
+ expect(reference.getReferenceTargetTypeId()).to.equal("NodeProperty");
49
49
  // Test creation via a template
50
- var prop = PropertyFactory.create('autodesk.test:referencePropertyTest-1.0.0');
50
+ var prop = PropertyFactory.create("autodesk.test:referencePropertyTest-1.0.0");
51
51
  expect(prop._properties.ref_anon).to.be.instanceof(ReferenceProperty);
52
- expect(prop._properties.ref_anon.getReferenceTargetTypeId()).to.equal('BaseProperty');
52
+ expect(prop._properties.ref_anon.getReferenceTargetTypeId()).to.equal("BaseProperty");
53
53
  expect(prop._properties.ref).to.be.instanceof(ReferenceProperty);
54
- expect(prop._properties.ref.getReferenceTargetTypeId()).to.equal('NodeProperty');
54
+ expect(prop._properties.ref.getReferenceTargetTypeId()).to.equal("NodeProperty");
55
55
  });
56
- it('empty reference should resolve to undefined', function () {
57
- var reference = PropertyFactory.create('Reference');
56
+ it("empty reference should resolve to undefined", function () {
57
+ var reference = PropertyFactory.create("Reference");
58
58
  // It should work with the default value
59
59
  expect(reference.referenced).to.be.undefined;
60
60
  expect(reference.get()).to.be.undefined;
61
61
  // Explicitly setting it should have the same effect
62
- reference.value = '';
62
+ reference.value = "";
63
63
  expect(reference.referenced).to.be.undefined;
64
64
  expect(reference.get()).to.be.undefined;
65
65
  });
66
- it('setting a referenced member to undefined should turn it into an empty string', function () {
67
- var reference = PropertyFactory.create('Reference');
66
+ it("setting a referenced member to undefined should turn it into an empty string", function () {
67
+ var reference = PropertyFactory.create("Reference");
68
68
  // First set it to something else than an empty reference
69
- reference.value = '/test';
69
+ reference.value = "/test";
70
70
  // Now reset it via the referenced member
71
71
  reference.ref = undefined;
72
72
  // And check the result
73
- expect(reference.value).to.equal('');
73
+ expect(reference.value).to.equal("");
74
74
  expect(reference.ref).to.be.undefined;
75
75
  });
76
- it('setting a reference to a non absolute path should not throw', function () {
77
- var reference = PropertyFactory.create('Reference');
78
- expect(function () { reference.value = 'test'; }).to.not.throw();
76
+ it("setting a reference to a non absolute path should not throw", function () {
77
+ var reference = PropertyFactory.create("Reference");
78
+ expect(function () {
79
+ reference.value = "test";
80
+ }).to.not.throw();
79
81
  });
80
- it('.get should work to resolve the referenced property', function () {
81
- var root = PropertyFactory.create('NodeProperty');
82
- var reference = PropertyFactory.create('Reference<String>');
83
- var target = PropertyFactory.create('String');
84
- var node = PropertyFactory.create('NodeProperty');
85
- var nodeTarget = PropertyFactory.create('String');
86
- root.insert('target', target);
87
- root.insert('reference', reference);
88
- root.insert('node', node);
89
- node.insert('target', nodeTarget);
82
+ it(".get should work to resolve the referenced property", function () {
83
+ var root = PropertyFactory.create("NodeProperty");
84
+ var reference = PropertyFactory.create("Reference<String>");
85
+ var target = PropertyFactory.create("String");
86
+ var node = PropertyFactory.create("NodeProperty");
87
+ var nodeTarget = PropertyFactory.create("String");
88
+ root.insert("target", target);
89
+ root.insert("reference", reference);
90
+ root.insert("node", node);
91
+ node.insert("target", nodeTarget);
90
92
  reference.set(target);
91
- expect(root.get('reference')).to.equal(target);
93
+ expect(root.get("reference")).to.equal(target);
92
94
  // checking that a primitive value for in_options is ignored:
93
- expect(root.get('reference', 'string')).to.equal(target);
94
- expect(root.get('reference', {
95
+ expect(root.get("reference", "string")).to.equal(target);
96
+ expect(root.get("reference", {
95
97
  referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.ALWAYS,
96
98
  })).to.equal(target);
97
- expect(root.get('reference', {
99
+ expect(root.get("reference", {
98
100
  referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.NEVER,
99
101
  })).to.equal(reference);
100
- expect(root.get('reference', {
102
+ expect(root.get("reference", {
101
103
  referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.NO_LEAFS,
102
104
  })).to.equal(reference);
103
105
  reference.set(node);
104
- expect(root.get(['reference', 'target'], {
106
+ expect(root.get(["reference", "target"], {
105
107
  referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.ALWAYS,
106
108
  })).to.equal(nodeTarget);
107
- expect(root.get(['reference', 'target'], {
109
+ expect(root.get(["reference", "target"], {
108
110
  referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.NEVER,
109
111
  })).to.equal(undefined);
110
- expect(root.get(['reference', 'target'], {
112
+ expect(root.get(["reference", "target"], {
111
113
  referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.NO_LEAFS,
112
114
  })).to.equal(nodeTarget);
113
115
  });
114
- it('.get should work with different types of input', function () {
115
- var root = PropertyFactory.create('NodeProperty');
116
- var reference = PropertyFactory.create('Reference<String>');
117
- var node = PropertyFactory.create('NodeProperty');
118
- var nodeTarget = PropertyFactory.create('String');
119
- root.insert('reference', reference);
120
- root.insert('node', node);
121
- node.insert('target', nodeTarget);
116
+ it(".get should work with different types of input", function () {
117
+ var root = PropertyFactory.create("NodeProperty");
118
+ var reference = PropertyFactory.create("Reference<String>");
119
+ var node = PropertyFactory.create("NodeProperty");
120
+ var nodeTarget = PropertyFactory.create("String");
121
+ root.insert("reference", reference);
122
+ root.insert("node", node);
123
+ node.insert("target", nodeTarget);
122
124
  reference.set(node);
123
125
  expect(reference.get()).to.equal(node);
124
- expect(reference.get('')).to.equal(node);
125
- expect(reference.get(['target'])).to.equal(nodeTarget);
126
- expect(reference.get('target')).to.equal(node);
126
+ expect(reference.get("")).to.equal(node);
127
+ expect(reference.get(["target"])).to.equal(nodeTarget);
128
+ expect(reference.get("target")).to.equal(node);
127
129
  expect(reference.get([])).to.equal(reference);
128
130
  });
129
- it('.get should return undefined with invalid reference', function () {
130
- var root = PropertyFactory.create('NodeProperty');
131
- var reference = PropertyFactory.create('Reference<String>');
132
- var node = PropertyFactory.create('NodeProperty');
133
- var nodeTarget = PropertyFactory.create('String');
131
+ it(".get should return undefined with invalid reference", function () {
132
+ var root = PropertyFactory.create("NodeProperty");
133
+ var reference = PropertyFactory.create("Reference<String>");
134
+ var node = PropertyFactory.create("NodeProperty");
135
+ var nodeTarget = PropertyFactory.create("String");
134
136
  // when reference is not inserted to the tree
135
- root.insert('node', node);
136
- node.insert('target', nodeTarget);
137
+ root.insert("node", node);
138
+ node.insert("target", nodeTarget);
137
139
  reference.set(node);
138
- expect(reference.get(['target'])).to.undefined;
140
+ expect(reference.get(["target"])).to.undefined;
139
141
  // with invalid reference input
140
- root.insert('reference', reference);
141
- reference.set('invalid_node');
142
- expect(reference.get(['target'])).to.undefined;
142
+ root.insert("reference", reference);
143
+ reference.set("invalid_node");
144
+ expect(reference.get(["target"])).to.undefined;
143
145
  // dereference property is removed
144
- reference.set('node');
145
- expect(reference.get(['target'])).to.equal(nodeTarget);
146
- node.remove('target');
147
- expect(reference.get(['target'])).to.undefined;
146
+ reference.set("node");
147
+ expect(reference.get(["target"])).to.equal(nodeTarget);
148
+ node.remove("target");
149
+ expect(reference.get(["target"])).to.undefined;
148
150
  });
149
- it('.resolvePath should work to resolve the referenced property', function () {
150
- var root = PropertyFactory.create('NodeProperty');
151
- var reference = PropertyFactory.create('Reference<String>');
152
- var target = PropertyFactory.create('String');
153
- var node = PropertyFactory.create('NodeProperty');
154
- var nodeTarget = PropertyFactory.create('String');
155
- root.insert('target', target);
156
- root.insert('reference', reference);
157
- root.insert('node', node);
158
- node.insert('target', nodeTarget);
151
+ it(".resolvePath should work to resolve the referenced property", function () {
152
+ var root = PropertyFactory.create("NodeProperty");
153
+ var reference = PropertyFactory.create("Reference<String>");
154
+ var target = PropertyFactory.create("String");
155
+ var node = PropertyFactory.create("NodeProperty");
156
+ var nodeTarget = PropertyFactory.create("String");
157
+ root.insert("target", target);
158
+ root.insert("reference", reference);
159
+ root.insert("node", node);
160
+ node.insert("target", nodeTarget);
159
161
  reference.set(target);
160
- expect(root.resolvePath('reference')).to.equal(target);
161
- expect(root.resolvePath('reference', {
162
+ expect(root.resolvePath("reference")).to.equal(target);
163
+ expect(root.resolvePath("reference", {
162
164
  referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.ALWAYS,
163
165
  })).to.equal(target);
164
- expect(root.resolvePath('reference', {
166
+ expect(root.resolvePath("reference", {
165
167
  referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.NEVER,
166
168
  })).to.equal(reference);
167
- expect(root.resolvePath('reference', {
169
+ expect(root.resolvePath("reference", {
168
170
  referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.NO_LEAFS,
169
171
  })).to.equal(reference);
170
172
  reference.set(node);
171
- expect(root.resolvePath('reference.target', {
173
+ expect(root.resolvePath("reference.target", {
172
174
  referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.ALWAYS,
173
175
  })).to.equal(nodeTarget);
174
- expect(root.resolvePath('reference.target', {
176
+ expect(root.resolvePath("reference.target", {
175
177
  referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.NEVER,
176
178
  })).to.equal(undefined);
177
- expect(root.resolvePath('reference.target', {
179
+ expect(root.resolvePath("reference.target", {
178
180
  referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.NO_LEAFS,
179
181
  })).to.equal(nodeTarget);
180
182
  });
181
- describe('Reference resolution', function () {
183
+ describe("Reference resolution", function () {
182
184
  var root, target, reference, reference2, relativeReference, relativeReference2;
183
185
  var nodeTarget, nestedChild, nodeTarget2, nestedChild2;
184
186
  var mapTarget, nestedMapChild;
185
187
  var arrayTarget, nestedArrayChild;
186
188
  beforeEach(function () {
187
- root = PropertyFactory.create('NodeProperty');
188
- nodeTarget = PropertyFactory.create('NodeProperty');
189
- nestedChild = PropertyFactory.create('String');
190
- relativeReference = PropertyFactory.create('Reference<String>');
191
- nodeTarget.insert('nested', nestedChild);
192
- nodeTarget.insert('relativeReference', relativeReference);
193
- nodeTarget2 = PropertyFactory.create('NodeProperty');
194
- nestedChild2 = PropertyFactory.create('String');
195
- relativeReference2 = PropertyFactory.create('Reference<Reference>');
196
- nodeTarget2.insert('nested', nestedChild2);
197
- nodeTarget2.insert('relativeReference2', relativeReference2);
198
- mapTarget = PropertyFactory.create('map<>');
199
- nestedMapChild = PropertyFactory.create('String');
200
- mapTarget.insert('nested', nestedMapChild);
201
- arrayTarget = PropertyFactory.create('array<>');
202
- nestedArrayChild = PropertyFactory.create('String');
189
+ root = PropertyFactory.create("NodeProperty");
190
+ nodeTarget = PropertyFactory.create("NodeProperty");
191
+ nestedChild = PropertyFactory.create("String");
192
+ relativeReference = PropertyFactory.create("Reference<String>");
193
+ nodeTarget.insert("nested", nestedChild);
194
+ nodeTarget.insert("relativeReference", relativeReference);
195
+ nodeTarget2 = PropertyFactory.create("NodeProperty");
196
+ nestedChild2 = PropertyFactory.create("String");
197
+ relativeReference2 = PropertyFactory.create("Reference<Reference>");
198
+ nodeTarget2.insert("nested", nestedChild2);
199
+ nodeTarget2.insert("relativeReference2", relativeReference2);
200
+ mapTarget = PropertyFactory.create("map<>");
201
+ nestedMapChild = PropertyFactory.create("String");
202
+ mapTarget.insert("nested", nestedMapChild);
203
+ arrayTarget = PropertyFactory.create("array<>");
204
+ nestedArrayChild = PropertyFactory.create("String");
203
205
  arrayTarget.push(nestedArrayChild);
204
- target = PropertyFactory.create('String');
205
- reference = PropertyFactory.create('Reference<String>');
206
- reference2 = PropertyFactory.create('Reference<Reference>');
207
- root.insert('target', target);
208
- root.insert('nodeTarget', nodeTarget);
209
- root.insert('nodeTarget2', nodeTarget2);
210
- root.insert('mapTarget', mapTarget);
211
- root.insert('arrayTarget', arrayTarget);
212
- root.insert('reference', reference);
213
- root.insert('reference2', reference2);
214
- target.value = 'test';
215
- });
216
- it('should allow resolving references', function () {
217
- reference.value = '/target';
206
+ target = PropertyFactory.create("String");
207
+ reference = PropertyFactory.create("Reference<String>");
208
+ reference2 = PropertyFactory.create("Reference<Reference>");
209
+ root.insert("target", target);
210
+ root.insert("nodeTarget", nodeTarget);
211
+ root.insert("nodeTarget2", nodeTarget2);
212
+ root.insert("mapTarget", mapTarget);
213
+ root.insert("arrayTarget", arrayTarget);
214
+ root.insert("reference", reference);
215
+ root.insert("reference2", reference2);
216
+ target.value = "test";
217
+ });
218
+ it("should allow resolving references", function () {
219
+ reference.value = "/target";
218
220
  expect(reference.ref).to.equal(target);
219
- expect(reference.ref.value).to.equal('test');
221
+ expect(reference.ref.value).to.equal("test");
220
222
  });
221
- it('should support setting via set', function () {
223
+ it("should support setting via set", function () {
222
224
  reference.set(target);
223
225
  expect(reference.ref).to.equal(target);
224
- expect(reference.ref.value).to.equal('test');
225
- expect(reference.value).to.equal('/target');
226
+ expect(reference.ref.value).to.equal("test");
227
+ expect(reference.value).to.equal("/target");
226
228
  });
227
- it('set with a Property should work', function () {
229
+ it("set with a Property should work", function () {
228
230
  reference.set(nestedChild);
229
- expect(reference.getValue()).to.equal('/nodeTarget.nested');
231
+ expect(reference.getValue()).to.equal("/nodeTarget.nested");
230
232
  });
231
- it('set with a path should work', function () {
232
- reference.set('/nodeTarget.nested');
233
- expect(reference.getValue()).to.equal('/nodeTarget.nested');
233
+ it("set with a path should work", function () {
234
+ reference.set("/nodeTarget.nested");
235
+ expect(reference.getValue()).to.equal("/nodeTarget.nested");
234
236
  });
235
- it('set with something else should throw', function () {
236
- expect(function () { reference.set(123); }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
237
+ it("set with something else should throw", function () {
238
+ expect(function () {
239
+ reference.set(123);
240
+ }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
237
241
  });
238
- it('setValue with a Property should work', function () {
242
+ it("setValue with a Property should work", function () {
239
243
  reference.setValue(nestedChild);
240
- expect(reference.getValue()).to.equal('/nodeTarget.nested');
244
+ expect(reference.getValue()).to.equal("/nodeTarget.nested");
241
245
  });
242
- it('setValue with a path should work', function () {
243
- reference.setValue('/nodeTarget.nested');
244
- expect(reference.getValue()).to.equal('/nodeTarget.nested');
246
+ it("setValue with a path should work", function () {
247
+ reference.setValue("/nodeTarget.nested");
248
+ expect(reference.getValue()).to.equal("/nodeTarget.nested");
245
249
  });
246
- it('setValue with something else should throw', function () {
247
- expect(function () { reference.setValue(123); }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
250
+ it("setValue with something else should throw", function () {
251
+ expect(function () {
252
+ reference.setValue(123);
253
+ }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
248
254
  });
249
- it('should have a working isReferenceValid', function () {
255
+ it("should have a working isReferenceValid", function () {
250
256
  // An empty reference should be valid
251
- reference.value = '';
257
+ reference.value = "";
252
258
  expect(reference.isReferenceValid()).to.be.true;
253
259
  // A reference to an existing property should be valid
254
260
  reference.set(target);
255
261
  expect(reference.isReferenceValid()).to.be.true;
256
262
  // A reference that cannot be resolved should be invalid
257
- reference.value = '/invalid_path';
263
+ reference.value = "/invalid_path";
258
264
  expect(reference.isReferenceValid()).to.be.false;
259
265
  });
260
- it('should allow dereferencing via a *', function () {
266
+ it("should allow dereferencing via a *", function () {
261
267
  reference.set(target);
262
- expect(root.resolvePath('/reference')).to.equal(target);
263
- expect(root.resolvePath('/reference*')).to.equal(reference);
264
- expect(root.get('reference', { referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.NEVER }))
265
- .to.equal(reference);
266
- expect(root.get(['reference', dereferenceToken])).to.equal(reference);
267
- });
268
- it('should allow dereferencing via a * with nested reference property', function () {
268
+ expect(root.resolvePath("/reference")).to.equal(target);
269
+ expect(root.resolvePath("/reference*")).to.equal(reference);
270
+ expect(root.get("reference", {
271
+ referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.NEVER,
272
+ })).to.equal(reference);
273
+ expect(root.get(["reference", dereferenceToken])).to.equal(reference);
274
+ });
275
+ it("should allow dereferencing via a * with nested reference property", function () {
269
276
  reference.set(target);
270
- reference2.set('/reference*');
271
- expect(root.get('reference2')).to.equal(reference);
272
- expect(root.resolvePath('/reference2')).to.equal(reference);
273
- });
274
- it('should allow dereferencing via multiple jumps', function () {
275
- let reference3 = PropertyFactory.create('Reference');
276
- let reference4 = PropertyFactory.create('Reference');
277
- let reference5 = PropertyFactory.create('Reference');
278
- root.insert('reference3', reference3);
279
- root.insert('reference4', reference4);
280
- root.insert('reference5', reference5);
277
+ reference2.set("/reference*");
278
+ expect(root.get("reference2")).to.equal(reference);
279
+ expect(root.resolvePath("/reference2")).to.equal(reference);
280
+ });
281
+ it("should allow dereferencing via multiple jumps", function () {
282
+ let reference3 = PropertyFactory.create("Reference");
283
+ let reference4 = PropertyFactory.create("Reference");
284
+ let reference5 = PropertyFactory.create("Reference");
285
+ root.insert("reference3", reference3);
286
+ root.insert("reference4", reference4);
287
+ root.insert("reference5", reference5);
281
288
  reference.set(target);
282
- reference2.set('reference');
283
- reference3.set('reference2');
284
- reference4.set('reference3');
285
- reference5.set('reference4');
286
- expect(root.get('reference5')).to.equal(target);
287
- expect(root.resolvePath('/reference5')).to.equal(target);
288
- expect(root.get('reference4')).to.equal(target);
289
- expect(root.resolvePath('/reference4')).to.equal(target);
290
- expect(root.get('reference3')).to.equal(target);
291
- expect(root.resolvePath('/reference3')).to.equal(target);
292
- expect(root.get('reference2')).to.equal(target);
293
- expect(root.resolvePath('/reference2')).to.equal(target);
294
- expect(root.get('reference')).to.equal(target);
295
- expect(root.resolvePath('/reference')).to.equal(target);
296
- });
297
- it('should allow dereferencing via * multiple jumps', function () {
298
- let reference3 = PropertyFactory.create('Reference');
299
- let reference4 = PropertyFactory.create('Reference');
300
- let reference5 = PropertyFactory.create('Reference');
301
- root.insert('reference3', reference3);
302
- root.insert('reference4', reference4);
303
- root.insert('reference5', reference5);
289
+ reference2.set("reference");
290
+ reference3.set("reference2");
291
+ reference4.set("reference3");
292
+ reference5.set("reference4");
293
+ expect(root.get("reference5")).to.equal(target);
294
+ expect(root.resolvePath("/reference5")).to.equal(target);
295
+ expect(root.get("reference4")).to.equal(target);
296
+ expect(root.resolvePath("/reference4")).to.equal(target);
297
+ expect(root.get("reference3")).to.equal(target);
298
+ expect(root.resolvePath("/reference3")).to.equal(target);
299
+ expect(root.get("reference2")).to.equal(target);
300
+ expect(root.resolvePath("/reference2")).to.equal(target);
301
+ expect(root.get("reference")).to.equal(target);
302
+ expect(root.resolvePath("/reference")).to.equal(target);
303
+ });
304
+ it("should allow dereferencing via * multiple jumps", function () {
305
+ let reference3 = PropertyFactory.create("Reference");
306
+ let reference4 = PropertyFactory.create("Reference");
307
+ let reference5 = PropertyFactory.create("Reference");
308
+ root.insert("reference3", reference3);
309
+ root.insert("reference4", reference4);
310
+ root.insert("reference5", reference5);
304
311
  reference.set(target);
305
- reference2.set('reference');
306
- reference3.set('reference2');
307
- reference4.set('reference3*');
308
- reference5.set('reference4');
309
- expect(root.get('reference5')).to.equal(reference3);
310
- expect(root.resolvePath('/reference5')).to.equal(reference3);
311
- expect(root.get('reference4')).to.equal(reference3);
312
- expect(root.resolvePath('/reference4')).to.equal(reference3);
313
- expect(root.get('reference3')).to.equal(target);
314
- expect(root.resolvePath('/reference3')).to.equal(target);
315
- expect(root.get('reference2')).to.equal(target);
316
- expect(root.resolvePath('/reference2')).to.equal(target);
317
- expect(root.get('reference')).to.equal(target);
318
- expect(root.resolvePath('/reference')).to.equal(target);
319
- });
320
- it('should allow accessing nested paths', function () {
312
+ reference2.set("reference");
313
+ reference3.set("reference2");
314
+ reference4.set("reference3*");
315
+ reference5.set("reference4");
316
+ expect(root.get("reference5")).to.equal(reference3);
317
+ expect(root.resolvePath("/reference5")).to.equal(reference3);
318
+ expect(root.get("reference4")).to.equal(reference3);
319
+ expect(root.resolvePath("/reference4")).to.equal(reference3);
320
+ expect(root.get("reference3")).to.equal(target);
321
+ expect(root.resolvePath("/reference3")).to.equal(target);
322
+ expect(root.get("reference2")).to.equal(target);
323
+ expect(root.resolvePath("/reference2")).to.equal(target);
324
+ expect(root.get("reference")).to.equal(target);
325
+ expect(root.resolvePath("/reference")).to.equal(target);
326
+ });
327
+ it("should allow accessing nested paths", function () {
321
328
  reference.set(nodeTarget);
322
- expect(root.resolvePath('/reference.nested')).to.equal(nestedChild);
323
- expect(root.get(['reference', 'nested'])).to.equal(nestedChild);
324
- expect(root.resolvePath('/reference*.nested')).to.equal(undefined);
325
- expect(root.get(['reference', dereferenceToken, 'nested'])).to.equal(undefined);
326
- nestedChild.value = 'test_value';
327
- expect(root.resolvePath('/reference.nested').value).to.equal('test_value');
328
- });
329
- it('should allow accessing referenced maps', function () {
329
+ expect(root.resolvePath("/reference.nested")).to.equal(nestedChild);
330
+ expect(root.get(["reference", "nested"])).to.equal(nestedChild);
331
+ expect(root.resolvePath("/reference*.nested")).to.equal(undefined);
332
+ expect(root.get(["reference", dereferenceToken, "nested"])).to.equal(undefined);
333
+ nestedChild.value = "test_value";
334
+ expect(root.resolvePath("/reference.nested").value).to.equal("test_value");
335
+ });
336
+ it("should allow accessing referenced maps", function () {
330
337
  reference.set(mapTarget);
331
- expect(root.resolvePath('/reference[nested]')).to.equal(nestedMapChild);
332
- expect(root.resolvePath('/reference*[nested]')).to.equal(undefined);
338
+ expect(root.resolvePath("/reference[nested]")).to.equal(nestedMapChild);
339
+ expect(root.resolvePath("/reference*[nested]")).to.equal(undefined);
333
340
  });
334
- it('should allow accessing referenced arrays', function () {
341
+ it("should allow accessing referenced arrays", function () {
335
342
  reference.set(arrayTarget);
336
- expect(root.resolvePath('/reference[0]')).to.equal(nestedArrayChild);
337
- expect(root.get(['reference', 0])).to.equal(nestedArrayChild);
338
- expect(root.resolvePath('/reference*[0]')).to.equal(undefined);
343
+ expect(root.resolvePath("/reference[0]")).to.equal(nestedArrayChild);
344
+ expect(root.get(["reference", 0])).to.equal(nestedArrayChild);
345
+ expect(root.resolvePath("/reference*[0]")).to.equal(undefined);
339
346
  });
340
- it('forwarding should work over multiple jumps', function () {
347
+ it("forwarding should work over multiple jumps", function () {
341
348
  reference.set(nodeTarget);
342
349
  reference2.set(reference);
343
- expect(root.resolvePath('/reference2.nested')).to.equal(nestedChild);
350
+ expect(root.resolvePath("/reference2.nested")).to.equal(nestedChild);
344
351
  });
345
- it('should continue to work when the reference or the referenced node changes', function () {
352
+ it("should continue to work when the reference or the referenced node changes", function () {
346
353
  reference.set(nodeTarget);
347
- expect(root.resolvePath('/reference.nested')).to.equal(nestedChild);
348
- expect(root.get(['reference', 'nested'])).to.equal(nestedChild);
354
+ expect(root.resolvePath("/reference.nested")).to.equal(nestedChild);
355
+ expect(root.get(["reference", "nested"])).to.equal(nestedChild);
349
356
  reference.set(nodeTarget2);
350
- expect(root.resolvePath('/reference.nested*')).to.equal(nestedChild2);
351
- expect(root.get(['reference', 'nested', dereferenceToken])).to.equal(nestedChild2);
352
- nodeTarget2.remove('nested');
353
- var newChild = PropertyFactory.create('String');
354
- nodeTarget2.insert('nested', newChild);
355
- expect(root.resolvePath('/reference.nested')).to.equal(newChild);
356
- expect(root.get(['reference', 'nested'])).to.equal(newChild);
357
- });
358
- it('should work with relative paths using getReferencedProperty', function () {
359
- relativeReference.setValue('../nodeTarget2');
357
+ expect(root.resolvePath("/reference.nested*")).to.equal(nestedChild2);
358
+ expect(root.get(["reference", "nested", dereferenceToken])).to.equal(nestedChild2);
359
+ nodeTarget2.remove("nested");
360
+ var newChild = PropertyFactory.create("String");
361
+ nodeTarget2.insert("nested", newChild);
362
+ expect(root.resolvePath("/reference.nested")).to.equal(newChild);
363
+ expect(root.get(["reference", "nested"])).to.equal(newChild);
364
+ });
365
+ it("should work with relative paths using getReferencedProperty", function () {
366
+ relativeReference.setValue("../nodeTarget2");
360
367
  expect(relativeReference.get()).to.equal(nodeTarget2);
361
368
  });
362
- it('should work with relative paths using getReferencedProperty', function () {
363
- relativeReference.setValue('../nodeTarget2');
369
+ it("should work with relative paths using getReferencedProperty", function () {
370
+ relativeReference.setValue("../nodeTarget2");
364
371
  expect(relativeReference.get()).to.equal(nodeTarget2);
365
372
  expect(relativeReference.ref).to.equal(nodeTarget2);
366
373
  });
367
- it('should work with multiple jumps with relative references', function () {
368
- relativeReference.setValue('../nodeTarget');
369
- relativeReference2.setValue('../nodeTarget.relativeReference');
370
- expect(root.resolvePath('/nodeTarget2.relativeReference2.nested')).to.equal(nestedChild);
371
- expect(root.get(['nodeTarget2', 'relativeReference2', 'nested'])).to.equal(nestedChild);
372
- expect(root.get(['nodeTarget2', 'relativeReference2'])).to.equal(nodeTarget);
373
- expect(root.get(['nodeTarget2', 'relativeReference2'], { referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.NO_LEAFS })).to.equal(relativeReference2);
374
- expect(root.get(['nodeTarget2', 'relativeReference2', 'nested'], { referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.NEVER })).to.equal(undefined);
375
- expect(root.get(['nodeTarget2', 'relativeReference2'], { referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.NO_LEAFS }).get(['nested'])).to.equal(nestedChild);
376
- });
377
- it('should return undefined when going beyond the root', function () {
378
- relativeReference.setValue('../../nodeTarget2');
374
+ it("should work with multiple jumps with relative references", function () {
375
+ relativeReference.setValue("../nodeTarget");
376
+ relativeReference2.setValue("../nodeTarget.relativeReference");
377
+ expect(root.resolvePath("/nodeTarget2.relativeReference2.nested")).to.equal(nestedChild);
378
+ expect(root.get(["nodeTarget2", "relativeReference2", "nested"])).to.equal(nestedChild);
379
+ expect(root.get(["nodeTarget2", "relativeReference2"])).to.equal(nodeTarget);
380
+ expect(root.get(["nodeTarget2", "relativeReference2"], {
381
+ referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.NO_LEAFS,
382
+ })).to.equal(relativeReference2);
383
+ expect(root.get(["nodeTarget2", "relativeReference2", "nested"], {
384
+ referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.NEVER,
385
+ })).to.equal(undefined);
386
+ expect(root
387
+ .get(["nodeTarget2", "relativeReference2"], {
388
+ referenceResolutionMode: BaseProperty.REFERENCE_RESOLUTION.NO_LEAFS,
389
+ })
390
+ .get(["nested"])).to.equal(nestedChild);
391
+ });
392
+ it("should return undefined when going beyond the root", function () {
393
+ relativeReference.setValue("../../nodeTarget2");
379
394
  expect(relativeReference.get()).to.be.undefined;
380
395
  });
381
- it('should clone', function () {
396
+ it("should clone", function () {
382
397
  var clone = relativeReference.clone();
383
398
  expect(relativeReference._serialize(false)).to.eql(clone._serialize(false));
384
399
  });
385
- it('get context should return single', function () {
386
- expect(reference.getContext()).to.equal('single');
400
+ it("get context should return single", function () {
401
+ expect(reference.getContext()).to.equal("single");
387
402
  });
388
- it('getFullTypeid should work', function () {
389
- expect(reference.getFullTypeid()).to.equal('Reference<String>');
390
- expect(reference.getFullTypeid(false)).to.equal('Reference<String>');
403
+ it("getFullTypeid should work", function () {
404
+ expect(reference.getFullTypeid()).to.equal("Reference<String>");
405
+ expect(reference.getFullTypeid(false)).to.equal("Reference<String>");
391
406
  });
392
- it('isPrimitiveType should evaluate to true', function () {
407
+ it("isPrimitiveType should evaluate to true", function () {
393
408
  expect(reference.isPrimitiveType()).to.equal(true);
394
409
  });
395
410
  });
396
411
  });
397
- describe('ReferenceMapProperty', function () {
398
- it('should be possible to create', function () {
412
+ describe("ReferenceMapProperty", function () {
413
+ it("should be possible to create", function () {
399
414
  // Test creation of an anonymous reference
400
- var reference = PropertyFactory.create('Reference', 'map');
415
+ var reference = PropertyFactory.create("Reference", "map");
401
416
  expect(reference).to.be.instanceof(ReferenceMapProperty);
402
- expect(reference.getReferenceTargetTypeId()).to.equal('BaseProperty');
417
+ expect(reference.getReferenceTargetTypeId()).to.equal("BaseProperty");
403
418
  // Test creation of a typed reference
404
- var reference = PropertyFactory.create('Reference<NodeProperty>', 'map');
419
+ var reference = PropertyFactory.create("Reference<NodeProperty>", "map");
405
420
  expect(reference).to.be.instanceof(ReferenceMapProperty);
406
- expect(reference.getReferenceTargetTypeId()).to.equal('NodeProperty');
421
+ expect(reference.getReferenceTargetTypeId()).to.equal("NodeProperty");
407
422
  // Test creation of a typed reference
408
- var reference = PropertyFactory.create('map<Reference<NodeProperty>>');
423
+ var reference = PropertyFactory.create("map<Reference<NodeProperty>>");
409
424
  expect(reference).to.be.instanceof(ReferenceMapProperty);
410
- expect(reference.getReferenceTargetTypeId()).to.equal('NodeProperty');
425
+ expect(reference.getReferenceTargetTypeId()).to.equal("NodeProperty");
411
426
  // Test creation via a template
412
- var prop = PropertyFactory.create('autodesk.test:referencePropertyTest-1.0.0');
427
+ var prop = PropertyFactory.create("autodesk.test:referencePropertyTest-1.0.0");
413
428
  expect(prop._properties.refMap_anon).to.be.instanceof(ReferenceMapProperty);
414
- expect(prop._properties.refMap_anon.getReferenceTargetTypeId()).to.equal('BaseProperty');
429
+ expect(prop._properties.refMap_anon.getReferenceTargetTypeId()).to.equal("BaseProperty");
415
430
  expect(prop._properties.refMap).to.be.instanceof(ReferenceMapProperty);
416
- expect(prop._properties.refMap.getReferenceTargetTypeId()).to.equal('NodeProperty');
431
+ expect(prop._properties.refMap.getReferenceTargetTypeId()).to.equal("NodeProperty");
417
432
  });
418
- it('empty reference should resolve to undefined', function () {
419
- var reference = PropertyFactory.create('Reference', 'map');
433
+ it("empty reference should resolve to undefined", function () {
434
+ var reference = PropertyFactory.create("Reference", "map");
420
435
  // It should work for missing entries
421
- expect(reference.get('missing')).to.be.undefined;
436
+ expect(reference.get("missing")).to.be.undefined;
422
437
  // Explicitly setting it should have the same effect
423
- reference.insert('test', '');
424
- expect(reference.get('test')).to.be.undefined;
438
+ reference.insert("test", "");
439
+ expect(reference.get("test")).to.be.undefined;
425
440
  });
426
- it('setting a referenced member to undefined should turn it into an empty string', function () {
427
- var reference = PropertyFactory.create('Reference', 'map');
441
+ it("setting a referenced member to undefined should turn it into an empty string", function () {
442
+ var reference = PropertyFactory.create("Reference", "map");
428
443
  // First set it to something else than an empty reference
429
- reference.insert('test', '/test');
444
+ reference.insert("test", "/test");
430
445
  // Now reset it via the referenced member
431
- reference.set('test', undefined);
432
- reference.insert('test2', undefined);
446
+ reference.set("test", undefined);
447
+ reference.insert("test2", undefined);
433
448
  // And check the result
434
- expect(reference.getValue('test')).to.equal('');
435
- expect(reference.getValue('test2')).to.equal('');
436
- expect(reference.get('test')).to.be.undefined;
449
+ expect(reference.getValue("test")).to.equal("");
450
+ expect(reference.getValue("test2")).to.equal("");
451
+ expect(reference.get("test")).to.be.undefined;
437
452
  });
438
- it('setting a reference to a non absolute path should not throw', function () {
439
- var reference = PropertyFactory.create('Reference', 'map');
440
- expect(function () { reference.set('test', 'test'); }).to.not.throw();
441
- expect(function () { reference.insert('test2', 'test'); }).to.not.throw();
453
+ it("setting a reference to a non absolute path should not throw", function () {
454
+ var reference = PropertyFactory.create("Reference", "map");
455
+ expect(function () {
456
+ reference.set("test", "test");
457
+ }).to.not.throw();
458
+ expect(function () {
459
+ reference.insert("test2", "test");
460
+ }).to.not.throw();
442
461
  });
443
- describe('Reference resolution', function () {
462
+ describe("Reference resolution", function () {
444
463
  var root, target, reference, reference2, reference3, reference4, relativeReference;
445
464
  var nodeTarget, nestedChild, nodeTarget2, nestedChild2;
446
465
  var mapTarget, nestedMapChild;
447
466
  var arrayTarget, nestedArrayChild;
448
467
  beforeEach(function () {
449
- root = PropertyFactory.create('NodeProperty');
450
- target = PropertyFactory.create('String');
451
- nodeTarget = PropertyFactory.create('NodeProperty');
452
- nestedChild = PropertyFactory.create('String');
453
- relativeReference = PropertyFactory.create('Reference<String>', 'map');
454
- nodeTarget.insert('nested', nestedChild);
455
- nodeTarget.insert('relativeReference', relativeReference);
456
- nodeTarget2 = PropertyFactory.create('NodeProperty');
457
- nestedChild2 = PropertyFactory.create('String');
458
- nodeTarget2.insert('nested', nestedChild2);
459
- mapTarget = PropertyFactory.create('map<>');
460
- nestedMapChild = PropertyFactory.create('String');
461
- mapTarget.insert('nested', nestedMapChild);
462
- arrayTarget = PropertyFactory.create('array<>');
463
- nestedArrayChild = PropertyFactory.create('String');
468
+ root = PropertyFactory.create("NodeProperty");
469
+ target = PropertyFactory.create("String");
470
+ nodeTarget = PropertyFactory.create("NodeProperty");
471
+ nestedChild = PropertyFactory.create("String");
472
+ relativeReference = PropertyFactory.create("Reference<String>", "map");
473
+ nodeTarget.insert("nested", nestedChild);
474
+ nodeTarget.insert("relativeReference", relativeReference);
475
+ nodeTarget2 = PropertyFactory.create("NodeProperty");
476
+ nestedChild2 = PropertyFactory.create("String");
477
+ nodeTarget2.insert("nested", nestedChild2);
478
+ mapTarget = PropertyFactory.create("map<>");
479
+ nestedMapChild = PropertyFactory.create("String");
480
+ mapTarget.insert("nested", nestedMapChild);
481
+ arrayTarget = PropertyFactory.create("array<>");
482
+ nestedArrayChild = PropertyFactory.create("String");
464
483
  arrayTarget.push(nestedArrayChild);
465
- reference = PropertyFactory.create('Reference<String>', 'map');
466
- reference2 = PropertyFactory.create('Reference<Reference>', 'map');
467
- reference3 = PropertyFactory.create('Reference<Reference>');
468
- reference4 = PropertyFactory.create('Reference<String>');
469
- root.insert('target', target);
470
- root.insert('nodeTarget', nodeTarget);
471
- root.insert('nodeTarget2', nodeTarget2);
472
- root.insert('mapTarget', mapTarget);
473
- root.insert('arrayTarget', arrayTarget);
474
- root.insert('reference', reference);
475
- root.insert('reference2', reference2);
476
- root.insert('reference3', reference3);
477
- root.insert('reference4', reference4);
478
- target.value = 'test';
479
- });
480
- it('should allow resolving references', function () {
481
- reference.setValue('test', '/target');
482
- expect(reference.get('test')).to.equal(target);
483
- expect(reference.get('test').value).to.equal('test');
484
- });
485
- it('@bugfix should allow dereferencing via a * with reference map property', function () {
484
+ reference = PropertyFactory.create("Reference<String>", "map");
485
+ reference2 = PropertyFactory.create("Reference<Reference>", "map");
486
+ reference3 = PropertyFactory.create("Reference<Reference>");
487
+ reference4 = PropertyFactory.create("Reference<String>");
488
+ root.insert("target", target);
489
+ root.insert("nodeTarget", nodeTarget);
490
+ root.insert("nodeTarget2", nodeTarget2);
491
+ root.insert("mapTarget", mapTarget);
492
+ root.insert("arrayTarget", arrayTarget);
493
+ root.insert("reference", reference);
494
+ root.insert("reference2", reference2);
495
+ root.insert("reference3", reference3);
496
+ root.insert("reference4", reference4);
497
+ target.value = "test";
498
+ });
499
+ it("should allow resolving references", function () {
500
+ reference.setValue("test", "/target");
501
+ expect(reference.get("test")).to.equal(target);
502
+ expect(reference.get("test").value).to.equal("test");
503
+ });
504
+ it("@bugfix should allow dereferencing via a * with reference map property", function () {
486
505
  reference4.set(target);
487
- reference3.set('/reference4*');
488
- reference.setValue('test', '/reference3');
489
- reference.setValue('test2', '/reference3*');
490
- expect(reference.get('test')).to.equal(reference4);
491
- expect(reference.get('test2')).to.equal(reference3);
492
- });
493
- it('should support setting via set', function () {
494
- reference.set('test', target);
495
- expect(reference.get('test')).to.equal(target);
496
- expect(reference.get('test').value).to.equal('test');
497
- expect(reference.getValue('test')).to.equal('/target');
498
- });
499
- it('set (insert) with a Property should work', function () {
500
- reference.set('test', nestedChild);
501
- expect(reference.getValue('test')).to.equal('/nodeTarget.nested');
502
- });
503
- it('set (insert) with a path should work', function () {
504
- reference.set('test', '/nodeTarget.nested');
505
- expect(reference.getValue('test')).to.equal('/nodeTarget.nested');
506
- });
507
- it('set (insert) with something else should throw', function () {
508
- expect(function () { reference.set('test', 123); }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
509
- });
510
- it('set (modify) with a Property should work', function () {
511
- reference.set('test');
512
- expect(reference.getValue('test')).to.equal('');
513
- reference.set('test', nestedChild);
514
- expect(reference.getValue('test')).to.equal('/nodeTarget.nested');
515
- });
516
- it('set (modify) with a path should work', function () {
517
- reference.set('test');
518
- expect(reference.getValue('test')).to.equal('');
519
- reference.set('test', '/nodeTarget.nested');
520
- expect(reference.getValue('test')).to.equal('/nodeTarget.nested');
521
- });
522
- it('set (modify) with something else should throw', function () {
523
- reference.set('test');
524
- expect(reference.getValue('test')).to.equal('');
525
- expect(function () { reference.set('test', 123); }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
526
- });
527
- it('insert with a Property should work', function () {
528
- reference.insert('test', nestedChild);
529
- expect(reference.getValue('test')).to.equal('/nodeTarget.nested');
530
- });
531
- it('insert with a path should work', function () {
532
- reference.insert('test', '/nodeTarget.nested');
533
- expect(reference.getValue('test')).to.equal('/nodeTarget.nested');
534
- });
535
- it('insert with something else should throw', function () {
536
- expect(function () { reference.insert('test', 123); }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
537
- });
538
- it('setValues with Property and path should work', function () {
539
- reference.setValues([nestedChild, '/nodeTarget.nested']);
540
- expect(reference.getValue(0)).to.equal('/nodeTarget.nested');
541
- expect(reference.getValue(1)).to.equal('/nodeTarget.nested');
542
- reference.setValues([undefined, '']);
543
- expect(reference.getValue(0)).to.equal('');
544
- expect(reference.getValue(1)).to.equal('');
545
- reference.setValues({ 'test': nestedChild, 'test2': '/nodeTarget.nested' });
546
- expect(reference.getValue('test')).to.equal('/nodeTarget.nested');
547
- expect(reference.getValue('test2')).to.equal('/nodeTarget.nested');
548
- });
549
- it('setValues with something else should throw', function () {
550
- expect(function () { reference.setValues({ 'test': 123 }); }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
551
- });
552
- it('should have a working isReferenceValid', function () {
506
+ reference3.set("/reference4*");
507
+ reference.setValue("test", "/reference3");
508
+ reference.setValue("test2", "/reference3*");
509
+ expect(reference.get("test")).to.equal(reference4);
510
+ expect(reference.get("test2")).to.equal(reference3);
511
+ });
512
+ it("should support setting via set", function () {
513
+ reference.set("test", target);
514
+ expect(reference.get("test")).to.equal(target);
515
+ expect(reference.get("test").value).to.equal("test");
516
+ expect(reference.getValue("test")).to.equal("/target");
517
+ });
518
+ it("set (insert) with a Property should work", function () {
519
+ reference.set("test", nestedChild);
520
+ expect(reference.getValue("test")).to.equal("/nodeTarget.nested");
521
+ });
522
+ it("set (insert) with a path should work", function () {
523
+ reference.set("test", "/nodeTarget.nested");
524
+ expect(reference.getValue("test")).to.equal("/nodeTarget.nested");
525
+ });
526
+ it("set (insert) with something else should throw", function () {
527
+ expect(function () {
528
+ reference.set("test", 123);
529
+ }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
530
+ });
531
+ it("set (modify) with a Property should work", function () {
532
+ reference.set("test");
533
+ expect(reference.getValue("test")).to.equal("");
534
+ reference.set("test", nestedChild);
535
+ expect(reference.getValue("test")).to.equal("/nodeTarget.nested");
536
+ });
537
+ it("set (modify) with a path should work", function () {
538
+ reference.set("test");
539
+ expect(reference.getValue("test")).to.equal("");
540
+ reference.set("test", "/nodeTarget.nested");
541
+ expect(reference.getValue("test")).to.equal("/nodeTarget.nested");
542
+ });
543
+ it("set (modify) with something else should throw", function () {
544
+ reference.set("test");
545
+ expect(reference.getValue("test")).to.equal("");
546
+ expect(function () {
547
+ reference.set("test", 123);
548
+ }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
549
+ });
550
+ it("insert with a Property should work", function () {
551
+ reference.insert("test", nestedChild);
552
+ expect(reference.getValue("test")).to.equal("/nodeTarget.nested");
553
+ });
554
+ it("insert with a path should work", function () {
555
+ reference.insert("test", "/nodeTarget.nested");
556
+ expect(reference.getValue("test")).to.equal("/nodeTarget.nested");
557
+ });
558
+ it("insert with something else should throw", function () {
559
+ expect(function () {
560
+ reference.insert("test", 123);
561
+ }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
562
+ });
563
+ it("setValues with Property and path should work", function () {
564
+ reference.setValues([nestedChild, "/nodeTarget.nested"]);
565
+ expect(reference.getValue(0)).to.equal("/nodeTarget.nested");
566
+ expect(reference.getValue(1)).to.equal("/nodeTarget.nested");
567
+ reference.setValues([undefined, ""]);
568
+ expect(reference.getValue(0)).to.equal("");
569
+ expect(reference.getValue(1)).to.equal("");
570
+ reference.setValues({ test: nestedChild, test2: "/nodeTarget.nested" });
571
+ expect(reference.getValue("test")).to.equal("/nodeTarget.nested");
572
+ expect(reference.getValue("test2")).to.equal("/nodeTarget.nested");
573
+ });
574
+ it("setValues with something else should throw", function () {
575
+ expect(function () {
576
+ reference.setValues({ test: 123 });
577
+ }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
578
+ });
579
+ it("should have a working isReferenceValid", function () {
553
580
  // An empty reference should be valid
554
- reference.setValue('test', '');
555
- expect(reference.isReferenceValid('test')).to.be.true;
581
+ reference.setValue("test", "");
582
+ expect(reference.isReferenceValid("test")).to.be.true;
556
583
  // A reference to an existing property should be valid
557
- reference.set('test', target);
558
- expect(reference.isReferenceValid('test')).to.be.true;
584
+ reference.set("test", target);
585
+ expect(reference.isReferenceValid("test")).to.be.true;
559
586
  // A reference that cannot be resolved should be invalid
560
- reference.setValue('test', '/invalid_path');
561
- expect(reference.isReferenceValid('test')).to.be.false;
587
+ reference.setValue("test", "/invalid_path");
588
+ expect(reference.isReferenceValid("test")).to.be.false;
562
589
  });
563
- it('should allow dereferencing via the array syntax', function () {
564
- reference.set('test', target);
565
- expect(root.resolvePath('/reference[test]')).to.equal(target);
590
+ it("should allow dereferencing via the array syntax", function () {
591
+ reference.set("test", target);
592
+ expect(root.resolvePath("/reference[test]")).to.equal(target);
566
593
  });
567
- it('should allow accessing nested paths', function () {
568
- reference.insert('test', nodeTarget);
569
- expect(root.resolvePath('/reference[test].nested')).to.equal(nestedChild);
594
+ it("should allow accessing nested paths", function () {
595
+ reference.insert("test", nodeTarget);
596
+ expect(root.resolvePath("/reference[test].nested")).to.equal(nestedChild);
570
597
  });
571
- it('should allow accessing referenced maps', function () {
572
- reference.set('test', mapTarget);
573
- expect(root.resolvePath('/reference[test][nested]')).to.equal(nestedMapChild);
598
+ it("should allow accessing referenced maps", function () {
599
+ reference.set("test", mapTarget);
600
+ expect(root.resolvePath("/reference[test][nested]")).to.equal(nestedMapChild);
574
601
  });
575
- it('should allow accessing referenced arrays', function () {
576
- reference.set('test', arrayTarget);
577
- expect(root.resolvePath('/reference[test][0]')).to.equal(nestedArrayChild);
602
+ it("should allow accessing referenced arrays", function () {
603
+ reference.set("test", arrayTarget);
604
+ expect(root.resolvePath("/reference[test][0]")).to.equal(nestedArrayChild);
578
605
  });
579
- it('double dereferencing a reference should work', function () {
580
- reference.set('test', target);
581
- reference2.set('test', reference);
582
- expect(root.resolvePath('/reference2[test][test]')).to.equal(target);
606
+ it("double dereferencing a reference should work", function () {
607
+ reference.set("test", target);
608
+ reference2.set("test", reference);
609
+ expect(root.resolvePath("/reference2[test][test]")).to.equal(target);
583
610
  });
584
- it('mixing maps and normal maps should work', function () {
585
- reference.set('test', target);
611
+ it("mixing maps and normal maps should work", function () {
612
+ reference.set("test", target);
586
613
  reference3.set(reference);
587
- expect(root.resolvePath('/reference3[test]')).to.equal(target);
588
- expect(root.resolvePath('/reference3*[test]')).to.equal(undefined);
589
- expect(root.get(['reference3', dereferenceToken, 'test'])).to.equal(undefined);
590
- reference.set('test', reference3);
614
+ expect(root.resolvePath("/reference3[test]")).to.equal(target);
615
+ expect(root.resolvePath("/reference3*[test]")).to.equal(undefined);
616
+ expect(root.get(["reference3", dereferenceToken, "test"])).to.equal(undefined);
617
+ reference.set("test", reference3);
591
618
  reference3.set(target);
592
- expect(root.resolvePath('/reference[test]')).to.equal(target);
593
- expect(root.resolvePath('/reference[test]*')).to.equal(reference3);
594
- expect(root.get(['reference', 'test', dereferenceToken]));
595
- });
596
- it('should continue to work when the reference or the referenced node changes', function () {
597
- reference.insert('test', nodeTarget);
598
- expect(root.resolvePath('/reference[test].nested')).to.equal(nestedChild);
599
- expect(reference.resolvePath('[test].nested')).to.equal(nestedChild);
600
- reference.set('test', nodeTarget2);
601
- expect(root.resolvePath('/reference[test].nested')).to.equal(nestedChild2);
602
- expect(reference.resolvePath('[test].nested')).to.equal(nestedChild2);
603
- nodeTarget2.remove('nested');
604
- var newChild = PropertyFactory.create('String');
605
- nodeTarget2.insert('nested', newChild);
606
- expect(reference.resolvePath('[test].nested')).to.equal(newChild);
607
- });
608
- it('should allow dereferencing via the array syntax using relative paths', function () {
609
- relativeReference.setValue('test', '../target');
610
- expect(root.resolvePath('/nodeTarget.relativeReference[test]')).to.equal(target);
611
- });
612
- it('remove should work and return the string path', function () {
613
- reference.insert('two', target);
614
- expect(reference.remove('two')).to.equal('/target');
615
- expect(reference.getValue('two')).to.be.undefined;
616
- });
617
- it('getValues should return a map containing path strings', function () {
618
- var newReference = PropertyFactory.create('Reference<String>', 'map');
619
- newReference.insert('one', target);
620
- newReference.insert('two', nodeTarget);
619
+ expect(root.resolvePath("/reference[test]")).to.equal(target);
620
+ expect(root.resolvePath("/reference[test]*")).to.equal(reference3);
621
+ expect(root.get(["reference", "test", dereferenceToken]));
622
+ });
623
+ it("should continue to work when the reference or the referenced node changes", function () {
624
+ reference.insert("test", nodeTarget);
625
+ expect(root.resolvePath("/reference[test].nested")).to.equal(nestedChild);
626
+ expect(reference.resolvePath("[test].nested")).to.equal(nestedChild);
627
+ reference.set("test", nodeTarget2);
628
+ expect(root.resolvePath("/reference[test].nested")).to.equal(nestedChild2);
629
+ expect(reference.resolvePath("[test].nested")).to.equal(nestedChild2);
630
+ nodeTarget2.remove("nested");
631
+ var newChild = PropertyFactory.create("String");
632
+ nodeTarget2.insert("nested", newChild);
633
+ expect(reference.resolvePath("[test].nested")).to.equal(newChild);
634
+ });
635
+ it("should allow dereferencing via the array syntax using relative paths", function () {
636
+ relativeReference.setValue("test", "../target");
637
+ expect(root.resolvePath("/nodeTarget.relativeReference[test]")).to.equal(target);
638
+ });
639
+ it("remove should work and return the string path", function () {
640
+ reference.insert("two", target);
641
+ expect(reference.remove("two")).to.equal("/target");
642
+ expect(reference.getValue("two")).to.be.undefined;
643
+ });
644
+ it("getValues should return a map containing path strings", function () {
645
+ var newReference = PropertyFactory.create("Reference<String>", "map");
646
+ newReference.insert("one", target);
647
+ newReference.insert("two", nodeTarget);
621
648
  expect(newReference.getValues()).to.deep.equal({
622
- 'one': '/target',
623
- 'two': '/nodeTarget',
649
+ one: "/target",
650
+ two: "/nodeTarget",
624
651
  });
625
652
  });
626
- it('getContext should return map', function () {
627
- var newReference = PropertyFactory.create('Reference<String>', 'map');
628
- expect(newReference.getContext()).to.equal('map');
653
+ it("getContext should return map", function () {
654
+ var newReference = PropertyFactory.create("Reference<String>", "map");
655
+ expect(newReference.getContext()).to.equal("map");
629
656
  });
630
657
  });
631
658
  });
632
- describe('ReferenceArrayProperty', function () {
633
- it('should be possible to create', function () {
659
+ describe("ReferenceArrayProperty", function () {
660
+ it("should be possible to create", function () {
634
661
  // Test creation of an anonymous reference
635
- var reference = PropertyFactory.create('Reference', 'array');
662
+ var reference = PropertyFactory.create("Reference", "array");
636
663
  expect(reference).to.be.instanceof(ReferenceArrayProperty);
637
- expect(reference.getReferenceTargetTypeId()).to.equal('BaseProperty');
664
+ expect(reference.getReferenceTargetTypeId()).to.equal("BaseProperty");
638
665
  // Test creation of a typed reference
639
- var reference = PropertyFactory.create('Reference<NodeProperty>', 'array');
666
+ var reference = PropertyFactory.create("Reference<NodeProperty>", "array");
640
667
  expect(reference).to.be.instanceof(ReferenceArrayProperty);
641
- expect(reference.getReferenceTargetTypeId()).to.equal('NodeProperty');
668
+ expect(reference.getReferenceTargetTypeId()).to.equal("NodeProperty");
642
669
  // Test creation of a typed reference
643
- var reference = PropertyFactory.create('array<Reference<NodeProperty>>');
670
+ var reference = PropertyFactory.create("array<Reference<NodeProperty>>");
644
671
  expect(reference).to.be.instanceof(ReferenceArrayProperty);
645
- expect(reference.getReferenceTargetTypeId()).to.equal('NodeProperty');
672
+ expect(reference.getReferenceTargetTypeId()).to.equal("NodeProperty");
646
673
  // Test creation via a template
647
- var prop = PropertyFactory.create('autodesk.test:referencePropertyTest-1.0.0');
674
+ var prop = PropertyFactory.create("autodesk.test:referencePropertyTest-1.0.0");
648
675
  expect(prop._properties.refArray_anon).to.be.instanceof(ReferenceArrayProperty);
649
- expect(prop._properties.refArray_anon.getReferenceTargetTypeId()).to.equal('BaseProperty');
676
+ expect(prop._properties.refArray_anon.getReferenceTargetTypeId()).to.equal("BaseProperty");
650
677
  expect(prop._properties.refArray).to.be.instanceof(ReferenceArrayProperty);
651
- expect(prop._properties.refArray.getReferenceTargetTypeId()).to.equal('NodeProperty');
678
+ expect(prop._properties.refArray.getReferenceTargetTypeId()).to.equal("NodeProperty");
652
679
  });
653
- it('empty reference should resolve to undefined', function () {
654
- var reference = PropertyFactory.create('Reference', 'array');
680
+ it("empty reference should resolve to undefined", function () {
681
+ var reference = PropertyFactory.create("Reference", "array");
655
682
  // Explicitly setting it should have the same effect
656
- reference.push('');
683
+ reference.push("");
657
684
  expect(reference.get(0)).to.be.undefined;
658
685
  // Explicitly setting it should have the same effect
659
- reference.set(0, '');
686
+ reference.set(0, "");
660
687
  expect(reference.get(0)).to.be.undefined;
661
- expect(reference.getValue(0)).to.equal('');
688
+ expect(reference.getValue(0)).to.equal("");
662
689
  });
663
- it('setting a referenced member to undefined should turn it into an empty string', function () {
664
- var reference = PropertyFactory.create('Reference', 'array');
690
+ it("setting a referenced member to undefined should turn it into an empty string", function () {
691
+ var reference = PropertyFactory.create("Reference", "array");
665
692
  // Test pushing a value
666
693
  reference.push(undefined);
667
694
  expect(reference.get(0)).to.equal(undefined);
668
695
  // First set it to something else than an empty reference
669
- reference.set(0, '/test');
696
+ reference.set(0, "/test");
670
697
  // Now reset it via the referenced member
671
698
  reference.set(0, undefined);
672
699
  // And check the result
673
700
  expect(reference.get(0)).to.equal(undefined);
674
701
  });
675
- it.skip('setting a reference to a non absolute path should not throw', function () {
676
- var reference = PropertyFactory.create('Reference', 'array');
677
- expect(function () { reference.push('test'); }).to.throw();
678
- expect(function () { reference.push(''); reference.set(0, 'test'); }).to.throw();
702
+ it.skip("setting a reference to a non absolute path should not throw", function () {
703
+ var reference = PropertyFactory.create("Reference", "array");
704
+ expect(function () {
705
+ reference.push("test");
706
+ }).to.throw();
707
+ expect(function () {
708
+ reference.push("");
709
+ reference.set(0, "test");
710
+ }).to.throw();
679
711
  });
680
- describe('Reference resolution', function () {
712
+ describe("Reference resolution", function () {
681
713
  var root, target, reference, reference2, reference3, relativeReference;
682
714
  var nodeTarget, nestedChild, nodeTarget2, nestedChild2;
683
715
  var mapTarget, nestedMapChild;
684
716
  var arrayTarget, nestedArrayChild;
685
717
  beforeEach(function () {
686
- root = PropertyFactory.create('NodeProperty');
687
- nodeTarget = PropertyFactory.create('NodeProperty');
688
- nestedChild = PropertyFactory.create('String');
689
- relativeReference = PropertyFactory.create('Reference<String>', 'array');
690
- nodeTarget.insert('nested', nestedChild);
691
- nodeTarget.insert('relativeReference', relativeReference);
692
- nodeTarget2 = PropertyFactory.create('NodeProperty');
693
- nestedChild2 = PropertyFactory.create('String');
694
- nodeTarget2.insert('nested', nestedChild2);
695
- mapTarget = PropertyFactory.create('map<>');
696
- nestedMapChild = PropertyFactory.create('String');
697
- mapTarget.insert('nested', nestedMapChild);
698
- arrayTarget = PropertyFactory.create('array<>');
699
- nestedArrayChild = PropertyFactory.create('String');
718
+ root = PropertyFactory.create("NodeProperty");
719
+ nodeTarget = PropertyFactory.create("NodeProperty");
720
+ nestedChild = PropertyFactory.create("String");
721
+ relativeReference = PropertyFactory.create("Reference<String>", "array");
722
+ nodeTarget.insert("nested", nestedChild);
723
+ nodeTarget.insert("relativeReference", relativeReference);
724
+ nodeTarget2 = PropertyFactory.create("NodeProperty");
725
+ nestedChild2 = PropertyFactory.create("String");
726
+ nodeTarget2.insert("nested", nestedChild2);
727
+ mapTarget = PropertyFactory.create("map<>");
728
+ nestedMapChild = PropertyFactory.create("String");
729
+ mapTarget.insert("nested", nestedMapChild);
730
+ arrayTarget = PropertyFactory.create("array<>");
731
+ nestedArrayChild = PropertyFactory.create("String");
700
732
  arrayTarget.push(nestedArrayChild);
701
- target = PropertyFactory.create('String');
702
- reference = PropertyFactory.create('Reference<String>', 'array');
703
- reference2 = PropertyFactory.create('Reference<Reference>', 'array');
704
- reference3 = PropertyFactory.create('Reference<Reference>');
705
- root.insert('target', target);
706
- root.insert('nodeTarget', nodeTarget);
707
- root.insert('nodeTarget2', nodeTarget2);
708
- root.insert('mapTarget', mapTarget);
709
- root.insert('arrayTarget', arrayTarget);
710
- root.insert('reference', reference);
711
- root.insert('reference2', reference2);
712
- root.insert('reference3', reference3);
713
- target.value = 'test';
714
- });
715
- it('should allow resolving references', function () {
716
- reference.push('/target');
733
+ target = PropertyFactory.create("String");
734
+ reference = PropertyFactory.create("Reference<String>", "array");
735
+ reference2 = PropertyFactory.create("Reference<Reference>", "array");
736
+ reference3 = PropertyFactory.create("Reference<Reference>");
737
+ root.insert("target", target);
738
+ root.insert("nodeTarget", nodeTarget);
739
+ root.insert("nodeTarget2", nodeTarget2);
740
+ root.insert("mapTarget", mapTarget);
741
+ root.insert("arrayTarget", arrayTarget);
742
+ root.insert("reference", reference);
743
+ root.insert("reference2", reference2);
744
+ root.insert("reference3", reference3);
745
+ target.value = "test";
746
+ });
747
+ it("should allow resolving references", function () {
748
+ reference.push("/target");
717
749
  expect(reference.get(0)).to.equal(target);
718
- expect(reference.get(0).value).to.equal('test');
750
+ expect(reference.get(0).value).to.equal("test");
719
751
  });
720
- it('should support setting via push', function () {
752
+ it("should support setting via push", function () {
721
753
  reference.push(target);
722
754
  expect(reference.get(0)).to.equal(target);
723
- expect(reference.get(0).value).to.equal('test');
755
+ expect(reference.get(0).value).to.equal("test");
724
756
  // expect(reference.get(0)).to.equal('/target');
725
757
  // this last test will break when we get rid of getReferencedProperty. Fix when get supports '*'
726
758
  });
727
- it('should support setting via insert', function () {
759
+ it("should support setting via insert", function () {
728
760
  reference.insert(0, target);
729
761
  expect(reference.get(0)).to.equal(target);
730
- expect(reference.get(0).value).to.equal('test');
762
+ expect(reference.get(0).value).to.equal("test");
731
763
  // expect(reference.get(0)).to.equal('/target');
732
764
  // see comment above
733
765
  });
734
- it('should support setting via insertRange', function () {
766
+ it("should support setting via insertRange", function () {
735
767
  reference.insertRange(0, [target, nodeTarget]);
736
768
  expect(reference.get(0)).to.equal(target);
737
- expect(reference.get(0).value).to.equal('test');
769
+ expect(reference.get(0).value).to.equal("test");
738
770
  // expect(reference.get(0)).to.equal('/target');
739
771
  // see comment above
740
772
  expect(reference.get(1)).to.equal(nodeTarget);
741
773
  // expect(reference.get(1)).to.equal('/nodeTarget');
742
774
  // see comment above
743
775
  });
744
- it('should support setting via setRange', function () {
745
- reference.insertRange(0, ['', '']);
776
+ it("should support setting via setRange", function () {
777
+ reference.insertRange(0, ["", ""]);
746
778
  reference.setRange(0, [target, nodeTarget]);
747
779
  expect(reference.get(0)).to.equal(target);
748
- expect(reference.get(0).value).to.equal('test');
780
+ expect(reference.get(0).value).to.equal("test");
749
781
  // expect(reference.get(0)).to.equal('/target');
750
782
  // see comment above
751
783
  expect(reference.get(1)).to.equal(nodeTarget);
752
784
  // expect(reference.get(1)).to.equal('/nodeTarget');
753
785
  // see comment above
754
786
  });
755
- it('should support setting via set', function () {
756
- reference.insertRange(0, ['', '']);
787
+ it("should support setting via set", function () {
788
+ reference.insertRange(0, ["", ""]);
757
789
  reference.set(0, target);
758
790
  reference.set(1, nodeTarget);
759
791
  expect(reference.get(0)).to.equal(target);
760
- expect(reference.get(0).value).to.equal('test');
792
+ expect(reference.get(0).value).to.equal("test");
761
793
  // expect(reference.get(0)).to.equal('/target');
762
794
  // to fix once .get accepts '*' tokens
763
795
  expect(reference.get(1)).to.equal(nodeTarget);
764
796
  // expect(reference.get(1)).to.equal('/nodeTarget');
765
797
  // to fix once .get accepts '*' tokens
766
798
  });
767
- it('set with a Property should work', function () {
799
+ it("set with a Property should work", function () {
768
800
  reference.insert(0);
769
- expect(reference.getValue(0)).to.equal('');
801
+ expect(reference.getValue(0)).to.equal("");
770
802
  reference.set(0, nestedChild);
771
- expect(reference.getValue(0)).to.equal('/nodeTarget.nested');
803
+ expect(reference.getValue(0)).to.equal("/nodeTarget.nested");
772
804
  });
773
- it('set with a path should work', function () {
805
+ it("set with a path should work", function () {
774
806
  reference.insert(0);
775
- expect(reference.getValue(0)).to.equal('');
776
- reference.set(0, '/nodeTarget.nested');
777
- expect(reference.getValue(0)).to.equal('/nodeTarget.nested');
807
+ expect(reference.getValue(0)).to.equal("");
808
+ reference.set(0, "/nodeTarget.nested");
809
+ expect(reference.getValue(0)).to.equal("/nodeTarget.nested");
778
810
  });
779
- it('set with something else should throw', function () {
811
+ it("set with something else should throw", function () {
780
812
  reference.insert(0);
781
- expect(reference.getValue(0)).to.equal('');
782
- expect(function () { reference.set(0, 123); }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
813
+ expect(reference.getValue(0)).to.equal("");
814
+ expect(function () {
815
+ reference.set(0, 123);
816
+ }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
783
817
  });
784
- it('set should throw if in_offset is not an integer', function () {
818
+ it("set should throw if in_offset is not an integer", function () {
785
819
  reference.insert(0);
786
- expect(reference.getValue(0)).to.equal('');
787
- expect(function () { reference.set('test', '/nodeTarget.nested'); })
788
- .to.throw(MSG.NOT_NUMBER);
820
+ expect(reference.getValue(0)).to.equal("");
821
+ expect(function () {
822
+ reference.set("test", "/nodeTarget.nested");
823
+ }).to.throw(MSG.NOT_NUMBER);
789
824
  });
790
- it('setRange with a Property and a path should work', function () {
825
+ it("setRange with a Property and a path should work", function () {
791
826
  reference.insert(0);
792
827
  reference.insert(1);
793
- expect(reference.getValue(0)).to.equal('');
794
- expect(reference.getValue(1)).to.equal('');
795
- reference.setRange(0, [nestedChild, '/nodeTarget.nested']);
796
- expect(reference.getValue(0)).to.equal('/nodeTarget.nested');
797
- expect(reference.getValue(1)).to.equal('/nodeTarget.nested');
828
+ expect(reference.getValue(0)).to.equal("");
829
+ expect(reference.getValue(1)).to.equal("");
830
+ reference.setRange(0, [nestedChild, "/nodeTarget.nested"]);
831
+ expect(reference.getValue(0)).to.equal("/nodeTarget.nested");
832
+ expect(reference.getValue(1)).to.equal("/nodeTarget.nested");
798
833
  });
799
- it('setRange with something else should throw', function () {
834
+ it("setRange with something else should throw", function () {
800
835
  reference.insert(0);
801
- expect(reference.getValue(0)).to.equal('');
802
- expect(function () { reference.setRange(0, [123]); }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
836
+ expect(reference.getValue(0)).to.equal("");
837
+ expect(function () {
838
+ reference.setRange(0, [123]);
839
+ }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
803
840
  });
804
- it('setRange should throw if in_offset is not an integer', function () {
841
+ it("setRange should throw if in_offset is not an integer", function () {
805
842
  reference.insert(0);
806
843
  reference.insert(1);
807
- expect(reference.getValue(0)).to.equal('');
808
- expect(reference.getValue(1)).to.equal('');
809
- expect(function () { reference.setRange('test', [nestedChild, '/nodeTarget.nested']); })
810
- .to.throw(MSG.NOT_NUMBER);
844
+ expect(reference.getValue(0)).to.equal("");
845
+ expect(reference.getValue(1)).to.equal("");
846
+ expect(function () {
847
+ reference.setRange("test", [nestedChild, "/nodeTarget.nested"]);
848
+ }).to.throw(MSG.NOT_NUMBER);
811
849
  });
812
- it('insert with a Property should work', function () {
850
+ it("insert with a Property should work", function () {
813
851
  reference.insert(0, nestedChild);
814
- expect(reference.getValue(0)).to.equal('/nodeTarget.nested');
852
+ expect(reference.getValue(0)).to.equal("/nodeTarget.nested");
815
853
  });
816
- it('insert with a path should work', function () {
817
- reference.insert(0, '/nodeTarget.nested');
818
- expect(reference.getValue(0)).to.equal('/nodeTarget.nested');
854
+ it("insert with a path should work", function () {
855
+ reference.insert(0, "/nodeTarget.nested");
856
+ expect(reference.getValue(0)).to.equal("/nodeTarget.nested");
819
857
  });
820
- it('insert with something else should throw', function () {
821
- expect(function () { reference.insert(0, 123); }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
858
+ it("insert with something else should throw", function () {
859
+ expect(function () {
860
+ reference.insert(0, 123);
861
+ }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
822
862
  });
823
- it('insertRange with a Property and a path should work', function () {
824
- reference.insertRange(0, [nestedChild, '/nodeTarget.nested']);
825
- expect(reference.getValue(0)).to.equal('/nodeTarget.nested');
826
- expect(reference.getValue(1)).to.equal('/nodeTarget.nested');
863
+ it("insertRange with a Property and a path should work", function () {
864
+ reference.insertRange(0, [nestedChild, "/nodeTarget.nested"]);
865
+ expect(reference.getValue(0)).to.equal("/nodeTarget.nested");
866
+ expect(reference.getValue(1)).to.equal("/nodeTarget.nested");
827
867
  });
828
- it('insertRange with something else should throw', function () {
829
- expect(function () { reference.insertRange(0, [123]); }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
868
+ it("insertRange with something else should throw", function () {
869
+ expect(function () {
870
+ reference.insertRange(0, [123]);
871
+ }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
830
872
  });
831
- it('enqueue with a Property should work', function () {
873
+ it("enqueue with a Property should work", function () {
832
874
  reference.enqueue(nestedChild);
833
- expect(reference.getValue(0)).to.equal('/nodeTarget.nested');
875
+ expect(reference.getValue(0)).to.equal("/nodeTarget.nested");
834
876
  });
835
- it('enqueue with a path should work', function () {
836
- reference.enqueue('/nodeTarget.nested');
837
- expect(reference.getValue(0)).to.equal('/nodeTarget.nested');
877
+ it("enqueue with a path should work", function () {
878
+ reference.enqueue("/nodeTarget.nested");
879
+ expect(reference.getValue(0)).to.equal("/nodeTarget.nested");
838
880
  });
839
- it('enqueue with something else should throw', function () {
840
- expect(function () { reference.enqueue(123); }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
881
+ it("enqueue with something else should throw", function () {
882
+ expect(function () {
883
+ reference.enqueue(123);
884
+ }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
841
885
  });
842
- it('push with a Property should work', function () {
886
+ it("push with a Property should work", function () {
843
887
  reference.push(nestedChild);
844
- expect(reference.getValue(0)).to.equal('/nodeTarget.nested');
888
+ expect(reference.getValue(0)).to.equal("/nodeTarget.nested");
845
889
  });
846
- it('push with a path should work', function () {
847
- reference.push('/nodeTarget.nested');
848
- expect(reference.getValue(0)).to.equal('/nodeTarget.nested');
890
+ it("push with a path should work", function () {
891
+ reference.push("/nodeTarget.nested");
892
+ expect(reference.getValue(0)).to.equal("/nodeTarget.nested");
849
893
  });
850
- it('push with something else should throw', function () {
851
- expect(function () { reference.push(123); }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
894
+ it("push with something else should throw", function () {
895
+ expect(function () {
896
+ reference.push(123);
897
+ }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
852
898
  });
853
- it('unshift with a Property should work', function () {
899
+ it("unshift with a Property should work", function () {
854
900
  reference.unshift(nestedChild);
855
- expect(reference.getValue(0)).to.equal('/nodeTarget.nested');
856
- });
857
- it('unshift with a path should work', function () {
858
- reference.unshift('/nodeTarget.nested');
859
- expect(reference.getValue(0)).to.equal('/nodeTarget.nested');
860
- });
861
- it('unshift with something else should throw', function () {
862
- expect(function () { reference.unshift(123); }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
863
- });
864
- it('setValues with Property and path should work', function () {
865
- reference.setValues([nestedChild, '/nodeTarget.nested']);
866
- expect(reference.getValue(0)).to.equal('/nodeTarget.nested');
867
- expect(reference.getValue(1)).to.equal('/nodeTarget.nested');
868
- reference.setValues([undefined, '']);
869
- expect(reference.getValue(0)).to.equal('');
870
- expect(reference.getValue(1)).to.equal('');
871
- reference.setValues({ 0: nestedChild, 1: '/nodeTarget.nested' });
872
- expect(reference.getValue(0)).to.equal('/nodeTarget.nested');
873
- expect(reference.getValue(1)).to.equal('/nodeTarget.nested');
874
- });
875
- it('setValues with something else should throw', function () {
876
- expect(function () { reference.setValues({ 0: 123 }); }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
877
- });
878
- it('should have a working isReferenceValid', function () {
901
+ expect(reference.getValue(0)).to.equal("/nodeTarget.nested");
902
+ });
903
+ it("unshift with a path should work", function () {
904
+ reference.unshift("/nodeTarget.nested");
905
+ expect(reference.getValue(0)).to.equal("/nodeTarget.nested");
906
+ });
907
+ it("unshift with something else should throw", function () {
908
+ expect(function () {
909
+ reference.unshift(123);
910
+ }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
911
+ });
912
+ it("setValues with Property and path should work", function () {
913
+ reference.setValues([nestedChild, "/nodeTarget.nested"]);
914
+ expect(reference.getValue(0)).to.equal("/nodeTarget.nested");
915
+ expect(reference.getValue(1)).to.equal("/nodeTarget.nested");
916
+ reference.setValues([undefined, ""]);
917
+ expect(reference.getValue(0)).to.equal("");
918
+ expect(reference.getValue(1)).to.equal("");
919
+ reference.setValues({ 0: nestedChild, 1: "/nodeTarget.nested" });
920
+ expect(reference.getValue(0)).to.equal("/nodeTarget.nested");
921
+ expect(reference.getValue(1)).to.equal("/nodeTarget.nested");
922
+ });
923
+ it("setValues with something else should throw", function () {
924
+ expect(function () {
925
+ reference.setValues({ 0: 123 });
926
+ }).to.throw(MSG.PROPERTY_OR_UNDEFINED);
927
+ });
928
+ it("should have a working isReferenceValid", function () {
879
929
  // An empty reference should be valid
880
- reference.push('');
930
+ reference.push("");
881
931
  expect(reference.isReferenceValid(0)).to.be.true;
882
932
  // A reference to an existing property should be valid
883
933
  reference.set(0, target);
884
934
  expect(reference.isReferenceValid(0)).to.be.true;
885
935
  // A reference that cannot be resolved should be invalid
886
- reference.set(0, '/invalid_path');
936
+ reference.set(0, "/invalid_path");
887
937
  expect(reference.isReferenceValid(0)).to.be.false;
888
938
  });
889
- it('should allow dereferencing via the array syntax', function () {
939
+ it("should allow dereferencing via the array syntax", function () {
890
940
  reference.push(target);
891
- expect(root.resolvePath('/reference[0]')).to.equal(target);
941
+ expect(root.resolvePath("/reference[0]")).to.equal(target);
892
942
  });
893
- it('should allow accessing nested paths', function () {
943
+ it("should allow accessing nested paths", function () {
894
944
  reference.push(nodeTarget);
895
- expect(root.resolvePath('/reference[0].nested')).to.equal(nestedChild);
945
+ expect(root.resolvePath("/reference[0].nested")).to.equal(nestedChild);
896
946
  });
897
- it('should allow accessing referenced maps', function () {
947
+ it("should allow accessing referenced maps", function () {
898
948
  reference.push(mapTarget);
899
- expect(root.resolvePath('/reference[0][nested]')).to.equal(nestedMapChild);
949
+ expect(root.resolvePath("/reference[0][nested]")).to.equal(nestedMapChild);
900
950
  });
901
- it('should allow accessing referenced arrays', function () {
951
+ it("should allow accessing referenced arrays", function () {
902
952
  reference.push(arrayTarget);
903
- expect(root.resolvePath('/reference[0][0]')).to.equal(nestedArrayChild);
953
+ expect(root.resolvePath("/reference[0][0]")).to.equal(nestedArrayChild);
904
954
  });
905
- it('double dereferencing a reference should work', function () {
955
+ it("double dereferencing a reference should work", function () {
906
956
  reference.push(target);
907
957
  reference2.push(reference);
908
- expect(root.resolvePath('/reference2[0][0]')).to.equal(target);
958
+ expect(root.resolvePath("/reference2[0][0]")).to.equal(target);
909
959
  });
910
- it('mixing references and array references should work', function () {
960
+ it("mixing references and array references should work", function () {
911
961
  reference.push(target);
912
962
  reference3.set(reference);
913
- expect(root.resolvePath('/reference3[0]')).to.equal(target);
914
- expect(root.resolvePath('/reference3*[0]')).to.equal(undefined);
963
+ expect(root.resolvePath("/reference3[0]")).to.equal(target);
964
+ expect(root.resolvePath("/reference3*[0]")).to.equal(undefined);
915
965
  reference.set(0, reference3);
916
966
  reference3.set(target);
917
- expect(root.resolvePath('/reference[0]')).to.equal(target);
918
- expect(root.resolvePath('/reference[0]*')).to.equal(reference3);
967
+ expect(root.resolvePath("/reference[0]")).to.equal(target);
968
+ expect(root.resolvePath("/reference[0]*")).to.equal(reference3);
919
969
  });
920
- it('should continue to work when the reference or the referenced node changes', function () {
970
+ it("should continue to work when the reference or the referenced node changes", function () {
921
971
  reference.push(nodeTarget);
922
- expect(root.resolvePath('/reference[0].nested')).to.equal(nestedChild);
923
- expect(reference.resolvePath('[0].nested')).to.equal(nestedChild);
972
+ expect(root.resolvePath("/reference[0].nested")).to.equal(nestedChild);
973
+ expect(reference.resolvePath("[0].nested")).to.equal(nestedChild);
924
974
  reference.set(0, nodeTarget2);
925
- expect(root.resolvePath('/reference[0].nested')).to.equal(nestedChild2);
926
- expect(reference.resolvePath('[0].nested')).to.equal(nestedChild2);
927
- nodeTarget2.remove('nested');
928
- var newChild = PropertyFactory.create('String');
929
- nodeTarget2.insert('nested', newChild);
930
- expect(reference.resolvePath('[0].nested')).to.equal(newChild);
931
- });
932
- it('should allow dereferencing via the array syntax using relative paths', function () {
933
- relativeReference.push('../target');
934
- expect(root.resolvePath('/nodeTarget.relativeReference[0]')).to.equal(target);
935
- });
936
- it('Should return references value when a reference points to a context simple property', function () {
937
- let test = PropertyFactory.create('NodeProperty');
938
- let ref = PropertyFactory.create('Reference');
939
- let nameProperty = PropertyFactory.create('NamedProperty');
940
- test.insert('b', nameProperty);
941
- test.insert('reference', ref);
942
- test.resolvePath('reference*').set(nameProperty);
975
+ expect(root.resolvePath("/reference[0].nested")).to.equal(nestedChild2);
976
+ expect(reference.resolvePath("[0].nested")).to.equal(nestedChild2);
977
+ nodeTarget2.remove("nested");
978
+ var newChild = PropertyFactory.create("String");
979
+ nodeTarget2.insert("nested", newChild);
980
+ expect(reference.resolvePath("[0].nested")).to.equal(newChild);
981
+ });
982
+ it("should allow dereferencing via the array syntax using relative paths", function () {
983
+ relativeReference.push("../target");
984
+ expect(root.resolvePath("/nodeTarget.relativeReference[0]")).to.equal(target);
985
+ });
986
+ it("Should return references value when a reference points to a context simple property", function () {
987
+ let test = PropertyFactory.create("NodeProperty");
988
+ let ref = PropertyFactory.create("Reference");
989
+ let nameProperty = PropertyFactory.create("NamedProperty");
990
+ test.insert("b", nameProperty);
991
+ test.insert("reference", ref);
992
+ test.resolvePath("reference*").set(nameProperty);
943
993
  expect(test.getValues()).to.deep.equal({
944
994
  b: {
945
995
  guid: nameProperty.getGuid(),
@@ -949,118 +999,118 @@ describe('Reference Properties', function () {
949
999
  },
950
1000
  });
951
1001
  });
952
- it('.pop should work', function () {
1002
+ it(".pop should work", function () {
953
1003
  reference.insertRange(0, [target, nodeTarget]);
954
1004
  expect(reference.length).to.equal(2);
955
1005
  reference.pop();
956
1006
  expect(reference.length).to.equal(1);
957
- expect(reference.pop()).to.equal('/target');
1007
+ expect(reference.pop()).to.equal("/target");
958
1008
  });
959
- it('.remove and .removeRange should work', function () {
1009
+ it(".remove and .removeRange should work", function () {
960
1010
  reference.insertRange(0, [target, nodeTarget]);
961
1011
  expect(reference.length).to.equal(2);
962
- expect(reference.remove(0)).to.equal('/target');
1012
+ expect(reference.remove(0)).to.equal("/target");
963
1013
  expect(reference.length).to.equal(1);
964
1014
  reference.insert(1, target);
965
- expect(reference.removeRange(0, 2)).to.deep.equal(['/nodeTarget', '/target']);
1015
+ expect(reference.removeRange(0, 2)).to.deep.equal(["/nodeTarget", "/target"]);
966
1016
  expect(reference.length).to.equal(0);
967
1017
  });
968
- it('.getValues should work', function () {
1018
+ it(".getValues should work", function () {
969
1019
  reference.insertRange(0, [target, nodeTarget]);
970
- expect(reference.getValues()).to.deep.equal(['/target', '/nodeTarget']);
1020
+ expect(reference.getValues()).to.deep.equal(["/target", "/nodeTarget"]);
971
1021
  });
972
1022
  });
973
1023
  });
974
- describe('Changeset tests', function () {
1024
+ describe("Changeset tests", function () {
975
1025
  var root;
976
1026
  beforeEach(function () {
977
- root = PropertyFactory.create('NodeProperty');
978
- root.insert('template', PropertyFactory.create('autodesk.test:referencePropertyTest-1.0.0'));
979
- root.insert('reference', PropertyFactory.create('Reference<String>'));
980
- root.insert('referenceMap', PropertyFactory.create('Reference<String>', 'map'));
981
- root.insert('referenceArray', PropertyFactory.create('Reference<String>', 'array'));
982
- root.insert('reference_anon', PropertyFactory.create('Reference'));
983
- root.insert('referenceMap_anon', PropertyFactory.create('Reference', 'map'));
984
- root.insert('referenceArray_anon', PropertyFactory.create('Reference', 'array'));
985
- root.insert('target', PropertyFactory.create('String'));
1027
+ root = PropertyFactory.create("NodeProperty");
1028
+ root.insert("template", PropertyFactory.create("autodesk.test:referencePropertyTest-1.0.0"));
1029
+ root.insert("reference", PropertyFactory.create("Reference<String>"));
1030
+ root.insert("referenceMap", PropertyFactory.create("Reference<String>", "map"));
1031
+ root.insert("referenceArray", PropertyFactory.create("Reference<String>", "array"));
1032
+ root.insert("reference_anon", PropertyFactory.create("Reference"));
1033
+ root.insert("referenceMap_anon", PropertyFactory.create("Reference", "map"));
1034
+ root.insert("referenceArray_anon", PropertyFactory.create("Reference", "array"));
1035
+ root.insert("target", PropertyFactory.create("String"));
986
1036
  var target = root._properties.target;
987
1037
  root._properties.reference.set(target);
988
- root._properties.referenceMap.set('entry', target);
1038
+ root._properties.referenceMap.set("entry", target);
989
1039
  root._properties.referenceArray.push(target);
990
1040
  root._properties.reference_anon.set(target);
991
- root._properties.referenceMap_anon.set('entry', target);
1041
+ root._properties.referenceMap_anon.set("entry", target);
992
1042
  root._properties.referenceArray_anon.push(target);
993
1043
  root._properties.template.ref.set(target);
994
- root._properties.template.refMap.set('entry', target);
1044
+ root._properties.template.refMap.set("entry", target);
995
1045
  root._properties.template.refArray.push(target);
996
1046
  root._properties.template.ref_anon.set(target);
997
- root._properties.template.refMap_anon.set('entry', target);
1047
+ root._properties.template.refMap_anon.set("entry", target);
998
1048
  root._properties.template.refArray_anon.push(target);
999
1049
  });
1000
- it('serialize and deserialize should work', function () {
1001
- var root2 = PropertyFactory.create('NodeProperty');
1050
+ it("serialize and deserialize should work", function () {
1051
+ var root2 = PropertyFactory.create("NodeProperty");
1002
1052
  root2.deserialize(root.serialize());
1003
- expect(root.serialize({ 'dirtyOnly': false })).to.deep.equal(root.serialize({ 'dirtyOnly': false }));
1053
+ expect(root.serialize({ dirtyOnly: false })).to.deep.equal(root.serialize({ dirtyOnly: false }));
1004
1054
  var root2Target = root2._properties.target;
1005
1055
  expect(root2._properties.reference.get()).to.deep.equal(root2Target);
1006
- expect(root2._properties.referenceMap.get('entry')).to.deep.equal(root2Target);
1056
+ expect(root2._properties.referenceMap.get("entry")).to.deep.equal(root2Target);
1007
1057
  expect(root2._properties.referenceArray.get()).to.deep.equal(root2Target);
1008
1058
  expect(root2._properties.reference_anon.get()).to.deep.equal(root2Target);
1009
- expect(root2._properties.referenceMap_anon.get('entry')).to.deep.equal(root2Target);
1059
+ expect(root2._properties.referenceMap_anon.get("entry")).to.deep.equal(root2Target);
1010
1060
  expect(root2._properties.referenceArray_anon.get()).to.deep.equal(root2Target);
1011
1061
  expect(root2._properties.template.ref.get()).to.deep.equal(root2Target);
1012
- expect(root2._properties.template.refMap.get('entry')).to.deep.equal(root2Target);
1062
+ expect(root2._properties.template.refMap.get("entry")).to.deep.equal(root2Target);
1013
1063
  expect(root2._properties.template.refArray.get()).to.deep.equal(root2Target);
1014
1064
  expect(root2._properties.template.ref_anon.get()).to.deep.equal(root2Target);
1015
- expect(root2._properties.template.refMap_anon.get('entry')).to.deep.equal(root2Target);
1065
+ expect(root2._properties.template.refMap_anon.get("entry")).to.deep.equal(root2Target);
1016
1066
  expect(root2._properties.template.refArray_anon.get()).to.deep.equal(root2Target);
1017
1067
  });
1018
- it('squash should work', function () {
1019
- var CS1 = root.serialize({ 'dirtyOnly': false });
1068
+ it("squash should work", function () {
1069
+ var CS1 = root.serialize({ dirtyOnly: false });
1020
1070
  root.cleanDirty();
1021
- root.insert('target2', PropertyFactory.create('String'));
1071
+ root.insert("target2", PropertyFactory.create("String"));
1022
1072
  var target2 = root._properties.target2;
1023
1073
  // Set everything to the new target
1024
1074
  root._properties.reference.set(target2);
1025
- root._properties.referenceMap.set('entry', target2);
1075
+ root._properties.referenceMap.set("entry", target2);
1026
1076
  root._properties.referenceArray.set(0, target2);
1027
1077
  root._properties.referenceArray.push(target2);
1028
1078
  root._properties.reference_anon.set(target2);
1029
- root._properties.referenceMap_anon.set('entry', target2);
1079
+ root._properties.referenceMap_anon.set("entry", target2);
1030
1080
  root._properties.referenceArray_anon.set(0, target2);
1031
1081
  root._properties.referenceArray_anon.push(target2);
1032
1082
  root._properties.template.ref.set(target2);
1033
- root._properties.template.refMap.set('entry', target2);
1083
+ root._properties.template.refMap.set("entry", target2);
1034
1084
  root._properties.referenceArray_anon.set(0, target2);
1035
1085
  root._properties.template.refArray.push(target2);
1036
1086
  root._properties.template.ref_anon.set(target2);
1037
- root._properties.template.refMap_anon.set('entry', target2);
1087
+ root._properties.template.refMap_anon.set("entry", target2);
1038
1088
  root._properties.referenceArray_anon.set(0, target2);
1039
1089
  root._properties.template.refArray_anon.push(target2);
1040
- var CS2 = root.serialize({ 'dirtyOnly': true });
1090
+ var CS2 = root.serialize({ dirtyOnly: true });
1041
1091
  var squashed = new ChangeSet(CS1);
1042
1092
  squashed.applyChangeSet(CS2);
1043
- expect(squashed.getSerializedChangeSet()).to.deep.equal(root.serialize({ 'dirtyOnly': false }));
1093
+ expect(squashed.getSerializedChangeSet()).to.deep.equal(root.serialize({ dirtyOnly: false }));
1044
1094
  });
1045
- it('rebase should work', function () {
1095
+ it("rebase should work", function () {
1046
1096
  root.cleanDirty();
1047
- root.insert('target2', PropertyFactory.create('String'));
1097
+ root.insert("target2", PropertyFactory.create("String"));
1048
1098
  root.cleanDirty();
1049
1099
  var target2 = root._properties.target2;
1050
1100
  // Set everything to the new target
1051
1101
  root._properties.reference.set(target2);
1052
- root._properties.referenceMap.setValue('entry', target2);
1102
+ root._properties.referenceMap.setValue("entry", target2);
1053
1103
  root._properties.reference_anon.set(target2);
1054
- root._properties.referenceMap_anon.setValue('entry', target2);
1104
+ root._properties.referenceMap_anon.setValue("entry", target2);
1055
1105
  root._properties.referenceArray_anon.set(0, target2);
1056
1106
  root._properties.template.ref.set(target2);
1057
- root._properties.template.refMap.setValue('entry', target2);
1107
+ root._properties.template.refMap.setValue("entry", target2);
1058
1108
  root._properties.referenceArray_anon.set(0, target2);
1059
1109
  root._properties.template.ref_anon.set(target2);
1060
- root._properties.template.refMap_anon.setValue('entry', target2);
1110
+ root._properties.template.refMap_anon.setValue("entry", target2);
1061
1111
  root._properties.referenceArray_anon.set(0, target2);
1062
- var CS1 = root.serialize({ 'dirtyOnly': true });
1063
- var CS2 = root.serialize({ 'dirtyOnly': true });
1112
+ var CS1 = root.serialize({ dirtyOnly: true });
1113
+ var CS2 = root.serialize({ dirtyOnly: true });
1064
1114
  var rebased = new ChangeSet(CS1);
1065
1115
  var conflicts = [];
1066
1116
  rebased._rebaseChangeSet(CS2, conflicts);
@@ -1074,8 +1124,8 @@ describe('Reference Properties', function () {
1074
1124
  root._properties.referenceArray_anon.push(target2);
1075
1125
  root._properties.template.refArray.push(target2);
1076
1126
  root._properties.template.refArray_anon.push(target2);
1077
- CS1 = root.serialize({ 'dirtyOnly': true });
1078
- CS2 = root.serialize({ 'dirtyOnly': true });
1127
+ CS1 = root.serialize({ dirtyOnly: true });
1128
+ CS2 = root.serialize({ dirtyOnly: true });
1079
1129
  rebased = new ChangeSet(CS1);
1080
1130
  conflicts = [];
1081
1131
  rebased._rebaseChangeSet(CS2, conflicts);