/*
* Copyright (c) 2005, 2008 Borland Software Corporation
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Artem Tikhomirov (Borland) - initial API and implementation
*/
package org.eclipse.gmf.tests.tr;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.gmf.internal.bridge.naming.ClassGenNamingStrategy;
import org.eclipse.gmf.internal.bridge.naming.DefaultGenNamingStrategy;
import org.eclipse.gmf.internal.bridge.naming.DesignGenNamingStrategy;
import org.eclipse.gmf.internal.bridge.naming.GenNamingStrategy;
import org.eclipse.gmf.internal.bridge.naming.gen.GenNamingMediatorImpl;
import org.eclipse.gmf.internal.common.IncrementalNamesDispenser;
import org.eclipse.gmf.internal.common.NamesDispenser;
import org.eclipse.gmf.tests.ConfiguredTestCase;
import org.eclipse.jdt.core.JavaConventions;
import org.eclipse.jdt.core.JavaCore;
public class NamingStrategyTest extends ConfiguredTestCase {
/**
* Signals error for valid but not recommended name, if <code>true</code>.
*/
private static final boolean STRICT_CHECK = true;
public NamingStrategyTest(String name) {
super(name);
}
public void testUniqueValueDispenser() {
NamesDispenser d = new IncrementalNamesDispenser();
String semanticPart = "Rocket";
String suffixPart = "Node";
String name1 = d.get(semanticPart, suffixPart);
String name2 = d.get(semanticPart, suffixPart);
assertFalse("Names are not unique", name1.equals(name2));
}
public void testDefaultEPNamingStrategy() {
doTest(new GenNamingMediatorImpl().getEditPart());
}
public void testPrefixNameStrategy() {
GenNamingStrategy pns = new DefaultGenNamingStrategy(null, null, null, null);
pns = new DesignGenNamingStrategy(null, null, pns, null);
pns = new ClassGenNamingStrategy(null, null, pns, null);
doTest(pns);
}
/* XXX template
public void test<YourStrategyNameHere>() {
doTest(new <YourStrategyNameHere>());
}
*/
private void doTest(GenNamingStrategy strategy) {
final String diagramName = strategy.get(getSetup().getGenModel().getGenDiagram());
final String nodeName = strategy.get(getSetup().getGenModel().getNodeA());
final String link1Name = strategy.get(getSetup().getGenModel().getLinkC());
final String link2Name = strategy.get(getSetup().getGenModel().getLinkD());
final String complianceLevel = JavaCore.VERSION_1_4;
assertStatus("Invalid Java class name '" + diagramName + " for diagram", JavaConventions.validateJavaTypeName(diagramName, complianceLevel, complianceLevel));
assertStatus("Invalid Java class name '" + nodeName + " for node", JavaConventions.validateJavaTypeName(nodeName, complianceLevel, complianceLevel));
assertStatus("Invalid Java class name '" + link1Name + " for link", JavaConventions.validateJavaTypeName(link1Name, complianceLevel, complianceLevel));
assertStatus("Invalid Java class name '" + link2Name + " for link", JavaConventions.validateJavaTypeName(link2Name, complianceLevel, complianceLevel));
}
private void assertStatus(String message, IStatus status) {
if (STRICT_CHECK) {
assertTrue(message, status.isOK());
return;
}
assertFalse(message, status.getSeverity() == IStatus.ERROR);
}
}