jsmf-core
Version:
Javascript Modelling Framework
87 lines (66 loc) • 3.02 kB
JavaScript
;
var assert = require("assert");
var should = require('should');
var JSMF = require('../src/index');
var Class = JSMF.Class;
var Model = JSMF.Model;
describe('Create Dynamic Instances', function() {
describe('Create Instance from metamodel references', function(){
//WARNING the references must be set AFTER the creation of Classes
it('Instance created from reference', function(done){
var Transition = Class.newInstance('Transition');
Transition.setAttribute('active', Boolean);
var Property = Class.newInstance('Property');
Property.setAttribute('blink', Number);
var State = Class.newInstance('State');
State.setAttribute('name', String);
State.setAttribute('id', Number);
State.setReference('transition', Transition, -1);
State.setReference('property', Property, 1);
var s1 = State.newInstance('s1');
var tabOfInstance = {};
for(var i in State.references) {
var Type = State.references[i].type;
tabOfInstance[Type.__name]=Type.newInstance();
}
tabOfInstance['Transition'].should.have.property('setActive');
tabOfInstance['Property'].should.have.property('setBlink');
var t1 = tabOfInstance['Transition'];
var p1 = tabOfInstance['Property'];
t1.should.have.property('setActive');
should(t1.active).be.empty;
t1.setActive(true);
t1.should.have.property('active',true);
should(p1.blink).be.empty;
p1.setBlink(182);
p1.should.have.property('blink',182);
done();
})
it('Instance created inherited reference', function(done){
var Transition = Class.newInstance('Transition');
Transition.setAttribute('active', Boolean);
var Property = Class.newInstance('Property');
Property.setAttribute('blink', Number);
var SuperState = Class.newInstance('SuperState');
SuperState.setReference('property',Property, 1);
var State = Class.newInstance('State');
State.setAttribute('name', String);
State.setAttribute('id', Number);
State.setReference('transition', Transition, -1);
State.setSuperType(SuperState);
var s1 = State.newInstance('s1');
var tabOfInstance = {};
for(var i in State.references) {
var Type = State.references[i].type;
tabOfInstance[Type.__name]=Type.newInstance();
}
tabOfInstance['Transition'].should.have.property('setActive');
var t1 = tabOfInstance['Transition'];
t1.should.have.property('setActive');
should(t1.active).be.empty;
t1.setActive(true);
t1.should.have.property('active',true);
done();
})
})
})