/* * Hibernate Validator, declare and validate application constraints * * License: Apache License, Version 2.0 * See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>. */ package org.hibernate.validator.test.internal.engine; import static org.hibernate.validator.internal.util.CollectionHelper.newArrayList; import static org.testng.Assert.assertEquals; import java.util.Collections; import java.util.List; import javax.validation.ParameterNameProvider; import org.hibernate.validator.internal.engine.DefaultParameterNameProvider; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; /** * Unit test for {@link DefaultParameterNameProvider}. * * @author Gunnar Morling */ public class DefaultParameterNameProviderTest { private ParameterNameProvider parameterNameProvider; @BeforeClass public void setupParameterNameProvider() { parameterNameProvider = new DefaultParameterNameProvider(); } @Test public void getParametersForParameterlessConstructor() throws Exception { assertEquals( parameterNameProvider.getParameterNames( Foo.class.getConstructor() ), buildExpectedArgumentNameList() ); } @Test public void getParametersForConstructorWithOneParameter() throws Exception { assertEquals( parameterNameProvider.getParameterNames( Foo.class.getConstructor( String.class ) ), buildExpectedArgumentNameList( "bar" ) ); } @Test public void getParametersForConstructorWithSeveralParameters() throws Exception { assertEquals( parameterNameProvider.getParameterNames( Foo.class.getConstructor( String.class, String.class ) ), buildExpectedArgumentNameList( "bar", "baz" ) ); } @Test public void getParametersForParameterlessMethod() throws Exception { assertEquals( parameterNameProvider.getParameterNames( Foo.class.getMethod( "foo" ) ), buildExpectedArgumentNameList() ); } @Test public void getParametersForMethodWithOneParameter() throws Exception { assertEquals( parameterNameProvider.getParameterNames( Foo.class.getMethod( "foo", String.class ) ), buildExpectedArgumentNameList( "bar" ) ); } @Test public void getParametersForMethodWithSeveralParameters() throws Exception { assertEquals( parameterNameProvider.getParameterNames( Foo.class.getMethod( "foo", String.class, String.class ) ), buildExpectedArgumentNameList( "bar", "baz" ) ); } private List<String> buildExpectedArgumentNameList(String... names) { List<String> parameterNames = newArrayList(); Collections.addAll( parameterNames, names ); return parameterNames; } @SuppressWarnings("unused") private static class Foo { public Foo() { } public Foo(String bar) { } public Foo(String bar, String baz) { } public void foo() { } public void foo(String bar) { } public void foo(String bar, String baz) { } } }