Search in sources :

Example 1 with ElementRef

use of org.whole.lang.xsd.model.ElementRef in project whole by wholeplatform.

the class ByChildAPITest method testAbstractSimpleEntity.

// public void testAbstractMapEntity() {
// InfoEntityFactory infof = InfoEntityFactory.instance;
// 
// Value k1 = infof.createValue("key1");
// Value k2 = infof.createValue("key2");
// Value k3 = infof.createValue("key3");
// 
// Value v1 = infof.createValue("value");
// Value v2 = infof.createValue("value");
// Value v3 = infof.createValue("value");
// 
// Value[] keysArray = new Value[] {k1, k2, k3};
// Value[] valuesArray = new Value[] {v1, v2, v3};
// ValuesMap values = infof.createValuesMap();
// for (int i=0; i<keysArray.length; i++)
// values.wSet(keysArray[i], valuesArray[i]);
// 
// mapCompositeOperationsEntityTest(keysArray, values);
// commonOperationsEntityTest(keysArray, valuesArray, values);
// uniqueOperationsEntityTest(keysArray, values);
// propertyChangeEntityTest(keysArray, values, infof.createValue("value4"));
// }
@Test
public void testAbstractSimpleEntity() {
    XsdEntityFactory mf = XsdEntityFactory.instance;
    NamespaceDecls decls = mf.createNamespaceDecls(mf.createNamespaceDecl(mf.createName("prefix"), mf.createAnyURI("uri")));
    QName ref = mf.createQName("testQName");
    org.whole.lang.xsd.model.Attributes attributes = mf.createAttributes(0);
    Bounded min = mf.createBounded(1);
    Bounded max = mf.createBounded(1);
    Annotation ann = mf.createAnnotation();
    StringData id = mf.createStringData("myId");
    IEntity[] featuresArray = new IEntity[] { decls, id, attributes, min, max, ref, ann };
    int[] businessEquivalence = new int[] { -1, 1, -1, 3, 3, 5, -1 };
    ElementRef elementRef = mf.createElementRef(decls, id, attributes, min, max, ref, ann);
    // object identity
    for (int i = 0; i < elementRef.wSize(); i++) Assert.assertTrue(elementRef.wIndexOf(featuresArray[i]) == i);
    // business identity
    for (int i = 0; i < elementRef.wSize(); i++) Assert.assertTrue(elementRef.wIndexOf(EntityUtils.clone(featuresArray[i])) == businessEquivalence[i]);
    // business identity
    for (int i = 0; i < elementRef.wSize(); i++) if (businessEquivalence[i] >= 0)
        Assert.assertTrue(elementRef.wGet(EntityUtils.clone(featuresArray[i])).equals(featuresArray[businessEquivalence[i]]));
    // test wContains
    for (int i = 0; i < elementRef.wSize(); i++) {
        Assert.assertTrue(elementRef.wContains(featuresArray[i]));
        if (businessEquivalence[i] >= 0)
            Assert.assertTrue(elementRef.wContains(EntityUtils.clone(featuresArray[i])));
    }
    // object identity
    for (int i = 0; i < elementRef.wSize(); i++) Assert.assertTrue(elementRef.wGet(featuresArray[i]).equals(featuresArray[i]));
    // test wRemove
    IEntity entityCopy = EntityUtils.clone(elementRef);
    IEntity[] refs = new IEntity[entityCopy.wSize()];
    for (int i = 0; i < entityCopy.wSize(); i++) refs[i] = entityCopy.wGet(i);
    IEntity entitySecondCopy = EntityUtils.clone(entityCopy);
    for (int i = refs.length - 1; i >= 0; i--) {
        Assert.assertTrue(entityCopy.wRemove(refs[i]));
        if (businessEquivalence[i] >= 0)
            Assert.assertTrue(entitySecondCopy.wRemove(refs[i]));
    }
    for (int i = refs.length - 1; i >= 0; i--) {
        Assert.assertFalse(entityCopy.wRemove(refs[i]));
        if (businessEquivalence[i] >= 0)
            Assert.assertFalse(entitySecondCopy.wRemove(refs[i]));
    }
    IEntity newEntity = EntityUtils.clone(elementRef);
    EntityDescriptor<?> ed = elementRef.wGetEntityDescriptor();
    TestPropertyChangeListener listener = new TestPropertyChangeListener(elementRef);
    for (int i = 0; i < newEntity.wSize(); i++) {
        IEntity oldChild = elementRef.wGet(i);
        IEntity newChild = EntityUtils.clone(newEntity.wGet(i));
        listener.setFeatureDescriptor(ed.getEntityFeatureDescriptor(i));
        listener.setOldValue(oldChild);
        listener.setNewValue(newChild);
        elementRef.wSet(oldChild, newChild);
    }
}
Also used : QName(org.whole.lang.xsd.model.QName) NamespaceDecls(org.whole.lang.xsd.model.NamespaceDecls) XsdEntityFactory(org.whole.lang.xsd.factories.XsdEntityFactory) Annotation(org.whole.lang.xsd.model.Annotation) ElementRef(org.whole.lang.xsd.model.ElementRef) Bounded(org.whole.lang.xsd.model.Bounded) StringData(org.whole.lang.xsd.model.StringData) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)1 XsdEntityFactory (org.whole.lang.xsd.factories.XsdEntityFactory)1 Annotation (org.whole.lang.xsd.model.Annotation)1 Bounded (org.whole.lang.xsd.model.Bounded)1 ElementRef (org.whole.lang.xsd.model.ElementRef)1 NamespaceDecls (org.whole.lang.xsd.model.NamespaceDecls)1 QName (org.whole.lang.xsd.model.QName)1 StringData (org.whole.lang.xsd.model.StringData)1