1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Patch for Victor Mozgin.

I replaced old Java testcases for partitioning with C/C++ ones, and 
fixed AutomatedIntegrationSuite so it doesn't produce a JUnit warning (which is a failure) anymore. So now all tests in org.eclipse.cdt.ui.tests should pass.
This commit is contained in:
John Camelon 2003-06-11 18:09:23 +00:00
parent 362dd49676
commit 5dd01f7ee2
4 changed files with 107 additions and 268 deletions

View file

@ -1,3 +1,8 @@
2003-06-11 Victor Mozgin
Old Java TestCase.txt and TestCase2.txt for partioning testing have been replaced with C/C++ files.
Modified AutomatedIntegrationSuite.java so it doesn't produce JUnit warning anymore.
All tests in org.eclipse.cdt.ui.tests should pass now.
2003-06-10 Brent Nicolle 2003-06-10 Brent Nicolle
Added some Interface tests of (IInclude, IMacro, IStructure). Added some Interface tests of (IInclude, IMacro, IStructure).
Made sure all the Test Suites have names in the JUnit hierarchy. Made sure all the Test Suites have names in the JUnit hierarchy.

View file

@ -74,7 +74,7 @@ public class AutomatedIntegrationSuite extends TestSuite implements TestListener
suite.addTest(WorkingCopyTests.suite()); suite.addTest(WorkingCopyTests.suite());
// Last test to trigger report generation // Last test to trigger report generation
suite.addTest(suite.new GenerateReport("testStartFailedTests")); suite.addTest(suite.new GenerateReport("startFailedTests"));
// Add all failed tests // Add all failed tests
suite.addTestSuite(DOMFailedTest.class); suite.addTestSuite(DOMFailedTest.class);
@ -83,7 +83,7 @@ public class AutomatedIntegrationSuite extends TestSuite implements TestListener
suite.addTestSuite(CModelElementsFailedTests.class); suite.addTestSuite(CModelElementsFailedTests.class);
// Last test to trigger report generation // Last test to trigger report generation
suite.addTest(suite.new GenerateReport("testGenerateReport")); suite.addTest(suite.new GenerateReport("generateReport"));
return suite; return suite;
} }
@ -209,7 +209,7 @@ public class AutomatedIntegrationSuite extends TestSuite implements TestListener
} }
public GenerateReport(){} public GenerateReport(){}
public void testGenerateReport() { public void generateReport() {
// skip this one // skip this one
AutomatedIntegrationSuite.this.skipTest = true; AutomatedIntegrationSuite.this.skipTest = true;
@ -217,7 +217,7 @@ public class AutomatedIntegrationSuite extends TestSuite implements TestListener
AutomatedIntegrationSuite.this.generateReport(); AutomatedIntegrationSuite.this.generateReport();
} }
public void testStartFailedTests() { public void startFailedTests() {
// skip this one // skip this one
AutomatedIntegrationSuite.this.skipTest = true; AutomatedIntegrationSuite.this.skipTest = true;

View file

@ -1,211 +1,43 @@
package org.eclipse.jdt.ui.tests.text; #include <Simple.h>
import java.lang.reflect.*; const SimpleStruct simpleStruct =
{
1
, "mySimple"
, 0.1232
};
/** #define SIZEOF( A, B ) sizeof( A.B )
* A test case defines the fixture to run multiple tests. To define a test case<br>
* 1) implement a subclass of TestCase<br>
* 2) define instance variables that store the state of the fixture<br>
* 3) initialize the fixture state by overriding <code>setUp</code><br>
* 4) clean-up after a test by overriding <code>tearDown</code>.<br>
* Each test runs in its own fixture so there
* can be no side effects among test runs.
* Here is an example:
* <pre>
* public class MathTest extends TestCase {
* protected double fValue1;
* protected double fValue2;
*
* public MathTest(String name) {
* super(name);
* }
*
* protected void setUp() {
* fValue1= 2.0;
* fValue2= 3.0;
* }
* }
* </pre>
*
* For each test implement a method which interacts
* with the fixture. Verify the expected results with assertions specified
* by calling <code>assert</code> with a boolean.
* <pre>
* protected void testAdd() {
* double result= fValue1 + fValue2;
* assert(result == 5.0);
* }
* </pre>
* Once the methods are defined you can run them. The framework supports
* both a static type safe and more dynamic way to run a test.
* In the static way you override the runTest method and define the method to
* be invoked. A convenient way to do so is with an anonymous inner class.
* <pre>
* Test test= new MathTest("add") {
* public void runTest() {
* testAdd();
* }
* };
* test.run();
* </pre>
* The dynamic way uses reflection to implement <code>runTest</code>. It dynamically finds
* and invokes a method.
* In this case the name of the test case has to correspond to the test method
* to be run.
* <pre>
* Test= new MathTest("testAdd");
* test.run();
* </pre>
* The tests to be run can be collected into a TestSuite. JUnit provides
* different <i>test runners</i> which can run a test suite and collect the results.
* A test runner either expects a static method <code>suite</code> as the entry
* point to get a test to run or it will extract the suite automatically.
* <pre>
* public static Test suite() {
* suite.addTest(new MathTest("testAdd"));
* suite.addTest(new MathTest("testDivideByZero"));
* return suite;
* }
* </pre>
* @see TestResult
* @see TestSuite
*/
public abstract class TestCase extends Assert implements Test { const OtherStruct array[] =
/** {
* the name of the test case {
*/ #if FOO
private String fName; "foo"
#else
"bar"
#endif
, SIZEOF( simpleStruct, num )
, &t_int
, 0
}
, {
"name"
, SIZEOF( simpleStruct, floatnum )
, &t_float
, 1
}
};
/**
* No-arg constructor to enable serialization. This method
* is not intended to be used by mere mortals.
*/
TestCase() {
fName= null;
}
/**
* Constructs a test case with the given name.
*/
public TestCase(String name) {
fName= name;
}
/**
* Counts the number of test cases executed by run(TestResult result).
*/
public int countTestCases() {
return 1;
}
/**
* Creates a default TestResult object
*
* @see TestResult
*/
protected TestResult createResult() {
return new TestResult();
}
/**
* Gets the name of the test case.
* @deprecated use getName()
*/
public String name() {
return fName;
}
/**
* A convenience method to run this test, collecting the results with a
* default TestResult object.
*
* @see TestResult
*/
public TestResult run() {
TestResult result= createResult();
run(result);
return result;
}
/**
* Runs the test case and collects the results in TestResult.
*/
public void run(TestResult result) {
result.run(this);
}
/**
* Runs the bare test sequence.
* @exception Throwable if any exception is thrown
*/
public void runBare() throws Throwable {
setUp();
try {
runTest();
}
finally {
tearDown();
}
}
/**
* Override to run the test and assert its state.
* @exception Throwable if any exception is thrown
*/
protected void runTest() throws Throwable {
Method runMethod= null;
try {
// use getMethod to get all public inherited
// methods. getDeclaredMethods returns all
// methods of this class but excludes the
// inherited ones.
runMethod= getClass().getMethod(fName, null);
} catch (NoSuchMethodException e) {
fail("Method \""+fName+"\" not found");
}
if (!Modifier.isPublic(runMethod.getModifiers())) {
fail("Method \""+fName+"\" should be public");
}
try {
runMethod.invoke(this, new Class[0]);
}
catch (InvocationTargetException e) {
e.fillInStackTrace();
throw e.getTargetException();
}
catch (IllegalAccessException e) {
e.fillInStackTrace();
throw e;
}
}
/**
* Sets up the fixture, for example, open a network connection.
* This method is called before a test is executed.
*/
protected void setUp() throws Exception {
}
/**
* Tears down the fixture, for example, close a network connection.
* This method is called after a test is executed.
*/
protected void tearDown() throws Exception {
}
/**
* Returns a string representation of the test case
*/
public String toString() {
return name()+"("+getClass().getName()+")";
}
/**
* Gets the name of a TestCase
* @return returns a String
*/
public String getName() {
return fName;
}
/**
* Sets the name of a TestCase
* @param name The name to set
*/
public void setName(String name) {
fName= name;
}
void SimpleStruct_construct( struct SimpleStruct * const this )
{
this->num = 1;
this->name = "boo";
this->floatNum = 1.5;
}
int ConnectParams_doSomething( const struct SimpleStruct * const this )
{
return 1;
} }

View file

@ -1,66 +1,68 @@
package org.eclipse.jdt.ui.tests.text; /*
* (c) Copyright QNX Software Systems Ltd. 2002.
/** * All Rights Reserved.
* javadoc
*/ */
public class TestCase2 { /********
/* * This is a sample C file that will be used in testing the TranslationUnit
* multi line comment * class. It has a specific structure that will be looked for within the
*/ * test case.
private void foo() { * This file is only ment to contain various C elements, and may not compile
// single line comment * into a running application (but should be valid C)
int value= 42;
/**/
String s= "string";
char c= 'c';
String s2= "string2"/* ads*/;
Nastyness: ""/**/''"";
// open strings and characters
'open characters
"open strings
// all state transitions
/* multi line comment */// single line comment
/* multi line comment *//* multi line comment */
/* multi line comment *//** java doc */
/* multi line comment */'character'
/* multi line comment */"string"
/* java doc */// single line comment
/* java doc *//* multi line comment */
/* java doc *//** java doc */
/* java doc */'character'
/* java doc */"string"
"string"// single line comment
"string"//* multi line comment */
"string"/** java doc */
"string"'character'
"string""string"
'character'// single line comment
'character'"//* multi line comment */
'character'/** java doc */
'character''character'
'character'"string"
// more nasty cases
/'asdf
/"asdf
/**
* // single line comment inside javadoc
*/ */
/* #include <stdio.h>
* // single line comment inside multi-line comment #include <unistd.h>
/* A function prototype */
int func2p(void);
/* A global variable */
int globalvar;
/* A enumeration */
enum myenum {ENUM_A=1, ENUM_B=2, ENUM_C=3, ENUM_D=4};
/* A structure. This also includes a typedef around the strcture def
* which at the time of writing was not picked up.
*/ */
typedef struct mystruct {
int a;
char b;
long c;
} mystruct_t;
// would fail conformance, but it's ok /* A union */
"<backslash> union myunion {
'<backslash> int x;
} char y;
long z;
};
/* A typedef */
typedef struct mystruct mytype;
/* A couple functions */
void * func1(void)
{
return(NULL);
}
int func2(void)
{
return(0);
}
int main(int argc, char ** argv)
{
int var1;
printf("Hello world\n");
}
void func3()
{
printf("This is not really here\n");
} }