diff --git a/source/model/element.js b/source/model/element.js index 238a257..639769f 100644 --- a/source/model/element.js +++ b/source/model/element.js @@ -3,6 +3,7 @@ OV.Element = class constructor () { this.name = ''; + this.properties = []; } GetName () @@ -35,6 +36,22 @@ OV.Element = class return 0; } + PropertyCount () + { + return this.properties.length; + } + + AddProperty (property) + { + this.properties.push (property); + return this.properties.length - 1; + } + + GetProperty (index) + { + return this.properties[index]; + } + EnumerateVertices (onVertex) { diff --git a/test/tests/model_test.js b/test/tests/model_test.js index 6189302..1c92a18 100644 --- a/test/tests/model_test.js +++ b/test/tests/model_test.js @@ -184,6 +184,20 @@ describe ('Model Finalization', function() { }); }); +describe ('Model Properties', function() { + let model = new OV.Model (); + model.AddProperty (new OV.Property (OV.PropertyType.Text, 'name 01', 'value 01')); + model.AddProperty (new OV.Property (OV.PropertyType.Integer, 'name 02', 2)); + model.AddProperty (new OV.Property (OV.PropertyType.Number, 'name 03', 3.5)); + assert.strictEqual (model.PropertyCount (), 3); + assert.strictEqual (model.GetProperty (0).name, 'name 01'); + assert.strictEqual (model.GetProperty (0).value, 'value 01'); + assert.strictEqual (model.GetProperty (1).name, 'name 02'); + assert.strictEqual (model.GetProperty (1).value, 2); + assert.strictEqual (model.GetProperty (2).name, 'name 03'); + assert.strictEqual (model.GetProperty (2).value, 3.5); +}); + describe ('Color Conversion', function() { it ('Color equality check', function () { assert (OV.ColorIsEqual (new OV.Color (10, 20, 30), new OV.Color (10, 20, 30)));