/* Copyright 2008 the original author or authors.
*
* 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 grails.util;
import junit.framework.TestCase;
/**
* Test case for {@link GrailsNameUtils}.
*/
public class GrailsNameUtilsTests extends TestCase {
public void testGetFullClassName() {
assertEquals("FooBar", GrailsNameUtils.getFullClassName("FooBar$$CGlib"));
}
public void testIsValidPackage() {
assertTrue(GrailsNameUtils.isValidJavaPackage("jax.demo.bar"));
assertFalse(GrailsNameUtils.isValidJavaPackage("jax.demo.2015"));
}
public void testGetGetterNameForPropertyThatBeginsWithASingleLowerCaseLetter() {
assertEquals("getaPaperback", GrailsNameUtils.getGetterName("aPaperback"));
assertEquals("setaPaperback", GrailsNameUtils.getSetterName("aPaperback"));
}
public void testGetClassNameRepresentation() {
assertEquals("MyClass", GrailsNameUtils.getClassNameRepresentation("my-class"));
assertEquals("MyClass", GrailsNameUtils.getClassNameRepresentation("MyClass"));
assertEquals("F", GrailsNameUtils.getClassNameRepresentation(".f"));
assertEquals("AB", GrailsNameUtils.getClassNameRepresentation(".a.b"));
assertEquals("AlphaBakerCharlie", GrailsNameUtils.getClassNameRepresentation(".alpha.baker.charlie"));
}
public void testGetNaturalName() {
assertEquals("First Name", GrailsNameUtils.getNaturalName("firstName"));
assertEquals("URL", GrailsNameUtils.getNaturalName("URL"));
assertEquals("Local URL", GrailsNameUtils.getNaturalName("localURL"));
assertEquals("URL local", GrailsNameUtils.getNaturalName("URLlocal"));
assertEquals("A URL local", GrailsNameUtils.getNaturalName("aURLlocal"));
assertEquals("My Domain Class", GrailsNameUtils.getNaturalName("MyDomainClass"));
assertEquals("My Domain Class", GrailsNameUtils.getNaturalName("com.myco.myapp.MyDomainClass"));
assertEquals("A Name", GrailsNameUtils.getNaturalName("aName"));
}
public void testGetLogicalName() {
assertEquals("Test", GrailsNameUtils.getLogicalName("TestController", "Controller"));
assertEquals("Test", GrailsNameUtils.getLogicalName("org.music.TestController", "Controller"));
}
public void testGetLogicalPropertyName() {
assertEquals("myFunky", GrailsNameUtils.getLogicalPropertyName("MyFunkyController", "Controller"));
assertEquals("HTML", GrailsNameUtils.getLogicalPropertyName("HTMLCodec", "Codec"));
assertEquals("payRoll", GrailsNameUtils.getLogicalPropertyName("org.something.PayRollController", "Controller"));
}
public void testGetLogicalPropertyNameForArtefactWithSingleCharacterName() {
assertEquals("a", GrailsNameUtils.getLogicalPropertyName("AController", "Controller"));
assertEquals("b", GrailsNameUtils.getLogicalPropertyName("BService", "Service"));
}
public void testGetLogicalPropertyNameForArtefactWithAllUpperCaseName() {
assertEquals("ABC", GrailsNameUtils.getLogicalPropertyName("ABCController", "Controller"));
assertEquals("BCD", GrailsNameUtils.getLogicalPropertyName("BCDService", "Service"));
}
public void testGetScriptName() {
assertEquals("grails-name-utils-tests", GrailsNameUtils.getScriptName(getClass()));
assertEquals("", GrailsNameUtils.getScriptName(""));
assertNull(GrailsNameUtils.getScriptName((String) null));
assertNull(GrailsNameUtils.getScriptName((Class<?>) null));
}
public void testGetNameFromScript() {
assertEquals("GrailsClassUtilsTests", GrailsNameUtils.getNameFromScript("grails-class-utils-tests"));
assertEquals("Grails", GrailsNameUtils.getNameFromScript("grails"));
assertEquals("CreateApp", GrailsNameUtils.getNameFromScript("create-app"));
assertEquals("", GrailsNameUtils.getNameFromScript(""));
assertNull(GrailsNameUtils.getNameFromScript(null));
}
public void testGetPluginName() {
assertEquals("db-utils", GrailsNameUtils.getPluginName("DbUtilsGrailsPlugin.groovy"));
assertEquals("shiro", GrailsNameUtils.getPluginName("ShiroGrailsPlugin.groovy"));
// The following isn't supported yet - but it should be.
// assertEquals("CAS-security", GrailsNameUtils.getPluginName("CASSecurityGrailsPlugin.groovy"));
assertEquals("", GrailsNameUtils.getPluginName(""));
assertNull(GrailsNameUtils.getPluginName(null));
try {
GrailsNameUtils.getPluginName("NotAPlugin.groovy");
fail("GrailsNameUtils.getPluginName() should have thrown an IllegalArgumentException.");
}
catch (IllegalArgumentException ex) {
// Expected!
}
}
public void testIsBlank() {
assertTrue("'null' value should count as blank.", GrailsNameUtils.isBlank(null));
assertTrue("Empty string should count as blank.", GrailsNameUtils.isBlank(""));
assertTrue("Spaces should count as blank.", GrailsNameUtils.isBlank(" "));
assertTrue("A tab should count as blank.", GrailsNameUtils.isBlank("\t"));
assertFalse("String with whitespace and non-whitespace should not count as blank.", GrailsNameUtils.isBlank("\t h"));
assertFalse("String should not count as blank.", GrailsNameUtils.isBlank("test"));
}
}