/* * Copyright 2012 Google Inc. * * 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 com.google.gwt.validation.client.impl.metadata; import junit.framework.TestCase; import java.util.Set; import java.util.HashSet; import javax.validation.groups.Default; /** * Test case for {@link ValidationGroupsMetadata}. */ public class ValidationGroupsMetadataTest extends TestCase { private ValidationGroupsMetadata createWithTestGroups() { return ValidationGroupsMetadata.builder() .addGroup(Part1.class, MiniPart.class) .addGroup(Part2.class) .addGroup(Big.class, Part1.class, Part2.class) .addGroup(MiniPart.class, SuperSmall.class) .addGroup(SuperSmall.class) .build(); } public void testDefaultGroupExists() { assertTrue(ValidationGroupsMetadata.builder().build().containsGroup(Default.class)); } public void testFindAllExtendedGroups() { // should get all of the groups and all of their parents recursively ValidationGroupsMetadata groupsMetadata = createWithTestGroups(); Set<Class<?>> baseGroups = new HashSet<Class<?>>(); baseGroups.add(Part1.class); baseGroups.add(Part2.class); Set<Class<?>> desired = new HashSet<Class<?>>(); desired.add(Part1.class); desired.add(Part2.class); desired.add(MiniPart.class); desired.add(SuperSmall.class); assertEquals(desired, groupsMetadata.findAllExtendedGroups(baseGroups)); } public void testFindingExtendedGroupsThrowsExceptionWhenUnknown() { // should throw exception when the group has not been added to the map ValidationGroupsMetadata groupsMetadata = ValidationGroupsMetadata.builder().build(); assertFalse(groupsMetadata.containsGroup(MiniPart.class)); try { Set<Class<?>> miniPart = new HashSet<Class<?>>(); miniPart.add(MiniPart.class); groupsMetadata.findAllExtendedGroups(miniPart); fail("Expected an " + IllegalArgumentException.class); } catch (IllegalArgumentException expected) { // expected } } public void testGetAllGroupsAndSequences() { // should return all groups and their parents recursively as well as sequence groups ValidationGroupsMetadata groupsMetadata = createWithTestGroups(); Set<Class<?>> desired = new HashSet<Class<?>>(); desired.add(Default.class); desired.add(Part1.class); desired.add(Part2.class); desired.add(MiniPart.class); desired.add(SuperSmall.class); desired.add(Big.class); assertEquals(desired, groupsMetadata.getAllGroupsAndSequences()); } private interface Part1 extends MiniPart { } private interface MiniPart extends SuperSmall { } private interface SuperSmall { } private interface Part2 { } private interface Big extends Part1, Part2 { } }