/*******************************************************************************
* Copyright (c) 2012 Google, Inc.
* 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:
* Google, Inc. - initial API and implementation
*******************************************************************************/
package com.windowtester.eclipse.ui.convert;
import java.io.IOException;
import java.util.ArrayList;
import org.eclipse.jdt.core.IJavaElement;
import com.windowtester.eclipse.ui.convert.rule.WTReplaceTypeRule;
import com.windowtester.internal.runtime.util.Filter;
import com.windowtester.runtime.swt.UITestCaseSWT;
import com.windowtester.runtime.swt.UnableToFindActiveShellException;
/**
* Test the expansion of imports
*
* @author Dan Rubel
*/
public class WTReplaceTypeRuleTest extends AbstractWTConvertAPITest
{
public void testConvertSuperclass_1() throws IOException {
testConvertSuperclass("NewContactEmbeddedSwingTest.txt");
}
public void testConvertSuperclass_2() throws IOException {
testConvertSuperclass("NewContactSwingTest.txt");
}
public void testConvertType_1() throws IOException {
testConvertSuperclass("LostFocusTest.txt");
}
private void testConvertSuperclass(String fileName) throws IOException {
testRules("replacetype", fileName, new WTConvertAPIRule[]{
new WTReplaceTypeRule("junit.extensions.UITestCase", UITestCaseSWT.class),
new WTReplaceTypeRule("junit.extensions.UITestCaseSWT", UITestCaseSWT.class),
new WTReplaceTypeRule("com.windowtester.runtime.swt.finder.UnableToFindActiveShellException",
UnableToFindActiveShellException.class),
new WTReplaceTypeRule("com.windowtester.swt.util.PathStringTokenizerUtil",
"com.windowtester.runtime.swt.internal.util.PathStringTokenizerUtil"),
new WTReplaceTypeRule("com.windowtester.swt.util.TextUtils",
"com.windowtester.runtime.swt.internal.util.TextUtils"),
});
}
public static void main(String[] args) {
dumpReplaceRuleTableContents();
}
private static Filter<WTConvertAPIRule> PUBLICS = new Filter<WTConvertAPIRule>() {
@Override
public boolean passes(WTConvertAPIRule rule) {
if (!(rule instanceof WTReplaceTypeRule))
return false;
WTReplaceTypeRule replaceRule = (WTReplaceTypeRule)rule;
return !isInternal(replaceRule);
}
};
private static Filter<WTConvertAPIRule> INTERNALS = new Filter<WTConvertAPIRule>() {
@Override
public boolean passes(WTConvertAPIRule rule) {
if (!(rule instanceof WTReplaceTypeRule))
return false;
WTReplaceTypeRule replaceRule = (WTReplaceTypeRule)rule;
return isInternal(replaceRule);
}
};
/**
* Contents for : /com.windowtester.eclipse.help/html/reference/API Migration.textile
*/
private static void dumpReplaceRuleTableContents() {
WTConvertAPIRule[] rules = new WTConvertAPIRefactoring(new ArrayList<IJavaElement>()).getRules();
System.out.println("public API types");
boolean toColor = false;
for (WTConvertAPIRule rule : PUBLICS.filter(rules)) {
System.out.println(rowAttr(toColor = !toColor) + asMarkup((WTReplaceTypeRule) rule));
}
System.out.println("internal API types");
toColor = false;
for (WTConvertAPIRule rule : INTERNALS.filter(rules)) {
System.out.println(rowAttr(toColor = !toColor) + asMarkup((WTReplaceTypeRule) rule));
}
}
private static String rowAttr(boolean toColor) {
return toColor ? "{background:#ddd}." : "";
}
private static String asMarkup(WTReplaceTypeRule replaceRule) {
return "| @" + replaceRule.getOldTypeName() + "@ | @" + replaceRule.getNewTypeName() + "@ |";
}
private static boolean isInternal(WTReplaceTypeRule replaceRule) {
return replaceRule.getNewTypeName().contains(".internal.");
}
}