/*
* 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.util;
import static org.assertj.core.api.Assertions.assertThat;
import static org.hibernate.validator.internal.util.CollectionHelper.newArrayList;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNull;
import java.util.Arrays;
import java.util.Locale;
import org.hibernate.validator.testutil.TestForIssue;
import org.testng.annotations.Test;
import org.hibernate.validator.internal.util.StringHelper;
/**
* Unit test for {@link StringHelper}.
*
* @author Gunnar Morling
*/
public class StringHelperTest {
@Test
public void joinShouldReturnNullForNullIterable() {
assertThat( StringHelper.join( (Iterable<?>) null, "," ) ).isNull();
assertThat( StringHelper.join( (Object[]) null, "," ) ).isNull();
}
@Test
public void joinShouldReturnEmptyStringForEmptyIterable() {
assertThat( StringHelper.join( newArrayList(), "," ) ).isEmpty();
assertThat( StringHelper.join( new Object[0], "," ) ).isEmpty();
}
@Test
public void joinShouldReturnElementForIterableWithOneElement() {
assertThat( StringHelper.join( Arrays.asList( "polar bear" ), "," ) ).isEqualTo( "polar bear" );
assertThat( StringHelper.join( new String[] { "polar bear" }, "," ) ).isEqualTo( "polar bear" );
}
@Test
public void joinShouldReturnElementJoinedElements() {
assertThat( StringHelper.join( Arrays.asList( "polar bear", "giraffe", "guinea pig" ), " and " ) ).isEqualTo(
"polar bear and giraffe and guinea pig"
);
assertThat( StringHelper.join( new String[] { "polar bear", "giraffe", "guinea pig" }, " and " ) ).isEqualTo(
"polar bear and giraffe and guinea pig"
);
}
@Test
public void joinShouldInvokeToStringForObjects() {
assertThat( StringHelper.join( Arrays.asList( new PolarBear(), new Giraffe() ), ", " ) ).isEqualTo(
"polar bear, giraffe"
);
assertThat( StringHelper.join( new Object[] { new PolarBear(), new Giraffe() }, ", " ) ).isEqualTo(
"polar bear, giraffe"
);
}
@Test
public void joinShouldPrintLiteralNullForNullValues() {
assertThat( StringHelper.join( new Integer[] { 1, null, 2 }, "," ) ).isEqualTo( "1,null,2" );
}
@Test
public void decapitalizeShouldReturnNullForNullString() {
assertNull( StringHelper.decapitalize( null ) );
}
@Test
public void decapitalizeShouldReturnEmptyStringForEmptyString() {
assertEquals( StringHelper.decapitalize( "" ), "" );
}
@Test
public void decapitalizeShouldReturnLowerCaseLetter() {
assertEquals( StringHelper.decapitalize( "A" ), "a" );
}
@Test
public void decapitalizeShouldReturnDecapizalizedWord() {
assertEquals( StringHelper.decapitalize( "Giraffe" ), "giraffe" );
}
@Test
@TestForIssue(jiraKey = "HV-1140")
public void decapitalizeShouldReturnDecapizalizedWordOnTurkishLocale() {
Locale defaultLocale = Locale.getDefault();
Locale.setDefault( new Locale( "tr" , "TR" ) );
assertEquals( StringHelper.decapitalize( "IsIsolationLevelGuaranteed" ), "isIsolationLevelGuaranteed" );
Locale.setDefault( defaultLocale );
}
@Test
public void decapitalizeShouldReturnSameWordForDecapizalizedWord() {
assertEquals( StringHelper.decapitalize( "giraffe" ), "giraffe" );
}
@Test
public void decapitalizeShouldReturnSameWordForWordWithSeveralLeadingCapitalLetters() {
assertEquals( StringHelper.decapitalize( "GIRaffe" ), "GIRaffe" );
}
private static class PolarBear {
@Override
public String toString() {
return "polar bear";
}
}
private static class Giraffe {
@Override
public String toString() {
return "giraffe";
}
}
}