/*
* Copyright (c) 2012, the Dart project authors.
*
* Licensed under the Eclipse Public License v1.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.eclipse.org/legal/epl-v10.html
*
* 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.dart.tools.core.model;
import junit.framework.TestCase;
import org.eclipse.core.runtime.IStatus;
import java.lang.reflect.Method;
/**
* Test for {@link DartConventions}.
*/
public class DartConventionsTest extends TestCase {
private static String elementName;
/**
* Asserts that given name has {@link IStatus#ERROR} severity.
*/
private static String validateError(String name) throws Exception {
return validateSeverity(name, IStatus.ERROR);
}
/**
* @return the {@link IStatus} of {@link #elementName} name validation.
*/
private static IStatus validateName(String name) throws Exception {
Method method = DartConventions.class.getMethod("validate" + elementName, String.class);
return (IStatus) method.invoke(null, name);
}
/**
* Asserts that given name has {@link IStatus#OK} severity.
*/
private static String validateOK(String name) throws Exception {
return validateSeverity(name, IStatus.OK);
}
private static String validateSeverity(String name, int severity) throws Exception {
IStatus status = validateName(name);
assertTrue(name + " " + status, status.getSeverity() == severity);
return status.getMessage();
}
/**
* Asserts that given name has {@link IStatus#WARNING} severity.
*/
private static String validateWarning(String name) throws Exception {
return validateSeverity(name, IStatus.WARNING);
}
/**
* Test for {@link DartConventions#validateFieldName(String)}.
*/
public void test_validateFieldName() throws Exception {
elementName = "FieldName";
// OK
validateOK("field");
validateOK("field2");
validateOK("fieldName");
validateOK("_field");
// warning: first should be lower case
validateWarning("Field");
// null
validateError(null);
// spaces
validateError(" field");
validateError("field ");
// identifier
validateError("");
validateError("f ield");
validateError("2field");
validateError("field-");
}
/**
* Test for {@link DartConventions#validateFunctionName(String)}.
*/
public void test_validateFunctionName() throws Exception {
elementName = "FunctionName";
// OK
validateOK("function");
validateOK("function2");
validateOK("functionName");
validateOK("_function");
// warning: first should be lower case
validateWarning("Function");
}
/**
* Test for {@link DartConventions#validateFunctionTypeAliasName(String)}.
*/
public void test_validateFunctionTypeAliasName() throws Exception {
elementName = "FunctionTypeAliasName";
// OK
validateOK("TypeAlias");
validateOK("TypeAlias2");
validateOK("_TypeAlias");
// warning: first should be upper case
validateWarning("typeAlias");
// null
validateError(null);
// spaces
validateError(" TypeAlias");
validateError("TypeAlias ");
// identifier
validateError("");
validateError("Type Alias");
validateError("2TypeAlias");
validateError("TypeAlias-");
}
/**
* Test for {@link DartConventions#validateMethodName(String)}.
*/
public void test_validateMethodName() throws Exception {
elementName = "MethodName";
// OK
validateOK("method");
validateOK("method2");
validateOK("methodName");
validateOK("_method");
// warning: first should be lower case
validateWarning("Method");
}
/**
* Test for {@link DartConventions#validateParameterName(String)}.
*/
public void test_validateParameterName() throws Exception {
elementName = "ParameterName";
// OK
validateOK("parameter");
validateOK("parameter2");
validateOK("parameterName");
validateOK("_parameter");
// warning: first should be lower case
validateWarning("Parameter");
}
/**
* Test for {@link DartConventions#validatePrefix(String)}.
*/
public void test_validatePrefix() throws Exception {
elementName = "Prefix";
// OK
validateOK("prefix");
validateOK("Prefix");
validateOK("prefix2");
validateOK("prefixName");
validateOK("_variable");
// null
validateError(null);
// spaces
validateError(" prefix");
validateError("prefix ");
// identifier
validateError("pre fix");
}
/**
* Test for {@link DartConventions#validateTypeName(String)}.
*/
public void test_validateTypeName() throws Exception {
elementName = "TypeName";
// OK
validateOK("Type");
validateOK("Type2");
validateOK("TypeName");
validateOK("_Type");
// warning: first should be upper case
validateWarning("type");
// null
validateError(null);
// spaces
validateError(" Type");
validateError("Type ");
// identifier
validateError("");
validateError("T ype");
validateError("2Type");
validateError("Type-");
}
/**
* Test for {@link DartConventions#validateTypeParameterName(String)}.
*/
public void test_validateTypeParameterName() throws Exception {
elementName = "TypeParameterName";
// OK
validateOK("Type");
validateOK("Type2");
validateOK("TypeName");
validateOK("_Type");
// warning: first should be upper case
validateWarning("type");
}
}