package com.vaadin.shared.util;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import java.util.Locale;
import org.junit.Assert;
import org.junit.Test;
public class SharedUtilTest {
@Test
public void trailingSlashIsTrimmed() {
assertThat(SharedUtil.trimTrailingSlashes("/path/"), is("/path"));
}
@Test
public void noTrailingSlashForTrimming() {
assertThat(SharedUtil.trimTrailingSlashes("/path"), is("/path"));
}
@Test
public void trailingSlashesAreTrimmed() {
assertThat(SharedUtil.trimTrailingSlashes("/path///"), is("/path"));
}
@Test
public void emptyStringIsHandled() {
assertThat(SharedUtil.trimTrailingSlashes(""), is(""));
}
@Test
public void rootSlashIsTrimmed() {
assertThat(SharedUtil.trimTrailingSlashes("/"), is(""));
}
@Test
public void camelCaseToHumanReadable() {
Assert.assertEquals("First Name",
SharedUtil.camelCaseToHumanFriendly("firstName"));
Assert.assertEquals("First Name",
SharedUtil.camelCaseToHumanFriendly("first name"));
Assert.assertEquals("First Name2",
SharedUtil.camelCaseToHumanFriendly("firstName2"));
Assert.assertEquals("First",
SharedUtil.camelCaseToHumanFriendly("first"));
Assert.assertEquals("First",
SharedUtil.camelCaseToHumanFriendly("First"));
Assert.assertEquals("Some XYZ Abbreviation",
SharedUtil.camelCaseToHumanFriendly("SomeXYZAbbreviation"));
// Javadoc examples
Assert.assertEquals("My Bean Container",
SharedUtil.camelCaseToHumanFriendly("MyBeanContainer"));
Assert.assertEquals("Awesome URL Factory",
SharedUtil.camelCaseToHumanFriendly("AwesomeURLFactory"));
Assert.assertEquals("Some Uri Action",
SharedUtil.camelCaseToHumanFriendly("SomeUriAction"));
}
@Test
public void splitCamelCase() {
assertCamelCaseSplit("firstName", "first", "Name");
assertCamelCaseSplit("fooBar", "foo", "Bar");
assertCamelCaseSplit("fooBar", "foo", "Bar");
assertCamelCaseSplit("fBar", "f", "Bar");
assertCamelCaseSplit("FBar", "F", "Bar");
assertCamelCaseSplit("MYCdi", "MY", "Cdi");
assertCamelCaseSplit("MyCDIUI", "My", "CDIUI");
assertCamelCaseSplit("MyCDIUITwo", "My", "CDIUI", "Two");
assertCamelCaseSplit("first name", "first", "name");
}
private void assertCamelCaseSplit(String camelCaseString, String... parts) {
String[] splitParts = SharedUtil.splitCamelCase(camelCaseString);
Assert.assertArrayEquals(parts, splitParts);
}
@Test
public void join() {
String s1 = "foo-bar-baz";
String s2 = "foo--bar";
Assert.assertEquals("foobarbaz", SharedUtil.join(s1.split("-"), ""));
Assert.assertEquals("foo!bar!baz", SharedUtil.join(s1.split("-"), "!"));
Assert.assertEquals("foo!!bar!!baz",
SharedUtil.join(s1.split("-"), "!!"));
Assert.assertEquals("foo##bar", SharedUtil.join(s2.split("-"), "#"));
}
@Test
public void dashSeparatedToCamelCase() {
Assert.assertEquals(null, SharedUtil.dashSeparatedToCamelCase(null));
Assert.assertEquals("", SharedUtil.dashSeparatedToCamelCase(""));
Assert.assertEquals("foo", SharedUtil.dashSeparatedToCamelCase("foo"));
Assert.assertEquals("fooBar",
SharedUtil.dashSeparatedToCamelCase("foo-bar"));
Assert.assertEquals("fooBar",
SharedUtil.dashSeparatedToCamelCase("foo--bar"));
Assert.assertEquals("fooBarBaz",
SharedUtil.dashSeparatedToCamelCase("foo-bar-baz"));
Assert.assertEquals("fooBarBaz",
SharedUtil.dashSeparatedToCamelCase("foo-Bar-Baz"));
}
@Test
public void methodUppercaseWithTurkishLocale() {
Locale defaultLocale = Locale.getDefault();
try {
Locale.setDefault(new Locale("tr", "TR"));
Assert.assertEquals("Integer", SharedUtil.capitalize("integer"));
} finally {
Locale.setDefault(defaultLocale);
}
}
@Test
public void duplicatesInArray() {
Assert.assertTrue(
SharedUtil.containsDuplicates(new Object[] { "a", "a" }));
Assert.assertTrue(
SharedUtil.containsDuplicates(new Object[] { "a", "b", "a" }));
Assert.assertTrue(SharedUtil
.containsDuplicates(new Object[] { "a", "b", "a", "b" }));
Assert.assertTrue(
SharedUtil.containsDuplicates(new Object[] { 1, "b", 1 }));
Assert.assertFalse(SharedUtil.containsDuplicates(new Object[] {}));
Assert.assertFalse(SharedUtil.containsDuplicates(new Object[] { "a" }));
Assert.assertFalse(
SharedUtil.containsDuplicates(new Object[] { "a", "b" }));
Assert.assertFalse(
SharedUtil.containsDuplicates(new Object[] { "1", 1 }));
}
@Test
public void getDuplicates() {
Assert.assertEquals("", SharedUtil.getDuplicates(new Object[] { "a" }));
Assert.assertEquals("a",
SharedUtil.getDuplicates(new Object[] { "a", "a" }));
Assert.assertEquals("a, b",
SharedUtil.getDuplicates(new Object[] { "a", "b", "a", "b" }));
Assert.assertEquals("a, b, c", SharedUtil
.getDuplicates(new Object[] { "c", "a", "b", "a", "b", "c" }));
Assert.assertEquals("1.2",
SharedUtil.getDuplicates(new Object[] { 1.2, "a", 1.2 }));
}
@Test
public void propertyIdToHumanFriendly() {
Assert.assertEquals("", SharedUtil.propertyIdToHumanFriendly(""));
Assert.assertEquals("First Name",
SharedUtil.propertyIdToHumanFriendly("firstName"));
Assert.assertEquals("First Name",
SharedUtil.propertyIdToHumanFriendly("FirstName"));
Assert.assertEquals("First Name",
SharedUtil.propertyIdToHumanFriendly("FIRST_NAME"));
Assert.assertEquals("Firstname",
SharedUtil.propertyIdToHumanFriendly("FIRSTNAME"));
Assert.assertEquals("2015 Q3",
SharedUtil.propertyIdToHumanFriendly("2015_Q3"));
Assert.assertEquals("Column X",
SharedUtil.propertyIdToHumanFriendly("_COLUMN_X"));
Assert.assertEquals("Column X",
SharedUtil.propertyIdToHumanFriendly("__COLUMN_X"));
Assert.assertEquals("1column Foobar",
SharedUtil.propertyIdToHumanFriendly("1COLUMN_FOOBAR"));
Assert.assertEquals("Result 2015",
SharedUtil.propertyIdToHumanFriendly("RESULT_2015"));
Assert.assertEquals("2015result",
SharedUtil.propertyIdToHumanFriendly("2015RESULT"));
Assert.assertEquals("Result2015",
SharedUtil.propertyIdToHumanFriendly("RESULT2015"));
}
}