package org.jboss.tools.hibernate.runtime.v_3_6.internal; import java.util.Iterator; import java.util.Properties; import org.hibernate.FetchMode; import org.hibernate.cfg.Configuration; import org.hibernate.mapping.Any; import org.hibernate.mapping.Array; import org.hibernate.mapping.Bag; import org.hibernate.mapping.Collection; import org.hibernate.mapping.Column; import org.hibernate.mapping.Component; import org.hibernate.mapping.DependantValue; import org.hibernate.mapping.IdentifierBag; import org.hibernate.mapping.KeyValue; import org.hibernate.mapping.List; import org.hibernate.mapping.ManyToOne; import org.hibernate.mapping.Map; import org.hibernate.mapping.OneToMany; import org.hibernate.mapping.OneToOne; import org.hibernate.mapping.PrimitiveArray; import org.hibernate.mapping.Property; import org.hibernate.mapping.RootClass; import org.hibernate.mapping.Set; import org.hibernate.mapping.SimpleValue; import org.hibernate.mapping.Table; import org.hibernate.mapping.ToOne; import org.hibernate.mapping.Value; import org.jboss.tools.hibernate.runtime.common.IFacade; import org.jboss.tools.hibernate.runtime.common.IFacadeFactory; import org.jboss.tools.hibernate.runtime.spi.IColumn; import org.jboss.tools.hibernate.runtime.spi.IPersistentClass; import org.jboss.tools.hibernate.runtime.spi.IProperty; import org.jboss.tools.hibernate.runtime.spi.ITable; import org.jboss.tools.hibernate.runtime.spi.IType; import org.jboss.tools.hibernate.runtime.spi.IValue; import org.junit.Assert; import org.junit.Test; public class ValueFacadeTest { private static IFacadeFactory FACADE_FACTORY = new FacadeFactoryImpl(); private Value valueTarget = null; private IValue valueFacade = null; @Test public void testIsSimpleValue() { valueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertTrue(valueFacade.isSimpleValue()); valueTarget = new Set(null, null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertFalse(valueFacade.isSimpleValue()); } @Test public void testIsCollection() { valueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertFalse(valueFacade.isCollection()); valueTarget = new Set(null, null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertTrue(valueFacade.isCollection()); } @Test public void testGetCollectionElement() { valueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(valueTarget); IValue collectionElement = valueFacade.getCollectionElement(); Assert.assertNull(collectionElement); Set set = new Set(null, null); set.setElement(valueTarget); valueFacade = FACADE_FACTORY.createValue(set); collectionElement = valueFacade.getCollectionElement(); Assert.assertNotNull(collectionElement); Assert.assertSame(valueTarget, ((IFacade)collectionElement).getTarget()); } @Test public void testIsOneToMany() { valueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertFalse(valueFacade.isOneToMany()); OneToMany oneToMany = new OneToMany(null, null); valueFacade = FACADE_FACTORY.createValue(oneToMany); Assert.assertTrue(valueFacade.isOneToMany()); } @Test public void testIsManyToOne() { valueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertFalse(valueFacade.isManyToOne()); ManyToOne manyToOne = new ManyToOne(null, null); valueFacade = FACADE_FACTORY.createValue(manyToOne); Assert.assertTrue(valueFacade.isManyToOne()); } @Test public void testIsOneToOne() { valueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertFalse(valueFacade.isOneToOne()); OneToOne oneToOne = new OneToOne(null, null, new RootClass()); valueFacade = FACADE_FACTORY.createValue(oneToOne); Assert.assertTrue(valueFacade.isOneToOne()); } @Test public void testIsMap() { valueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertFalse(valueFacade.isMap()); Map map = new Map(null, null); valueFacade = FACADE_FACTORY.createValue(map); Assert.assertTrue(valueFacade.isMap()); } @Test public void testIsComponent() { valueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertFalse(valueFacade.isComponent()); Component component = new Component(null, new RootClass()); valueFacade = FACADE_FACTORY.createValue(component); Assert.assertTrue(valueFacade.isComponent()); } @Test public void testIsEmbedded() { valueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertNull(valueFacade.isEmbedded()); Component component = new Component(null, new RootClass()); valueFacade = FACADE_FACTORY.createValue(component); component.setEmbedded(true); Assert.assertTrue(valueFacade.isEmbedded()); component.setEmbedded(false); Assert.assertFalse(valueFacade.isEmbedded()); } @Test public void testIsToOne() { valueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertFalse(valueFacade.isToOne()); ToOne toOne = new OneToOne(null, null, new RootClass()); valueFacade = FACADE_FACTORY.createValue(toOne); Assert.assertTrue(valueFacade.isToOne()); } @Test public void testGetTable() { Table tableTarget = new Table(); valueTarget = new SimpleValue(null, tableTarget); valueFacade = FACADE_FACTORY.createValue(valueTarget); ITable tableFacade = valueFacade.getTable(); Assert.assertSame(tableTarget, ((IFacade)tableFacade).getTarget()); } @Test public void testGetType() { SimpleValue valueTarget = new SimpleValue( new Configuration().createMappings()); valueTarget.setTypeName("java.lang.Integer"); valueFacade = FACADE_FACTORY.createValue(valueTarget); IType typeFacade = valueFacade.getType(); Assert.assertEquals( "org.hibernate.type.IntegerType", ((IFacade)typeFacade).getTarget().getClass().getName()); } @Test public void testSetElement() { SimpleValue elementTarget = new SimpleValue(null); IValue elementFacade = FACADE_FACTORY.createValue(elementTarget); Set valueTarget = new Set(null, null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertNull(valueTarget.getElement()); valueFacade.setElement(elementFacade); Assert.assertSame(elementTarget, valueTarget.getElement()); } @Test public void testSetCollectionTable() { Table tableTarget = new Table(); ITable tableFacade = FACADE_FACTORY.createTable(tableTarget); Collection valueTarget = new Set(null, null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertNull(valueTarget.getCollectionTable()); valueFacade.setCollectionTable(tableFacade); Assert.assertSame(tableTarget, valueTarget.getCollectionTable()); } @Test public void testSetTable() { Table tableTarget = new Table(); ITable tableFacade = FACADE_FACTORY.createTable(tableTarget); SimpleValue valueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertNull(valueTarget.getTable()); valueFacade.setTable(tableFacade); Assert.assertSame(tableTarget, valueTarget.getTable()); } @Test public void testIsList() { valueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertFalse(valueFacade.isList()); valueTarget = new List(null, null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertTrue(valueFacade.isList()); } @Test public void testSetIndex() { List valueTarget = new List(null, null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertNull(valueTarget.getIndex()); SimpleValue indexTarget = new SimpleValue(null); IValue indexFacade = FACADE_FACTORY.createValue(indexTarget); valueFacade.setIndex(indexFacade); Assert.assertSame(indexTarget, valueTarget.getIndex()); } @Test public void testSetTypeName() { SimpleValue valueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertNull(valueTarget.getTypeName()); valueFacade.setTypeName("java.lang.Integer"); Assert.assertEquals("java.lang.Integer", valueTarget.getTypeName()); } @Test public void testGetComponentClassName() { Component valueTarget = new Component(null, new RootClass()); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertNull(valueFacade.getComponentClassName()); valueTarget.setComponentClassName("org.foo.Bar"); Assert.assertEquals("org.foo.Bar", valueFacade.getComponentClassName()); } @Test public void testGetColumnIterator() { SimpleValue valueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Iterator<IColumn> columnIterator = valueFacade.getColumnIterator(); Assert.assertFalse(columnIterator.hasNext()); Column columnTarget = new Column(); valueTarget.addColumn(columnTarget); valueFacade = FACADE_FACTORY.createValue(valueTarget); columnIterator = valueFacade.getColumnIterator(); Assert.assertTrue(columnIterator.hasNext()); Assert.assertSame(columnTarget, ((IFacade)columnIterator.next()).getTarget()); } @Test public void testIsTypeSpecified() { SimpleValue valueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertFalse(valueFacade.isTypeSpecified()); valueTarget.setTypeName("org.foo.Bar"); Assert.assertTrue(valueFacade.isTypeSpecified()); } @Test public void testGetCollectionTable() { Table tableTarget = new Table(); Collection valueTarget = new Set(null, null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertNull(valueFacade.getCollectionTable()); valueTarget.setCollectionTable(tableTarget); Assert.assertSame( tableTarget, ((IFacade)valueFacade.getCollectionTable()).getTarget()); } @Test public void testGetKey() { Map valueTarget = new Map(null, null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertNull(valueFacade.getKey()); KeyValue keyValue = new SimpleValue(null); valueTarget.setKey(keyValue); Assert.assertSame(keyValue, ((IFacade)valueFacade.getKey()).getTarget()); } @Test public void testGetIndex() { List valueTarget = new List(null, null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertNull(valueFacade.getIndex()); SimpleValue indexValue = new SimpleValue(null); valueTarget.setIndex(indexValue); Assert.assertSame(indexValue, ((IFacade)valueFacade.getIndex()).getTarget()); } @Test public void testGetElementClassName() { Array valueTarget = new Array(null, null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertNull(valueFacade.getElementClassName()); valueTarget.setElementClassName("org.foo.Bar"); Assert.assertEquals("org.foo.Bar", valueFacade.getElementClassName());; } @Test public void testGetTypeName() { SimpleValue valueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertNull(valueFacade.getTypeName()); valueTarget.setTypeName("org.foo.Bar"); Assert.assertEquals("org.foo.Bar", valueFacade.getTypeName()); } @Test public void testIsDependantValue() { SimpleValue simpleValueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(simpleValueTarget); Assert.assertFalse(valueFacade.isDependantValue()); DependantValue dependantValueTarget = new DependantValue(null, null, null); valueFacade = FACADE_FACTORY.createValue(dependantValueTarget); Assert.assertTrue(valueFacade.isDependantValue()); } @Test public void testIsAny() { SimpleValue simpleValueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(simpleValueTarget); Assert.assertFalse(valueFacade.isAny()); Any anyTarget = new Any(null, null); valueFacade = FACADE_FACTORY.createValue(anyTarget); Assert.assertTrue(valueFacade.isAny()); } @Test public void testIsSet() { SimpleValue simpleValueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(simpleValueTarget); Assert.assertFalse(valueFacade.isSet()); Set setTarget = new Set(null, null); valueFacade = FACADE_FACTORY.createValue(setTarget); Assert.assertTrue(valueFacade.isSet()); } @Test public void testIsPrimitiveArray() { SimpleValue simpleValueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(simpleValueTarget); Assert.assertFalse(valueFacade.isPrimitiveArray()); PrimitiveArray primitiveArrayTarget = new PrimitiveArray(null, null); valueFacade = FACADE_FACTORY.createValue(primitiveArrayTarget); Assert.assertTrue(valueFacade.isPrimitiveArray()); } @Test public void testIsArray() { SimpleValue simpleValueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(simpleValueTarget); Assert.assertFalse(valueFacade.isArray()); Array arrayTarget = new Array(null, null); valueFacade = FACADE_FACTORY.createValue(arrayTarget); Assert.assertTrue(valueFacade.isArray()); } @Test public void testIsIdentifierBag() { SimpleValue simpleValueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(simpleValueTarget); Assert.assertFalse(valueFacade.isIdentifierBag()); IdentifierBag identifierBagTarget = new IdentifierBag(null, null); valueFacade = FACADE_FACTORY.createValue(identifierBagTarget); Assert.assertTrue(valueFacade.isIdentifierBag()); } @Test public void testIsBag() { SimpleValue simpleValueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(simpleValueTarget); Assert.assertFalse(valueFacade.isBag()); Bag bagTarget = new Bag(null, null); valueFacade = FACADE_FACTORY.createValue(bagTarget); Assert.assertTrue(valueFacade.isBag()); } @Test public void testGetReferencedEntityName() { ManyToOne valueTarget = new ManyToOne(null, null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertNull(valueFacade.getReferencedEntityName()); valueTarget.setReferencedEntityName("Foo"); Assert.assertEquals("Foo", valueFacade.getReferencedEntityName()); } @Test public void testGetEntityName() { SimpleValue simpleValueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(simpleValueTarget); Assert.assertNull(valueFacade.getEntityName()); RootClass pc = new RootClass(); pc.setEntityName("foobar"); OneToOne oneToOneTarget = new OneToOne(null, null, pc); valueFacade = FACADE_FACTORY.createValue(oneToOneTarget); Assert.assertEquals("foobar", valueFacade.getEntityName()); } @Test public void testGetPropertyIterator() { Component componentTarget = new Component(null, new RootClass()); valueFacade = FACADE_FACTORY.createValue(componentTarget); Iterator<IProperty> iter = valueFacade.getPropertyIterator(); Assert.assertFalse(iter.hasNext()); Property propertyTarget = new Property(); componentTarget.addProperty(propertyTarget); valueFacade = FACADE_FACTORY.createValue(componentTarget); iter = valueFacade.getPropertyIterator(); Assert.assertTrue(iter.hasNext()); IProperty propertyFacade = iter.next(); Assert.assertSame(propertyTarget, ((IFacade)propertyFacade).getTarget()); } @Test public void testAddColumn() { SimpleValue simpleValueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(simpleValueTarget); Iterator<?> columnIterator = simpleValueTarget.getColumnIterator(); Assert.assertFalse(columnIterator.hasNext()); Column columnTarget = new Column(); IColumn columnFacade = FACADE_FACTORY.createColumn(columnTarget); valueFacade.addColumn(columnFacade); columnIterator = simpleValueTarget.getColumnIterator(); Assert.assertTrue(columnIterator.hasNext()); Assert.assertSame(columnTarget, columnIterator.next()); } @Test public void testGetTypeParameters() { SimpleValue simpleValueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(simpleValueTarget); Assert.assertNull(simpleValueTarget.getTypeParameters()); Properties properties = new Properties(); valueFacade.setTypeParameters(properties); Assert.assertSame(properties, simpleValueTarget.getTypeParameters()); } @Test public void testGetForeignKeyName() { SimpleValue simpleValueTarget = new SimpleValue(null); valueFacade = FACADE_FACTORY.createValue(simpleValueTarget); Assert.assertNull(valueFacade.getForeignKeyName()); simpleValueTarget.setForeignKeyName("foobar"); Assert.assertEquals("foobar", valueFacade.getForeignKeyName()); } @Test public void testGetOwner() { RootClass rc = new RootClass(); Component componentTarget = new Component(null, rc); valueFacade = FACADE_FACTORY.createValue(componentTarget); Assert.assertSame(rc, ((IFacade)valueFacade.getOwner()).getTarget()); } @Test public void testGetElement() { Bag bagValueTarget = new Bag(null, null); IValue bagValueFacade = FACADE_FACTORY.createValue(bagValueTarget); Assert.assertNull(bagValueFacade.getElement()); SimpleValue simpleValueTarget = new SimpleValue(null); bagValueTarget.setElement(simpleValueTarget); Assert.assertSame( simpleValueTarget, ((IFacade)bagValueFacade.getElement()).getTarget()); } @Test public void testGetParentProperty() { Component componentTarget = new Component(null, new RootClass()); IValue valueFacade = FACADE_FACTORY.createValue(componentTarget); Assert.assertNull(valueFacade.getParentProperty()); componentTarget.setParentProperty("foobar"); Assert.assertEquals("foobar", valueFacade.getParentProperty()); } @Test public void testSetElementClassName() { Array arrayTarget = new Array(null, null); valueFacade = FACADE_FACTORY.createValue(arrayTarget); Assert.assertNull(arrayTarget.getElementClassName()); valueFacade.setElementClassName("foobar"); Assert.assertEquals("foobar", arrayTarget.getElementClassName()); } @Test public void testSetKey() { KeyValue keyValueTarget = new SimpleValue(null); IValue keyValueFacade = FACADE_FACTORY.createValue(keyValueTarget); Collection collectionTarget = new Bag(null, null); IValue collectionFacade = FACADE_FACTORY.createValue(collectionTarget); Assert.assertNull(collectionTarget.getKey()); collectionFacade.setKey(keyValueFacade); Assert.assertSame(keyValueTarget, collectionTarget.getKey()); } @Test public void testSetFetchModeJoin() { SimpleValue simpleValueTarget = new SimpleValue(null); Assert.assertNotEquals(FetchMode.JOIN, simpleValueTarget.getFetchMode()); valueFacade = FACADE_FACTORY.createValue(simpleValueTarget); valueFacade.setFetchModeJoin(); Assert.assertNotEquals(FetchMode.JOIN, simpleValueTarget.getFetchMode()); Collection collectionTarget = new Bag(null, null); Assert.assertNotEquals(FetchMode.JOIN, collectionTarget.getFetchMode()); valueFacade = FACADE_FACTORY.createValue(collectionTarget); valueFacade.setFetchModeJoin(); Assert.assertEquals(FetchMode.JOIN, collectionTarget.getFetchMode()); ManyToOne manyToOneTarget = new ManyToOne(null, null); Assert.assertNotEquals(FetchMode.JOIN, manyToOneTarget.getFetchMode()); valueFacade = FACADE_FACTORY.createValue(manyToOneTarget); valueFacade.setFetchModeJoin(); Assert.assertEquals(FetchMode.JOIN, manyToOneTarget.getFetchMode()); } @Test public void testIsInverse() { Collection collectionTarget = new Bag(null, null); valueFacade = FACADE_FACTORY.createValue(collectionTarget); Assert.assertFalse(valueFacade.isInverse()); collectionTarget.setInverse(true); Assert.assertTrue(valueFacade.isInverse()); } @Test public void testGetAssociatedClass() { RootClass rootClass = new RootClass(); OneToMany oneToManyTarget = new OneToMany(null, null); valueFacade = FACADE_FACTORY.createValue(oneToManyTarget); Assert.assertNull(valueFacade.getAssociatedClass()); oneToManyTarget.setAssociatedClass(rootClass); Assert.assertSame( rootClass, ((IFacade)valueFacade.getAssociatedClass()).getTarget()); } @Test public void testSetLazy() { Collection collectionTarget = new Bag(null, null); valueFacade = FACADE_FACTORY.createValue(collectionTarget); valueFacade.setLazy(true); Assert.assertTrue(collectionTarget.isLazy()); valueFacade.setLazy(false); Assert.assertFalse(collectionTarget.isLazy()); } @Test public void testSetRole() { Collection collectionTarget = new Bag(null, null); valueFacade = FACADE_FACTORY.createValue(collectionTarget); Assert.assertNull(collectionTarget.getRole()); valueFacade.setRole("foobar"); Assert.assertEquals("foobar", collectionTarget.getRole()); } @Test public void testSetReferencedEntityName() { ManyToOne valueTarget = new ManyToOne(null, null); valueFacade = FACADE_FACTORY.createValue(valueTarget); Assert.assertNull(valueTarget.getReferencedEntityName()); valueFacade.setReferencedEntityName("Foo"); Assert.assertEquals("Foo", valueTarget.getReferencedEntityName()); } @Test public void testSetAssociatedClass() { RootClass rootClassTarget = new RootClass(); IPersistentClass rootClassFacade = FACADE_FACTORY.createPersistentClass(rootClassTarget); OneToMany oneToManyTarget = new OneToMany(null, null); valueFacade = FACADE_FACTORY.createValue(oneToManyTarget); Assert.assertNull(oneToManyTarget.getAssociatedClass()); valueFacade.setAssociatedClass(rootClassFacade); Assert.assertSame( rootClassTarget, oneToManyTarget.getAssociatedClass()); } }