/*
 *
 * JBoss, the OpenSource J2EE webOS
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */

package org.jboss.test.aop.test;

import javax.management.MBeanServerConnection;
import javax.management.ObjectName;

import junit.framework.Test;
import junit.framework.TestSuite;

import org.jboss.test.JBossTestCase;

/**
 * Sample client for the jboss container.
 *
 * @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
 * @version $Id: AOPUnitTestCase.java,v 1.16.2.1 2005/07/06 20:24:06 adrian Exp $
 */

public class AOPUnitTestCase
        extends JBossTestCase
{
   org.apache.log4j.Category log = getLog();

   static boolean deployed = false;
   static int test = 0;

   public AOPUnitTestCase(String name)
   {

      super(name);

   }

   public void testAspect() throws Exception
   {
      MBeanServerConnection server = getServer();
      ObjectName testerName = new ObjectName("jboss.aop:name=AOPTester");
      Object[] params = {};
      String[] sig = {};
      server.invoke(testerName, "testAspect", params, sig);
   }

   public void testBasic() throws Exception
   {
      MBeanServerConnection server = getServer();
      ObjectName testerName = new ObjectName("jboss.aop:name=AOPTester");
      Object[] params = {};
      String[] sig = {};
      server.invoke(testerName, "testBasic", params, sig);
   }

   public void testCallerPointcut() throws Exception
   {
      MBeanServerConnection server = getServer();
      ObjectName testerName = new ObjectName("jboss.aop:name=AOPTester");
      Object[] params = {};
      String[] sig = {};
      server.invoke(testerName, "testCallerPointcut", params, sig);
   }

   public void testInheritance() throws Exception
   {
      MBeanServerConnection server = getServer();
      ObjectName testerName = new ObjectName("jboss.aop:name=AOPTester");
      Object[] params = {};
      String[] sig = {};
      server.invoke(testerName, "testInheritance", params, sig);
   }

   public void testMetadata() throws Exception
   {
      MBeanServerConnection server = getServer();
      ObjectName testerName = new ObjectName("jboss.aop:name=AOPTester");
      Object[] params = {};
      String[] sig = {};
      server.invoke(testerName, "testMetadata", params, sig);
   }

   public void testDynamicInterceptors() throws Exception
   {
      MBeanServerConnection server = getServer();
      ObjectName testerName = new ObjectName("jboss.aop:name=AOPTester");
      Object[] params = {};
      String[] sig = {};
      server.invoke(testerName, "testDynamicInterceptors", params, sig);
   }

   public void testFieldInterception() throws Exception
   {
      MBeanServerConnection server = getServer();
      ObjectName testerName = new ObjectName("jboss.aop:name=AOPTester");
      Object[] params = {};
      String[] sig = {};
      server.invoke(testerName, "testFieldInterception", params, sig);
   }

   public void testMixin() throws Exception
   {
      MBeanServerConnection server = getServer();
      ObjectName testerName = new ObjectName("jboss.aop:name=AOPTester");
      Object[] params = {};
      String[] sig = {};
      server.invoke(testerName, "testMixin", params, sig);
   }


   public void testMethodInterception() throws Exception
   {
      MBeanServerConnection server = getServer();
      ObjectName testerName = new ObjectName("jboss.aop:name=AOPTester");
      Object[] params = {};
      String[] sig = {};
      server.invoke(testerName, "testMethodInterception", params, sig);
   }

   public void testConstructorInterception() throws Exception
   {
      MBeanServerConnection server = getServer();
      ObjectName testerName = new ObjectName("jboss.aop:name=AOPTester");
      Object[] params = {};
      String[] sig = {};
      server.invoke(testerName, "testConstructorInterception", params, sig);
   }

   public void testExceptions() throws Exception
   {
      MBeanServerConnection server = getServer();
      ObjectName testerName = new ObjectName("jboss.aop:name=AOPTester");
      Object[] params = {};
      String[] sig = {};
      server.invoke(testerName, "testExceptions", params, sig);
   }

   public static Test suite() throws Exception
   {
      TestSuite suite = new TestSuite();
      suite.addTest(new TestSuite(AOPUnitTestCase.class));

      AOPTestSetup setup = new AOPTestSetup(suite, "aoptest.sar");
      return setup; 
   }

}
