/******************************************************************************* | |
* 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.internal.core.tests.addonlytousestmt; | |
import org.eclipse.photran.core.vpg.util.LineCol; | |
import junit.framework.Test; | |
import junit.framework.TestSuite; | |
/** | |
* | |
* @author Kurt Hendle | |
*/ | |
public class AddOnlyToUseTestSuite extends TestSuite | |
{ | |
public static Test suite() throws Exception | |
{ | |
TestSuite suite = new TestSuite(); | |
//1. basic test, add no list, leave the file the same | |
String[] test1Files = new String[] { "test1.f90", "module2.f90", "module3.f90", "module4.f90" }; | |
suite.addTest(successTest(test1Files, new LineCol(3,5), 7)); | |
//2. basic test, add list of given names | |
String[] test2Files = new String[] { "test2.f90", "module2.f90", "module3.f90", "module4.f90" }; | |
suite.addTest(successTest(test2Files, new LineCol(3,5), 7, "help_common3", "onlyTest")); | |
//3. precondition test - give an empty selection for module name | |
String[] test3Files = new String[] { "test3.f90", "module2.f90", "module3.f90", "module4.f90", "module5.f90" }; | |
suite.addTest(finalPreconditionTest(test3Files, new LineCol(3,5), 0)); | |
//4. precondition test - give a non-existent module name | |
String[] test4Files = new String[] { "test3.f90", "module2.f90", "module3.f90", "module4.f90", "module5.f90" }; | |
suite.addTest(finalPreconditionTest(test4Files, new LineCol(8,9), 5)); | |
//5. precondition test - give a module containing no declarations | |
String[] test5Files = new String[] { "test3.f90", "module2.f90", "module3.f90", "module4.f90", "module5.f90" }; | |
suite.addTest(preconditionTest(test5Files, new LineCol(5,5), 7)); | |
//6. precondition test - have entity conflict with local variable | |
String[] test6Files = new String[] { "test6.f90", "module4.f90" }; //v name conflict | |
suite.addTest(finalPreconditionTest(test6Files, new LineCol(2,9), 7, "f")); | |
//7. precondition test - have 2 modules in project with same name | |
String[] test7Files = new String[] { "test7.f90", "module4.f90" }; | |
suite.addTest(preconditionTest(test7Files, new LineCol(2,9), 7)); | |
//8. precondition test - have 2 declarations of subroutine in same project | |
String[] test8Files = new String[] { "test8.f90", "module4.f90" }; | |
suite.addTest(finalPreconditionTest(test8Files, new LineCol(2,9), 7, "help_common4")); | |
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... entityNames) | |
{ | |
TestSuite subSuite = new TestSuite("Adding ONLY clause to USE statement - " + filenames[0]); | |
subSuite.addTest(new AddOnlyToUseTestCase(filenames, position, length, false, false, entityNames)); | |
return subSuite; | |
} | |
private static TestSuite preconditionTest(String[] filenames, LineCol position, int length, String... entityNames) | |
{ | |
TestSuite subSuite = new TestSuite("Testing preconditions for adding ONLY to USE statement - " + | |
filenames[0]); | |
subSuite.addTest(new AddOnlyToUseTestCase(filenames, position, length, true, false, entityNames)); | |
return subSuite; | |
} | |
private static TestSuite finalPreconditionTest(String[] filenames, LineCol position, int length, String... entityNames) | |
{ | |
TestSuite subSuite = new TestSuite("Testing final preconditions for adding ONLY to USE statement - " + | |
filenames[0]); | |
subSuite.addTest(new AddOnlyToUseTestCase(filenames, position, length, false, true, entityNames)); | |
return subSuite; | |
} | |
} |