diff --git a/core/org.eclipse.cdt.ui.tests/ChangeLog b/core/org.eclipse.cdt.ui.tests/ChangeLog index 057663c28c2..b0b132959c5 100644 --- a/core/org.eclipse.cdt.ui.tests/ChangeLog +++ b/core/org.eclipse.cdt.ui.tests/ChangeLog @@ -1,7 +1,5 @@ -2003-06-14 Victor Mozgin - Moved testBugSingleton192() from LokiFailures to DOMTests. - Added testPointersToMembers() and testPointersToMemberFunctions() to DOMTests. - Added testBug36290() and testBug36931() to DOMTests. +2003-06-17 Brent Nicolle + Added Interface tests of IStructure.java. 2003-06-16 Vladimir Hirsl Added /build, /parser, /failures and /suite directories to the library. @@ -10,6 +8,11 @@ Added class AISResultPrinter to format test results. Class AutomatedIntegrationSuite now implements IPlatformRunnable. +2003-06-14 Victor Mozgin + Moved testBugSingleton192() from LokiFailures to DOMTests. + Added testPointersToMembers() and testPointersToMemberFunctions() to DOMTests. + Added testBug36290() and testBug36931() to DOMTests. + 2003-06-13 John Camelon Added Class/Base infrastructure to public interfaces & requestor callback. Moved many internal interfaces to external packages. diff --git a/core/org.eclipse.cdt.ui.tests/model/org.eclipse.cdt.core.model.tests.resources/IStructure.c b/core/org.eclipse.cdt.ui.tests/model/org.eclipse.cdt.core.model.tests.resources/IStructure.c index 47b76757194..c46b043df41 100644 --- a/core/org.eclipse.cdt.ui.tests/model/org.eclipse.cdt.core.model.tests.resources/IStructure.c +++ b/core/org.eclipse.cdt.ui.tests/model/org.eclipse.cdt.core.model.tests.resources/IStructure.c @@ -1,4 +1,88 @@ // IStructure -struct foo { - int bar; +struct testStruct1 { + char m_field1; + char* m_field2; + unsigned char m_field3; + int m_field4; + unsigned m_field5; + void* m_field6; + + void method1(); + struct testStruct1 method2( char* in_field2, int in_field4 ) {} + // this is very C++: + testStruct1( char* in_field2, int in_field4 ) {} + ~testStruct1() {} +}; + +struct testStruct2 { +}; + +struct testStruct3 { +} aTestStruct3; + +// no semicolon, parser should recover +struct testStruct4NoSemicolon { +} + +// forward declaration +struct testStruct5; + +// variable declaration using predefined struct. +struct testStruct6 aTestStruct6; + +struct { + int x; +} testAnonymousStructObject1; + +struct { + int x; +} testAnonymousStructObject2= {1}; + +// to resync the parser if necessary +struct testStruct7 { +}; + +// an inner struct +struct testStruct8 { + struct testStruct9Inner { + int x; + }; + struct testStruct10Inner { + int y; + struct testStruct11Inner { + int z; + }; + }; +}; + +union testUnion1 { + char m_field1; + char* m_field2; + unsigned char m_field3; + int m_field4; + unsigned m_field5; + void* m_field6; +}; + +class testClass1 { +}; + +class testClass2NoSemicolon { +} + +class testClass3 { +}; + +class testClass4Abstract { + void aNonVirtual(); + virtual void aVirtual(); + virtual void aPureVirtual()=0; +}; + +class testClass5 +: public testClass1, protected testClass3, private testClass4Abstract { +}; + +// to resync the parser if necessary +class testClass6 { }; diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/IMacroTests.java b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/IMacroTests.java index 6033a0c5c8b..e795cec1653 100644 --- a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/IMacroTests.java +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/IMacroTests.java @@ -27,8 +27,8 @@ public class IMacroTests extends IntegratedCModelTest { public static Test suite() { TestSuite suite= new TestSuite( IMacroTests.class.getName() ); suite.addTest( new IMacroTests("testGetElementName")); - // TODO: suite.addTest( new IMacroTest("testGetIdentifierList")); - // TODO: suite.addTest( new IMacroTest("testGetTokenSequence")); + // TODO Bug# 38740: suite.addTest( new IMacroTest("testGetIdentifierList")); + // TODO Bug# 38740: suite.addTest( new IMacroTest("testGetTokenSequence")); return suite; } diff --git a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/IStructureTests.java b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/IStructureTests.java index d970aee9496..b86b213ad3f 100644 --- a/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/IStructureTests.java +++ b/core/org.eclipse.cdt.ui.tests/model/org/eclipse/cdt/core/model/tests/IStructureTests.java @@ -4,9 +4,7 @@ */ package org.eclipse.cdt.core.model.tests; -import org.eclipse.cdt.core.model.ITranslationUnit; -import org.eclipse.cdt.core.model.IStructure; -import org.eclipse.cdt.core.model.IField; +import org.eclipse.cdt.core.model.*; import junit.framework.*; @@ -44,52 +42,381 @@ public class IStructureTests extends IntegratedCModelTest { */ public static Test suite() { TestSuite suite= new TestSuite( IStructureTests.class.getName() ); - // TODO: suite.addTest( new IStructureTests("testGetField")); - // TODO: implement the other tests here once IStructure is properly implemented! + // TODO check C-only behaviour using C_NATURE vs CC_NATURE + + // Interface tests: + suite.addTest( new IStructureTests("testGetChildrenOfTypeStruct")); + suite.addTest( new IStructureTests("testGetChildrenOfTypeClass")); // C++ only + // TODO Bug# 38985: suite.addTest( new IStructureTests("testGetFields")); + suite.addTest( new IStructureTests("testGetFieldsHack")); + // TODO Bug# 38985: suite.addTest( new IStructureTests("testGetField")); + // TODO Bug# 38985: suite.addTest( new IStructureTests("testGetMethods")); // C++ only + suite.addTest( new IStructureTests("testGetMethodsHack")); // C++ only + // TODO Bug# 38985: suite.addTest( new IStructureTests("testGetMethod")); // C++ only + suite.addTest( new IStructureTests("testIsStruct")); + suite.addTest( new IStructureTests("testIsClass")); // C++ only + suite.addTest( new IStructureTests("testIsUnion")); + // TODO Bug# 38985: suite.addTest( new IStructureTests("testIsAbstract")); // C++ only + // TODO Bug# 38985: suite.addTest( new IStructureTests("testGetBaseTypes")); // C++ only + // TODO Bug# 38985: suite.addTest( new IStructureTests("testGetAccessControl")); // C++ only + + // Language Specification tests: + suite.addTest( new IStructureTests("testAnonymousStructObject")); + suite.addTest( new IStructureTests("testInnerStruct")); + return suite; } - - public void testGetAccessControl() { - // test getAccessControl() - // test getAccessControl(int) + public void testGetChildrenOfTypeStruct() { + ITranslationUnit tu = getTU(); + ArrayList arrayStructs = tu.getChildrenOfType(ICElement.C_STRUCT); + String[] myExpectedStructs = { + "testStruct1", "testStruct2", "testStruct3", + /* 2 anonymous structs */ "", "", "testStruct7", + "testStruct8" + }; + assertEquals(myExpectedStructs.length,arrayStructs.size()); + for(int i=0; i