blob: d5e8eca6f5341701d5513d508aba89adb03c24b8 [file] [log] [blame]
// Copyright 2006, 2007 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package org.apache.tapestry.services;
import org.apache.tapestry.ioc.internal.util.CollectionFactory;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.lang.reflect.Modifier;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class TransformMethodSignatureTest extends Assert
{
@Test
public void signature_toString()
{
TransformMethodSignature sig = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomething",
new String[]
{"java.lang.String", "int"}, new String[]
{"java.lang.RuntimeException", "org.foo.FredException"});
assertEquals(
sig.toString(),
"public int doSomething(java.lang.String, int) throws java.lang.RuntimeException, org.foo.FredException");
sig = new TransformMethodSignature(Modifier.ABSTRACT + Modifier.PROTECTED, "boolean", "misoHapi",
new String[0], new String[0]);
assertEquals(sig.toString(), "protected abstract boolean misoHapi()");
}
@Test
public void medium_description()
{
TransformMethodSignature sig = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomething",
new String[]
{"java.lang.String", "int"}, new String[]
{"java.lang.RuntimeException", "org.foo.FredException"});
assertEquals(sig.getMediumDescription(), "doSomething(java.lang.String, int)");
}
@Test
public void package_private_toString()
{
TransformMethodSignature sig = new TransformMethodSignature(0, "int", "packagePrivate", null, null);
assertEquals(sig.toString(), "int packagePrivate()");
}
@Test
public void null_value_for_parameters_and_exceptions()
{
TransformMethodSignature sig = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomething", null, null);
assertEquals(sig.toString(), "public int doSomething()");
assertEquals(sig.getParameterTypes(), new String[0]);
assertEquals(sig.getExceptionTypes(), new String[0]);
}
@Test
public void getters()
{
TransformMethodSignature sig = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomething",
new String[]
{"java.lang.String", "int"}, new String[]
{"java.lang.RuntimeException", "org.foo.FredException"});
assertEquals(sig.getModifiers(), Modifier.PUBLIC);
assertEquals(sig.getReturnType(), "int");
assertEquals(sig.getMethodName(), "doSomething");
assertEquals(sig.getParameterTypes(), new String[]
{"java.lang.String", "int"});
assertEquals(sig.getExceptionTypes(), new String[]
{"java.lang.RuntimeException", "org.foo.FredException"});
}
@Test
public void sorting()
{
TransformMethodSignature foo = new TransformMethodSignature(Modifier.PUBLIC, "void", "foo", null, null);
TransformMethodSignature bar = new TransformMethodSignature(Modifier.PUBLIC, "void", "bar", null, null);
TransformMethodSignature baz0 = new TransformMethodSignature(Modifier.PUBLIC, "void", "baz", null, null);
TransformMethodSignature baz1 = new TransformMethodSignature(Modifier.PUBLIC, "void", "baz", new String[]
{"int"}, null);
List<TransformMethodSignature> list = CollectionFactory.newList(Arrays.asList(foo, bar, baz0, baz1));
Collections.sort(list);
assertEquals(list, Arrays.asList(bar, baz1, baz0, foo));
}
@Test
public void hash_code_and_equals()
{
TransformMethodSignature sig1 = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomething",
new String[]
{"int"}, new String[]
{"org.foo.BarException"});
int hashCode1 = sig1.hashCode();
// Check that same value returned each time.
assertEquals(sig1.hashCode(), hashCode1);
TransformMethodSignature sig2 = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomething",
new String[]
{"int"}, new String[]
{"org.foo.BarException"});
assertEquals(sig2.hashCode(), hashCode1);
assertEquals(sig2, sig1);
// Now work through the different properties, changing each one.
sig2 = new TransformMethodSignature(Modifier.PRIVATE, "int", "doSomething", new String[]
{"int"}, new String[]
{"org.foo.BarException"});
assertFalse(sig2.hashCode() == hashCode1);
assertFalse(sig2.equals(sig1));
sig2 = new TransformMethodSignature(Modifier.PUBLIC, "long", "doSomething", new String[]
{"int"}, new String[]
{"org.foo.BarException"});
assertFalse(sig2.hashCode() == hashCode1);
assertFalse(sig2.equals(sig1));
sig2 = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomethingElse", new String[]
{"int"}, new String[]
{"org.foo.BarException"});
assertFalse(sig2.hashCode() == hashCode1);
assertFalse(sig2.equals(sig1));
sig2 = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomething", new String[]
{"long"}, new String[]
{"org.foo.BarException"});
assertFalse(sig2.hashCode() == hashCode1);
assertFalse(sig2.equals(sig1));
sig2 = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomething", new String[]
{"int"}, new String[0]);
assertFalse(sig2.hashCode() == hashCode1);
assertFalse(sig2.equals(sig1));
// Other equality checks
assertFalse(sig1.equals(null));
assertFalse(sig1.equals(""));
}
/**
* Tests the simple, no arguments constructor.
*/
@Test
public void short_constructor()
{
TransformMethodSignature sig = new TransformMethodSignature("pageLoad");
assertEquals(sig.getModifiers(), Modifier.PUBLIC);
assertEquals(sig.getReturnType(), "void");
assertEquals(sig.getMethodName(), "pageLoad");
assertEquals(sig.getParameterTypes(), new String[0]);
assertEquals(sig.getExceptionTypes(), new String[0]);
}
}