/******************************************************************************* | |
* Copyright (c) 2009 University of Illinois at Urbana-Champaign and others. | |
* 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: | |
* UIUC - Initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.photran.refactoring.tests.commonblockvarnames; | |
import org.eclipse.photran.core.vpg.util.LineCol; | |
import junit.framework.Test; | |
import junit.framework.TestSuite; | |
/** | |
* Tests for the Make Common Variable Names Consistent refactoring | |
* | |
* @author Kurt Hendle | |
* @author Jeff Overbey | |
*/ | |
public class CommonVarNamesTestSuite extends TestSuite | |
{ | |
public static Test suite() throws Exception | |
{ | |
TestSuite suite = new TestSuite(); | |
// In the following, the line/column refers to a location in the first file listed | |
// 1. Basic check across multiple files | |
String[] test1Files = new String[] { "common1.f90", "common2.f90", "common3.f90", "common4.f90" }; | |
suite.addTest(successTest(test1Files, new LineCol(7,9), 5)); | |
//0. basic test with one file | |
// -used to test the static data cleanup and implicit typing | |
suite.addTest(successTest(new String[] {"justCommons1.f90"}, new LineCol(7,13), 5)); | |
suite.addTest(successTest(new String[] {"justCommons2.f90"}, new LineCol(2,13), 5)); | |
// 2. Basic check across multiple files with names provided | |
String[] test2Files = new String[] { "namesProv1.f90", "namesProv2.f90" }; | |
suite.addTest(successTest(test2Files, new LineCol(3,13), 5, "a_hello", "b_hello", "c_hello")); | |
//suite.addTest(successTest(new String[] {"justCommons1.f90"}, new LineCol(7,13), 5, "i_hello", "j_hello")); | |
// 3. Two of the common block variable names should stay the same in one declaration of the common block | |
String[] test3Files = new String[] { "sameName1.f90", "sameName2.f90" }; | |
// FIXME JO suite.addTest(successTest(test3Files, new LineCol(3,13), 5, "a", "b", "this_is_renamed")); | |
// 4. One declaration of the common block does not contain all the variables in the block | |
String[] test4Files = new String[] { "short1.f90" }; | |
suite.addTest(successTest(test4Files, new LineCol(4,11), 5, "aaa", "bbb", "ccc")); | |
String[] test4Files2 = new String[] { "short2.f90" }; | |
suite.addTest(successTest(test4Files2, new LineCol(20,11), 5, "aaa", "bbb")); | |
// 5. Precondition test -- make sure naming conflict is avoided | |
String[] test5Files = new String[] { "common1.f90", "common2.f90", "common3.f90", "common4.f90" }; | |
// vvvvvv conflicts with a subroutine | |
suite.addTest(preconditionTest(test5Files, new LineCol(7,9), 5, "a_hello", "helper", "c_hello")); | |
// vvvvvvvvvvvv conflicts with a subroutine | |
suite.addTest(preconditionTest(test5Files, new LineCol(7,9), 5, "help_common2", "b_hello", "c_hello")); | |
// 6. Precondition tests -- the variables must have the same types in every declaration of the common block | |
String[] test6Files = new String[] { "typesDiffer1.f90" }; | |
suite.addTest(preconditionTest(test6Files, new LineCol(4,11), 5)); | |
suite.addTest(preconditionTest(test6Files, new LineCol(20,11), 5)); | |
suite.addTest(preconditionTest(new String[]{"typesDiffer2.f90"}, new LineCol(2,12), 5)); | |
return suite; | |
} | |
private static TestSuite successTest(String[] filenames, LineCol position, int length) | |
{ | |
return successTest(filenames, position, length, (String[])null); | |
} | |
private static TestSuite successTest(String[] filenames, LineCol position, int length, String... newVarNames) | |
{ | |
TestSuite subSuite = new TestSuite("Making COMMON variable names consistent - " + filenames[0]); | |
subSuite.addTest(new CommonVarNamesTestCase(filenames, position, length, false, newVarNames)); | |
return subSuite; | |
} | |
private static TestSuite preconditionTest(String[] filenames, LineCol position, int length, String... newVarNames) | |
{ | |
TestSuite subSuite = new TestSuite("Testing preconditions for making COMMON variable names consistent - " + | |
filenames[0]); | |
subSuite.addTest(new CommonVarNamesTestCase(filenames, position, length, true, newVarNames)); | |
return subSuite; | |
} | |
} |