Search in sources :

Example 56 with Model

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());
}
Also used : EnumEntity(org.whole.lang.models.model.EnumEntity) IEntity(org.whole.lang.model.IEntity) SimpleEntity(org.whole.lang.models.model.SimpleEntity) ITemplateManager(org.whole.lang.templates.ITemplateManager) Feature(org.whole.lang.models.model.Feature) EnumValues(org.whole.lang.models.model.EnumValues) ModelDeclarations(org.whole.lang.models.model.ModelDeclarations) PathExpression(org.whole.lang.queries.model.PathExpression) XmlModel(org.whole.lang.models.codebase.XmlModel) ModelsModel(org.whole.lang.models.codebase.ModelsModel) Model(org.whole.lang.models.model.Model) CompositeEntity(org.whole.lang.models.model.CompositeEntity) ModelsModel(org.whole.lang.models.codebase.ModelsModel) Test(org.junit.Test)

Example 57 with Model

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));
}
Also used : IEntity(org.whole.lang.model.IEntity) IModelsEntity(org.whole.lang.models.model.IModelsEntity) Model(org.whole.lang.models.reflect.ModelsEntityDescriptorEnum.Model) Model(org.whole.lang.models.model.Model) Test(org.junit.Test)

Example 58 with Model

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;
        }
    }
}
Also used : CommonsFeatureDescriptorEnum(org.whole.lang.commons.reflect.CommonsFeatureDescriptorEnum) IEntity(org.whole.lang.model.IEntity) Model(org.whole.lang.models.model.Model) ClasspathPersistenceProvider(org.whole.lang.codebase.ClasspathPersistenceProvider) Test(org.junit.Test)

Example 59 with Model

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));
}
Also used : IEntity(org.whole.lang.model.IEntity) EditorsModel(org.whole.lang.models.codebase.EditorsModel) Model(org.whole.lang.models.model.Model) ArrayList(java.util.ArrayList) Test(org.junit.Test)

Example 60 with Model

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));
}
Also used : EditorsModel(org.whole.lang.models.codebase.EditorsModel) Model(org.whole.lang.models.model.Model) ArrayList(java.util.ArrayList) Test(org.junit.Test)

Aggregations

Model (org.whole.lang.models.model.Model)62 Test (org.junit.Test)55 PathExpression (org.whole.lang.queries.model.PathExpression)43 ITemplateManager (org.whole.lang.templates.ITemplateManager)41 IEntity (org.whole.lang.model.IEntity)40 XmlModel (org.whole.lang.models.codebase.XmlModel)30 ModelsModel (org.whole.lang.models.codebase.ModelsModel)25 ModelDeclarations (org.whole.lang.models.model.ModelDeclarations)19 IBindingManager (org.whole.lang.bindings.IBindingManager)15 SimpleEntity (org.whole.lang.models.model.SimpleEntity)14 ClassDeclaration (org.whole.lang.java.model.ClassDeclaration)12 DataEntity (org.whole.lang.models.model.DataEntity)10 Feature (org.whole.lang.models.model.Feature)9 ArrayList (java.util.ArrayList)6 FieldDeclaration (org.whole.lang.java.model.FieldDeclaration)6 CompositeEntity (org.whole.lang.models.model.CompositeEntity)4 Features (org.whole.lang.models.model.Features)4 EditorsModel (org.whole.lang.models.codebase.EditorsModel)3 EnumEntity (org.whole.lang.models.model.EnumEntity)3 SimpleName (org.whole.lang.models.model.SimpleName)3