use of org.whole.lang.models.model.Model in project whole by wholeplatform.
the class ControlQueriesTest method testChoose1.
@Test
public void testChoose1() {
Model model = new ModelsModel().create();
ModelDeclarations decls = model.getDeclarations();
ITemplateManager tm = ControlQueriesTemplateManager.instance();
PathExpression query = (PathExpression) tm.create("choose1");
assertFalse(BehaviorUtils.compileAndLazyEvaluate(query, model).hasNext());
int i = 0;
while (!Matcher.match(ModelsEntityDescriptorEnum.SimpleEntity, decls.wGet(i))) i++;
SimpleEntity simpleEntity = (SimpleEntity) decls.wGet(i);
int j = 0;
for (IEntity name : BehaviorUtils.compileAndLazyEvaluate(query, simpleEntity)) {
assertEquals(((Feature) simpleEntity.getFeatures().wGet(j++)).getName().wStringValue(), name.wStringValue());
}
assertEquals(simpleEntity.getFeatures().wSize(), j);
while (!Matcher.match(ModelsEntityDescriptorEnum.CompositeEntity, decls.wGet(i))) i++;
CompositeEntity compositeEntity = (CompositeEntity) decls.wGet(i);
IEntityIterator<IEntity> iterator = BehaviorUtils.compileAndLazyEvaluate(query, compositeEntity);
assertTrue(iterator.hasNext());
assertEquals(compositeEntity.getComponentType().wStringValue(), iterator.next().wStringValue());
assertFalse(iterator.hasNext());
while (!Matcher.match(ModelsEntityDescriptorEnum.EnumEntity, decls.wGet(i))) i++;
EnumEntity enumEntity = (EnumEntity) decls.wGet(i);
iterator = BehaviorUtils.compileAndLazyEvaluate(query, enumEntity);
assertTrue(iterator.hasNext());
assertTrue(iterator.next() instanceof EnumValues);
assertFalse(iterator.hasNext());
}
use of org.whole.lang.models.model.Model in project whole by wholeplatform.
the class DataTypeUtilsTest method testDataBoxUnbox.
@Test
public void testDataBoxUnbox() throws Exception {
assertEquals(10, unbox(box(10, IntData), int.class));
assertEquals(10, ((Long) (unbox(box(10L, DoubleData), long.class))).intValue());
assertEquals(true, unbox(box(true, BooleanData), Boolean.class));
List<String> list = Collections.emptyList();
assertEquals(list, unbox(box(list, ObjectData), Object.class));
IEntity entity = ModelsTemplateManager.instance().create("Actions");
assertEquals(entity, unbox(box(entity, ObjectData), IEntity.class));
assertEquals(entity, unbox(box(entity, Model), Model.class));
entity = ModelsEntityFactory.instance.createSimpleEntity();
assertEquals(entity, unbox(box(entity, ModelDeclaration), IModelsEntity.class));
}
use of org.whole.lang.models.model.Model in project whole by wholeplatform.
the class DynamicModelDefinitionTest method testModelsInterpreter.
@Test
public void testModelsInterpreter() {
Model model;
try {
model = (Model) XmlBuilderPersistenceKit.instance().readModel(new ClasspathPersistenceProvider("org/whole/lang/queries/QueriesModel.xwl"));
} catch (Exception e) {
throw new IllegalStateException(e);
}
String URI = "http://my/uri/for/queries/lang";
model.getUri().setValue(URI);
ILanguageKit qlk = ReflectionFactory.getLanguageKit("http://lang.whole.org/Queries");
EntityDescriptorEnum qedenum = qlk.getEntityDescriptorEnum();
FeatureDescriptorEnum qfdenum = qlk.getFeatureDescriptorEnum();
InterpreterOperation.interpret(model);
ILanguageKit lk = ReflectionFactory.getLanguageKit(URI);
assertNotNull(lk);
assertNotSame(qlk, lk);
assertNotNull(lk.getMetaModelTemplate());
IEntity metaModel = lk.getMetaModel();
IEntity normalizedModel = NormalizerOperation.normalize(model);
assertTrue(Matcher.match(normalizedModel, metaModel));
metaModel = lk.getMetaModelTemplate().create();
assertTrue(Matcher.match(normalizedModel, metaModel));
EntityDescriptorEnum edenum = lk.getEntityDescriptorEnum();
FeatureDescriptorEnum fdenum = lk.getFeatureDescriptorEnum();
assertFalse(qfdenum.equals(fdenum));
assertEquals(qfdenum.size(), fdenum.size());
for (FeatureDescriptor qfd : qfdenum) {
assertEquals(qfd.getOrdinal(), fdenum.valueOf(qfd.getName()).getOrdinal());
}
assertFalse(qedenum.equals(edenum));
assertEquals(qedenum.size(), edenum.size());
for (EntityDescriptor<?> qed : qedenum) {
EntityDescriptor<?> ed = edenum.valueOf(qed.getName());
assertEquals(qed.getOrdinal(), ed.getOrdinal());
assertEquals(qed.getEntityKind(), ed.getEntityKind());
assertEquals(qed.isAbstract(), ed.isAbstract());
assertEquals(qed.isRelationship(), ed.isRelationship());
switch(qed.getEntityKind()) {
case SIMPLE:
assertEquals(qed.featureSize(), ed.featureSize());
for (int i = 0, size = qed.featureSize(); i < size; i++) {
FeatureDescriptor qfd = qed.getEntityFeatureDescriptor(i);
FeatureDescriptor fd = ed.getEntityFeatureDescriptor(i);
assertEquals(qfd.getName(), fd.getName());
assertEquals(qfd.getImplName(), fd.getImplName());
assertEquals(qfd.getOrdinal(), fd.getOrdinal());
assertEquals(qfd.isDerived(), fd.isDerived());
assertEquals(qfd.isId(), fd.isId());
assertEquals(qfd.isOptional(), fd.isOptional());
assertEquals(qfd.isReference(), fd.isReference());
assertEquals(qfd.isShared(), fd.isShared());
assertEquals(qfd.isToMany(), fd.isToMany());
if (qfd.getOppositeFeatureDescriptor() != null)
assertEquals(qfd.getOppositeFeatureDescriptor().getName(), fd.getOppositeFeatureDescriptor().getName());
}
break;
case COMPOSITE:
assertEquals(qed.getCompositeKind(), ed.getCompositeKind());
FeatureDescriptor qfd = qed.getEntityFeatureDescriptor(0);
FeatureDescriptor fd = ed.getEntityFeatureDescriptor(0);
assertEquals(qfd.isDerived(), fd.isDerived());
assertEquals(qfd.isReference(), fd.isReference());
assertEquals(qfd.isShared(), fd.isShared());
break;
case DATA:
assertEquals(qed.getDataKind(), ed.getDataKind());
if (qed.getDataKind().isEnumValue()) {
assertEquals(qed.getDataEnumType().size(), ed.getDataEnumType().size());
for (int i = 0; i < qed.getDataEnumType().size(); i++) assertEquals(qed.getDataEnumType().valueOf(i).getName(), ed.getDataEnumType().valueOf(i).getName());
} else
assertEquals(qed.getDataType(), ed.getDataType());
break;
}
}
}
use of org.whole.lang.models.model.Model in project whole by wholeplatform.
the class ReflectiveAPITest method testIterators.
@Test
public void testIterators() {
// TODO for each entity
Model m = model;
List<IEntity> features = new ArrayList<IEntity>();
IEntityIterator<IEntity> i = IteratorFactory.childIterator();
i.reset(m);
for (IEntity e : i) features.add(e);
assertSame(m.getName(), features.get(0));
assertSame(m.getTypeRelations(), features.get(1));
assertSame(m.getDeclarations(), features.get(2));
}
use of org.whole.lang.models.model.Model in project whole by wholeplatform.
the class ReflectiveAPITest method testEntityHasFeature.
@Test
public void testEntityHasFeature() {
List<FeatureDescriptor> modelFeatures = model.wGetEntityDescriptor().getFeatureDescriptorEnum().values();
// TODO for each entity
Model m = (Model) model;
List<FeatureDescriptor> entityFeatures = m.wGetEntityDescriptor().getEntityFeatureDescriptors();
assertTrue(modelFeatures.containsAll(entityFeatures));
for (FeatureDescriptor fd : entityFeatures) assertTrue(m.wContains(fd));
List<FeatureDescriptor> otherFeatures = new ArrayList<FeatureDescriptor>(modelFeatures);
otherFeatures.removeAll(entityFeatures);
for (FeatureDescriptor fd : otherFeatures) assertFalse(m.wContains(fd));
}
Aggregations