/*
* 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.groups.validationorder;
import java.util.ArrayList;
import java.util.List;
import javax.validation.GroupDefinitionException;
import javax.validation.groups.Default;
import org.hibernate.validator.internal.engine.groups.DefaultValidationOrder;
import org.hibernate.validator.internal.engine.groups.Group;
import org.hibernate.validator.internal.engine.groups.Sequence;
import org.testng.annotations.Test;
import static org.testng.Assert.fail;
/**
* @author Hardy Ferentschik
*/
public class ValidationOrderTest {
@Test
public void testAssertDefaultGroupSequenceIsExpandableWithDefaultAtEndOfSequence() {
// create a dummy sequence
Group a = new Group( GroupA.class );
Group b = new Group( GroupB.class );
Group c = new Group( GroupC.class );
Group defaultGroup = Group.DEFAULT_GROUP;
List<Group> sequence = new ArrayList<Group>();
sequence.add( a );
sequence.add( b );
sequence.add( c );
sequence.add( defaultGroup );
DefaultValidationOrder chain = new DefaultValidationOrder();
chain.insertSequence( new Sequence( TestSequence.class, sequence ) );
// create test default sequence
List<Class<?>> defaultSequence = new ArrayList<Class<?>>();
defaultSequence.add( Default.class );
defaultSequence.add( GroupA.class );
try {
chain.assertDefaultGroupSequenceIsExpandable( defaultSequence );
fail();
}
catch (GroupDefinitionException e) {
// success
}
defaultSequence.clear();
defaultSequence.add( GroupA.class );
defaultSequence.add( Default.class );
try {
chain.assertDefaultGroupSequenceIsExpandable( defaultSequence );
fail();
}
catch (GroupDefinitionException e) {
// success
}
defaultSequence.clear();
defaultSequence.add( Default.class );
defaultSequence.add( GroupC.class );
try {
chain.assertDefaultGroupSequenceIsExpandable( defaultSequence );
fail();
}
catch (GroupDefinitionException e) {
// success
}
defaultSequence.clear();
defaultSequence.add( GroupC.class );
defaultSequence.add( Default.class );
chain.assertDefaultGroupSequenceIsExpandable( defaultSequence );
}
@Test
public void testAssertDefaultGroupSequenceIsExpandableWithDefaultAtBeginningOfSequence() {
// create a dummy sequence
Group a = new Group( GroupA.class );
Group b = new Group( GroupB.class );
Group c = new Group( GroupC.class );
Group defaultGroup = Group.DEFAULT_GROUP;
List<Group> sequence = new ArrayList<Group>();
sequence.add( defaultGroup );
sequence.add( a );
sequence.add( b );
sequence.add( c );
DefaultValidationOrder chain = new DefaultValidationOrder();
chain.insertSequence( new Sequence( TestSequence.class, sequence ) );
// create test default sequence
List<Class<?>> defaultSequence = new ArrayList<Class<?>>();
defaultSequence.add( Default.class );
defaultSequence.add( GroupA.class );
chain.assertDefaultGroupSequenceIsExpandable( defaultSequence );
defaultSequence.clear();
defaultSequence.add( GroupA.class );
defaultSequence.add( Default.class );
try {
chain.assertDefaultGroupSequenceIsExpandable( defaultSequence );
fail();
}
catch (GroupDefinitionException e) {
// success
}
defaultSequence.clear();
defaultSequence.add( Default.class );
defaultSequence.add( GroupC.class );
try {
chain.assertDefaultGroupSequenceIsExpandable( defaultSequence );
fail();
}
catch (GroupDefinitionException e) {
// success
}
defaultSequence.clear();
defaultSequence.add( GroupC.class );
defaultSequence.add( Default.class );
try {
chain.assertDefaultGroupSequenceIsExpandable( defaultSequence );
fail();
}
catch (GroupDefinitionException e) {
// success
}
}
}
interface GroupC {
}