// proper values for thisJoinPoint attributes 
// Currently there is a bug (?) in that the parameters value
//  of the joinpoint seems to always be null.
package test135;

import org.aspectj.testing.Tester;

public class Driver {
    public static void main(String[] args) { test(); }

    public static void test() {

        TopFoo foo = new TopFoo();
        JoinPointFields jpf = JoinPointFields.aspectOf();

        foo.bar(1, "one");

        Tester.checkEqual(jpf.className, "test135.TopFoo", "className");
        Tester.checkEqual(jpf.methodName, "bar", "methodName");
        Tester.checkEqual(jpf.parameterNames,
                           new String[] {"intParam", "stringParam"}, 
                           "parameterNames");
        Tester.checkEqual(jpf.parameterTypes,
                           new Class[] {Integer.TYPE, String.class},
                           "parameterTypes");
        //System.out.println(jpf.parameters);
        Tester.checkEqual(jpf.parameters,
                           new Object[] {new Integer(1), "one"}, 
                           "parameters"); //!!!

        test135.pack.PackFoo foo1 = new test135.pack.PackFoo();
        test135.pack.PackJoinPointFields jpf1 = 
            test135.pack.PackJoinPointFields.aspectOf();

        foo1.bar(2, "two");
        Tester.checkEqual(jpf1.className, "test135.pack.PackFoo", "className");
        Tester.checkEqual(jpf1.methodName, "bar", "methodName");
        Tester.checkEqual(jpf1.parameterNames,
                           new String[] {"packIntParam", "packStringParam"}, 
                           "parameterNames");
        Tester.checkEqual(jpf1.parameterTypes,
                           new Class[] {Integer.TYPE, String.class}, 
                           "parameterTypes");
        Tester.checkEqual(jpf1.parameters,
                           new Object[] {new Integer(2), "two"},
                           "parameters");
    }
}