/*
* 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.resourceloading;
import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.ResourceBundle;
import java.util.Set;
import org.testng.annotations.Test;
import org.hibernate.validator.resourceloading.AggregateResourceBundleLocator.AggregateBundle;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
/**
* Test for {@link AggregateBundle}.
*
* @author Gunnar Morling
*/
public class AggregateBundleTest {
private static final String BUNDLE_NAME_1 = AggregateResourceBundleLocatorTest.class.getPackage()
.getName() + ".AggregateResourceBundleLocatorTestBundle1";
private static final String BUNDLE_NAME_2 = AggregateResourceBundleLocatorTest.class.getPackage()
.getName() + ".AggregateResourceBundleLocatorTestBundle2";
@Test
public void aggregateBundleContainsKeysOfAllSourceBundles() {
ResourceBundle bundle_1 = ResourceBundle.getBundle( BUNDLE_NAME_1 );
ResourceBundle bundle_2 = ResourceBundle.getBundle( BUNDLE_NAME_2 );
ResourceBundle aggregateBundle = new AggregateBundle( Arrays.asList( bundle_1, bundle_2 ) );
Set<String> actualKeys = getAsSet( aggregateBundle.getKeys() );
Set<String> expectedKeys = new HashSet<String>( Arrays.asList( "key_1", "key_2", "key_3" ) );
assertEquals( actualKeys, expectedKeys );
}
@Test
public void aggregateBundleWithNoSourceBundlesContainsNoKeys() {
ResourceBundle aggregateBundle = new AggregateBundle( Collections.<ResourceBundle>emptyList() );
assertTrue( getAsSet( aggregateBundle.getKeys() ).isEmpty() );
}
@Test
public void valuesProperlyRetrievedFromAggregateBundle() {
ResourceBundle bundle_1 = ResourceBundle.getBundle( BUNDLE_NAME_1 );
ResourceBundle bundle_2 = ResourceBundle.getBundle( BUNDLE_NAME_2 );
ResourceBundle aggregateBundle = new AggregateBundle( Arrays.asList( bundle_1, bundle_2 ) );
assertEquals(
aggregateBundle.getString( "key_1" ),
"value 1 from bundle 1",
"Value for key_1 should be retrieved from bundle 1"
);
assertEquals(
aggregateBundle.getString( "key_2" ),
"value 2 from bundle 1",
"Value for key_2 should be retrieved from bundle 1"
);
assertEquals(
aggregateBundle.getString( "key_3" ),
"value 3 from bundle 2",
"Value for key_3 should be retrieved from bundle 2"
);
}
private Set<String> getAsSet(Enumeration<String> e) {
Set<String> theValue = new HashSet<String>();
while ( e.hasMoreElements() ) {
theValue.add( e.nextElement() );
}
return theValue;
}
}