package org.jboss.tools.hibernate.runtime.v_3_6.internal; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import org.hibernate.Criteria; import org.jboss.tools.hibernate.runtime.common.AbstractCriteriaFacade; import org.jboss.tools.hibernate.runtime.common.IFacade; import org.jboss.tools.hibernate.runtime.common.IFacadeFactory; import org.jboss.tools.hibernate.runtime.spi.ICriteria; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class CriteriaFacadeTest { private static final IFacadeFactory FACADE_FACTORY = new FacadeFactoryImpl(); private ICriteria criteriaFacade = null; private Criteria criteria = null; private String methodName = null; private Object[] arguments = null; @Before public void setUp() throws Exception { criteria = (Criteria)Proxy.newProxyInstance( FACADE_FACTORY.getClassLoader(), new Class[] { Criteria.class }, new TestInvocationHandler()); criteriaFacade = new AbstractCriteriaFacade(FACADE_FACTORY, criteria) {}; } @Test public void testCreateCriteria() { ICriteria criteria = criteriaFacade.createCriteria("foo", "bar"); Assert.assertNull(((IFacade)criteria).getTarget()); Assert.assertEquals("createCriteria", methodName); Assert.assertArrayEquals(new Object[] { "foo", "bar"}, arguments); } @Test public void testSetMaxResults() { criteriaFacade.setMaxResults(Integer.MAX_VALUE); Assert.assertEquals("setMaxResults", methodName); Assert.assertArrayEquals(new Object[] { Integer.MAX_VALUE }, arguments); } @Test public void testList() { Assert.assertNull(criteriaFacade.list()); Assert.assertEquals("list", methodName); Assert.assertNull(arguments); } private class TestInvocationHandler implements InvocationHandler { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { methodName = method.getName(); arguments = args; return null; } } }