1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-08 16:55:38 +02:00

2005-06-25 Alain Magloire

PR 98788: Templates
	* model/org/eclipse/cdt/core/model/tests/CModleElementsTests.java
	* model/org/eclipse/cdt/core/model/tests/ITemplateTests.java
	* model/org/eclipse/cdt/core/model/tests/StructureCModelElementsTests.java
	* model/org/eclipse/cdt/core/model/tests/StructuralTemplateTests.java
This commit is contained in:
Alain Magloire 2005-06-25 16:42:39 +00:00
parent dd2d2f9a52
commit 1252d8004a
5 changed files with 132 additions and 53 deletions

View file

@ -1,3 +1,10 @@
2005-06-25 Alain Magloire
PR 98788: Templates
* model/org/eclipse/cdt/core/model/tests/CModleElementsTests.java
* model/org/eclipse/cdt/core/model/tests/ITemplateTests.java
* model/org/eclipse/cdt/core/model/tests/StructureCModelElementsTests.java
* model/org/eclipse/cdt/core/model/tests/StructuralTemplateTests.java
2005-06-16 Vladimir Hirsl 2005-06-16 Vladimir Hirsl
Updated search related tests to reflect function parameters in search pattern. Updated search related tests to reflect function parameters in search pattern.

View file

@ -27,15 +27,19 @@ import org.eclipse.cdt.core.model.IEnumerator;
import org.eclipse.cdt.core.model.IField; import org.eclipse.cdt.core.model.IField;
import org.eclipse.cdt.core.model.IFunction; import org.eclipse.cdt.core.model.IFunction;
import org.eclipse.cdt.core.model.IFunctionDeclaration; import org.eclipse.cdt.core.model.IFunctionDeclaration;
import org.eclipse.cdt.core.model.IFunctionTemplateDeclaration;
import org.eclipse.cdt.core.model.IInclude; import org.eclipse.cdt.core.model.IInclude;
import org.eclipse.cdt.core.model.IMacro; import org.eclipse.cdt.core.model.IMacro;
import org.eclipse.cdt.core.model.IMethod; import org.eclipse.cdt.core.model.IMethod;
import org.eclipse.cdt.core.model.IMethodDeclaration; import org.eclipse.cdt.core.model.IMethodDeclaration;
import org.eclipse.cdt.core.model.IMethodTemplate;
import org.eclipse.cdt.core.model.IMethodTemplateDeclaration;
import org.eclipse.cdt.core.model.INamespace; import org.eclipse.cdt.core.model.INamespace;
import org.eclipse.cdt.core.model.IParent; import org.eclipse.cdt.core.model.IParent;
import org.eclipse.cdt.core.model.ISourceRange; import org.eclipse.cdt.core.model.ISourceRange;
import org.eclipse.cdt.core.model.ISourceReference; import org.eclipse.cdt.core.model.ISourceReference;
import org.eclipse.cdt.core.model.IStructure; import org.eclipse.cdt.core.model.IStructure;
import org.eclipse.cdt.core.model.IStructureTemplate;
import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.model.ITypeDef; import org.eclipse.cdt.core.model.ITypeDef;
import org.eclipse.cdt.core.model.IVariable; import org.eclipse.cdt.core.model.IVariable;
@ -43,9 +47,6 @@ import org.eclipse.cdt.core.model.IVariableDeclaration;
import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
import org.eclipse.cdt.core.testplugin.CProjectHelper; import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.CTestPlugin; import org.eclipse.cdt.core.testplugin.CTestPlugin;
import org.eclipse.cdt.internal.core.model.FunctionTemplate;
import org.eclipse.cdt.internal.core.model.MethodTemplate;
import org.eclipse.cdt.internal.core.model.StructureTemplate;
import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor;
@ -436,8 +437,8 @@ public class CModelElementsTests extends TestCase {
private void checkTemplates(IParent namespace) throws CModelException{ private void checkTemplates(IParent namespace) throws CModelException{
// template function // template function
List functionTemplates = namespace.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION); List functionTemplates = namespace.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION_DECLARATION);
FunctionTemplate ft = (FunctionTemplate)functionTemplates.get(0); IFunctionTemplateDeclaration ft = (IFunctionTemplateDeclaration)functionTemplates.get(0);
assertEquals(ft.getElementName(), new String("aTemplatedFunction")); assertEquals(ft.getElementName(), new String("aTemplatedFunction"));
checkElementOffset(ft); checkElementOffset(ft);
ft.getTemplateSignature(); ft.getTemplateSignature();
@ -448,8 +449,8 @@ public class CModelElementsTests extends TestCase {
List nsClasses = namespace.getChildrenOfType(ICElement.C_CLASS); List nsClasses = namespace.getChildrenOfType(ICElement.C_CLASS);
IStructure enclosingClass = (IStructure) nsClasses.get(1); IStructure enclosingClass = (IStructure) nsClasses.get(1);
checkLineNumbers(enclosingClass, 115, 120); checkLineNumbers(enclosingClass, 115, 120);
List methodTemplates = enclosingClass.getChildrenOfType(ICElement.C_TEMPLATE_METHOD); List methodTemplates = enclosingClass.getChildrenOfType(ICElement.C_TEMPLATE_METHOD_DECLARATION);
MethodTemplate mt = (MethodTemplate)methodTemplates.get(0); IMethodTemplateDeclaration mt = (IMethodTemplateDeclaration)methodTemplates.get(0);
assertEquals(mt.getElementName(), new String("aTemplatedMethod")); assertEquals(mt.getElementName(), new String("aTemplatedMethod"));
checkElementOffset(mt); checkElementOffset(mt);
assertEquals(mt.getTemplateSignature(), new String("aTemplatedMethod<A, B>(B) : A")); assertEquals(mt.getTemplateSignature(), new String("aTemplatedMethod<A, B>(B) : A"));
@ -458,7 +459,7 @@ public class CModelElementsTests extends TestCase {
// template class // template class
List classTemplates = namespace.getChildrenOfType(ICElement.C_TEMPLATE_CLASS); List classTemplates = namespace.getChildrenOfType(ICElement.C_TEMPLATE_CLASS);
StructureTemplate ct = (StructureTemplate)classTemplates.get(0); IStructureTemplate ct = (IStructureTemplate)classTemplates.get(0);
assertEquals(ct.getElementName(), new String("myarray")); assertEquals(ct.getElementName(), new String("myarray"));
checkElementOffset(ct); checkElementOffset(ct);
assertEquals(ct.getTemplateSignature(), new String("myarray<T, Tibor>")); assertEquals(ct.getTemplateSignature(), new String("myarray<T, Tibor>"));
@ -466,7 +467,7 @@ public class CModelElementsTests extends TestCase {
// template struct // template struct
List structTemplates = namespace.getChildrenOfType(ICElement.C_TEMPLATE_STRUCT); List structTemplates = namespace.getChildrenOfType(ICElement.C_TEMPLATE_STRUCT);
StructureTemplate st = (StructureTemplate)structTemplates.get(0); IStructureTemplate st = (IStructureTemplate)structTemplates.get(0);
assertEquals(st.getElementName(), new String("mystruct")); assertEquals(st.getElementName(), new String("mystruct"));
checkElementOffset(st); checkElementOffset(st);
assertEquals(st.getTemplateSignature(), new String("mystruct<T, Tibor>")); assertEquals(st.getTemplateSignature(), new String("mystruct<T, Tibor>"));

View file

@ -77,7 +77,9 @@ public class ITemplateTests extends IntegratedCModelTest {
assertNotNull( c ); assertNotNull( c );
} }
assertNotNull(myElem); assertNotNull(myElem);
return myElem.getChildrenOfType(ICElement.C_TEMPLATE_METHOD); List list = myElem.getChildrenOfType(ICElement.C_TEMPLATE_METHOD_DECLARATION);
list.addAll((myElem.getChildrenOfType(ICElement.C_TEMPLATE_METHOD)));
return list;
} }
public void testGetChildrenOfTypeTemplate() throws CModelException { public void testGetChildrenOfTypeTemplate() throws CModelException {
@ -89,9 +91,10 @@ public class ITemplateTests extends IntegratedCModelTest {
}; };
assertEquals(myExpectedValues.length, arrayElements.size()); assertEquals(myExpectedValues.length, arrayElements.size());
for(int i=0; i<myExpectedValues.length; i++) { for(int i=0; i<myExpectedValues.length; i++) {
ITemplate myITemplate = (ITemplate) arrayElements.get(i); ICElement celement = (ICElement) arrayElements.get(i);
ITemplate myITemplate = (ITemplate)celement;
assertNotNull( "Failed on "+i, myITemplate); assertNotNull( "Failed on "+i, myITemplate);
assertEquals("Failed on "+i, myExpectedValues[i], myITemplate.getElementName()); assertEquals("Failed on "+i, myExpectedValues[i], celement.getElementName());
} }
} }
{ {
@ -101,9 +104,10 @@ public class ITemplateTests extends IntegratedCModelTest {
}; };
assertEquals(myExpectedValues.length, arrayElements.size()); assertEquals(myExpectedValues.length, arrayElements.size());
for(int i=0; i<myExpectedValues.length; i++) { for(int i=0; i<myExpectedValues.length; i++) {
ITemplate myITemplate = (ITemplate) arrayElements.get(i); ICElement celement = (ICElement) arrayElements.get(i);
ITemplate myITemplate = (ITemplate)celement;
assertNotNull( "Failed on "+i, myITemplate); assertNotNull( "Failed on "+i, myITemplate);
assertEquals("Failed on "+i, myExpectedValues[i], myITemplate.getElementName()); assertEquals("Failed on "+i, myExpectedValues[i], celement.getElementName());
} }
} }
{ {
@ -113,31 +117,87 @@ public class ITemplateTests extends IntegratedCModelTest {
}; };
assertEquals(myExpectedValues.length, arrayElements.size()); assertEquals(myExpectedValues.length, arrayElements.size());
for(int i=0; i<myExpectedValues.length; i++) { for(int i=0; i<myExpectedValues.length; i++) {
ITemplate myITemplate = (ITemplate) arrayElements.get(i); ICElement celement = (ICElement) arrayElements.get(i);
ITemplate myITemplate = (ITemplate)celement;
assertNotNull( "Failed on "+i, myITemplate); assertNotNull( "Failed on "+i, myITemplate);
assertEquals("Failed on "+i, myExpectedValues[i], myITemplate.getElementName()); assertEquals("Failed on "+i, myExpectedValues[i], celement.getElementName());
} }
} }
{ {
// Methods and Functions are tested together as // Method from the TemplateContainer
// Function declarations in Quick Parse mode
// are considered Method Declarations in Structural parse mode
List arrayElements = getTemplateMethods(tu); List arrayElements = getTemplateMethods(tu);
arrayElements.addAll(tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION));
String[] myExpectedValues = { String[] myExpectedValues = {
"fum", "fum",
"scrum", "scrum",
"nonVector<T>::first", };
"IsGreaterThan", assertEquals(myExpectedValues.length, arrayElements.size());
"Foo::fum" // This test is no correct there is no guaranty on the order
// for this particular case
for(int i=0; i<myExpectedValues.length; i++) {
ICElement celement = (ICElement) arrayElements.get(i);
ITemplate myITemplate = (ITemplate)celement;
assertNotNull( "Failed on "+i, myITemplate);
assertEquals("Failed on "+i, myExpectedValues[i], celement.getElementName());
}
}
{
// Check the template function
List arrayElements = tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION);
String[] myExpectedValues = {
"nonVector<T>::first",
"Foo::fum",
};
assertEquals(myExpectedValues.length, arrayElements.size());
// This test is no correct there is no guaranty on the order
// for this particular case
for(int i=0; i<myExpectedValues.length; i++) {
ICElement celement = (ICElement) arrayElements.get(i);
ITemplate myITemplate = (ITemplate)celement;
assertNotNull( "Failed on "+i, myITemplate);
assertEquals("Failed on "+i, myExpectedValues[i], celement.getElementName());
}
}
{
// Template function declation
List arrayElements = tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION_DECLARATION);
String[] myExpectedValues = {
"IsGreaterThan"
}; };
assertEquals(myExpectedValues.length, arrayElements.size()); assertEquals(myExpectedValues.length, arrayElements.size());
// This test is no correct there is no guaranty on the order
// for this particular case
for(int i=0; i<myExpectedValues.length; i++) { for(int i=0; i<myExpectedValues.length; i++) {
ITemplate myITemplate = (ITemplate) arrayElements.get(i); ICElement celement = (ICElement) arrayElements.get(i);
ITemplate myITemplate = (ITemplate)celement;
assertNotNull( "Failed on "+i, myITemplate); assertNotNull( "Failed on "+i, myITemplate);
assertEquals("Failed on "+i, myExpectedValues[i], myITemplate.getElementName()); assertEquals("Failed on "+i, myExpectedValues[i], celement.getElementName());
} }
} }
{
// // Methods and Functions are tested together as
// // Function declarations in Quick Parse mode
// // are considered Method Declarations in Structural parse mode
// List arrayElements = getTemplateMethods(tu);
// arrayElements.addAll(tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION));
// arrayElements.addAll(tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION_DECLARATION));
// String[] myExpectedValues = {
// "fum",
// "scrum",
// "nonVector<T>::first",
// "Foo::fum",
// "IsGreaterThan"
// };
// assertEquals(myExpectedValues.length, arrayElements.size());
// // This test is no correct there is no guaranty on the order
// // for this particular case
// for(int i=0; i<myExpectedValues.length; i++) {
// ICElement celement = (ICElement) arrayElements.get(i);
// ITemplate myITemplate = (ITemplate)celement;
// assertNotNull( "Failed on "+i, myITemplate);
// assertEquals("Failed on "+i, myExpectedValues[i], celement.getElementName());
// }
}
/* /*
// TEMPLATE_VARIABLE moved to failed tests // TEMPLATE_VARIABLE moved to failed tests
{ {
@ -164,6 +224,7 @@ public class ITemplateTests extends IntegratedCModelTest {
arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_UNION ) ); arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_UNION ) );
arrayElements.addAll( getTemplateMethods(tu) ); arrayElements.addAll( getTemplateMethods(tu) );
arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION ) ); arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION ) );
arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION_DECLARATION ) );
// TEMPLATE_VARIABLE moved to failed tests // TEMPLATE_VARIABLE moved to failed tests
//arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_VARIABLE ) ); //arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_VARIABLE ) );
@ -188,8 +249,9 @@ public class ITemplateTests extends IntegratedCModelTest {
arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_UNION ) ); arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_UNION ) );
arrayElements.addAll( getTemplateMethods(tu) ); arrayElements.addAll( getTemplateMethods(tu) );
arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION ) ); arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION ) );
arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION_DECLARATION ) );
// TEMPLATE_VARIABLE moved to failed tests // TEMPLATE_VARIABLE moved to failed tests
//arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_VARIABLE ) ); //arrayElements.addAll( tu.getChildrenOfType(ICElement.C_VARIABLE_TEMPLATE ) );
String[][] myExpectedValues = { String[][] myExpectedValues = {
//"Map" //"Map"
@ -204,10 +266,10 @@ public class ITemplateTests extends IntegratedCModelTest {
{"int"}, {"int"},
//"nonVector::first" //"nonVector::first"
{"T"}, {"T"},
//"IsGreaterThan"
{"X"},
//"Foo::fum" //"Foo::fum"
{"Bar"}, {"Bar"},
//"IsGreaterThan"
{"X"},
/* /*
//"default_alloc_template::S_start_free" //"default_alloc_template::S_start_free"
{"bool", "int"},*/ {"bool", "int"},*/
@ -233,6 +295,7 @@ public class ITemplateTests extends IntegratedCModelTest {
arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_UNION ) ); arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_UNION ) );
arrayElements.addAll( getTemplateMethods(tu) ); arrayElements.addAll( getTemplateMethods(tu) );
arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION ) ); arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION ) );
arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION_DECLARATION ) );
// TEMPLATE_VARIABLE moved to failed tests // TEMPLATE_VARIABLE moved to failed tests
//arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_VARIABLE ) ); //arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_VARIABLE ) );
@ -243,9 +306,9 @@ public class ITemplateTests extends IntegratedCModelTest {
"fum<Bar>(int) : void", "fum<Bar>(int) : void",
"scrum<int>(void) : void", // TODO: deduce the rules of () versus (void), compare below. "scrum<int>(void) : void", // TODO: deduce the rules of () versus (void), compare below.
"nonVector<T>::first<T>() : const T&", // TODO: where should <T> be? "nonVector<T>::first<T>() : const T&", // TODO: where should <T> be?
"Foo::fum<Bar>(int) : void",
// TODO: shouldn't signature indicate const function as well? // TODO: shouldn't signature indicate const function as well?
"IsGreaterThan<X>(X, X) : bool", "IsGreaterThan<X>(X, X) : bool",
"Foo::fum<Bar>(int) : void",
/*"default_alloc_template<threads,inst>::S_start_free<bool, int> : char*",*/ /*"default_alloc_template<threads,inst>::S_start_free<bool, int> : char*",*/
}; };
assertEquals(myExpectedValues.length, arrayElements.size()); assertEquals(myExpectedValues.length, arrayElements.size());

View file

@ -28,15 +28,18 @@ import org.eclipse.cdt.core.model.IEnumerator;
import org.eclipse.cdt.core.model.IField; import org.eclipse.cdt.core.model.IField;
import org.eclipse.cdt.core.model.IFunction; import org.eclipse.cdt.core.model.IFunction;
import org.eclipse.cdt.core.model.IFunctionDeclaration; import org.eclipse.cdt.core.model.IFunctionDeclaration;
import org.eclipse.cdt.core.model.IFunctionTemplateDeclaration;
import org.eclipse.cdt.core.model.IInclude; import org.eclipse.cdt.core.model.IInclude;
import org.eclipse.cdt.core.model.IMacro; import org.eclipse.cdt.core.model.IMacro;
import org.eclipse.cdt.core.model.IMethod; import org.eclipse.cdt.core.model.IMethod;
import org.eclipse.cdt.core.model.IMethodDeclaration; import org.eclipse.cdt.core.model.IMethodDeclaration;
import org.eclipse.cdt.core.model.IMethodTemplateDeclaration;
import org.eclipse.cdt.core.model.INamespace; import org.eclipse.cdt.core.model.INamespace;
import org.eclipse.cdt.core.model.IParent; import org.eclipse.cdt.core.model.IParent;
import org.eclipse.cdt.core.model.ISourceRange; import org.eclipse.cdt.core.model.ISourceRange;
import org.eclipse.cdt.core.model.ISourceReference; import org.eclipse.cdt.core.model.ISourceReference;
import org.eclipse.cdt.core.model.IStructure; import org.eclipse.cdt.core.model.IStructure;
import org.eclipse.cdt.core.model.IStructureTemplate;
import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.model.ITypeDef; import org.eclipse.cdt.core.model.ITypeDef;
import org.eclipse.cdt.core.model.IVariable; import org.eclipse.cdt.core.model.IVariable;
@ -44,9 +47,6 @@ import org.eclipse.cdt.core.model.IVariableDeclaration;
import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
import org.eclipse.cdt.core.testplugin.CProjectHelper; import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.CTestPlugin; import org.eclipse.cdt.core.testplugin.CTestPlugin;
import org.eclipse.cdt.internal.core.model.FunctionTemplate;
import org.eclipse.cdt.internal.core.model.MethodTemplate;
import org.eclipse.cdt.internal.core.model.StructureTemplate;
import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor;
@ -444,8 +444,8 @@ public class StructuralCModelElementsTests extends TestCase {
private void checkTemplates(IParent namespace) throws CModelException{ private void checkTemplates(IParent namespace) throws CModelException{
// template function // template function
List functionTemplates = namespace.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION); List functionTemplates = namespace.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION_DECLARATION);
FunctionTemplate ft = (FunctionTemplate)functionTemplates.get(0); IFunctionTemplateDeclaration ft = (IFunctionTemplateDeclaration)functionTemplates.get(0);
assertEquals(ft.getElementName(), new String("aTemplatedFunction")); //$NON-NLS-1$ assertEquals(ft.getElementName(), new String("aTemplatedFunction")); //$NON-NLS-1$
checkElementOffset(ft); checkElementOffset(ft);
ft.getTemplateSignature(); ft.getTemplateSignature();
@ -456,8 +456,8 @@ public class StructuralCModelElementsTests extends TestCase {
List nsClasses = namespace.getChildrenOfType(ICElement.C_CLASS); List nsClasses = namespace.getChildrenOfType(ICElement.C_CLASS);
IStructure enclosingClass = (IStructure) nsClasses.get(1); IStructure enclosingClass = (IStructure) nsClasses.get(1);
checkLineNumbers(enclosingClass, 115, 120); checkLineNumbers(enclosingClass, 115, 120);
List methodTemplates = enclosingClass.getChildrenOfType(ICElement.C_TEMPLATE_METHOD); List methodTemplates = enclosingClass.getChildrenOfType(ICElement.C_TEMPLATE_METHOD_DECLARATION);
MethodTemplate mt = (MethodTemplate)methodTemplates.get(0); IMethodTemplateDeclaration mt = (IMethodTemplateDeclaration)methodTemplates.get(0);
assertEquals(mt.getElementName(), new String("aTemplatedMethod")); //$NON-NLS-1$ assertEquals(mt.getElementName(), new String("aTemplatedMethod")); //$NON-NLS-1$
checkElementOffset(mt); checkElementOffset(mt);
assertEquals(mt.getTemplateSignature(), new String("aTemplatedMethod<A, B>(B) : A")); //$NON-NLS-1$ assertEquals(mt.getTemplateSignature(), new String("aTemplatedMethod<A, B>(B) : A")); //$NON-NLS-1$
@ -466,7 +466,7 @@ public class StructuralCModelElementsTests extends TestCase {
// template class // template class
List classTemplates = namespace.getChildrenOfType(ICElement.C_TEMPLATE_CLASS); List classTemplates = namespace.getChildrenOfType(ICElement.C_TEMPLATE_CLASS);
StructureTemplate ct = (StructureTemplate)classTemplates.get(0); IStructureTemplate ct = (IStructureTemplate)classTemplates.get(0);
assertEquals(ct.getElementName(), new String("myarray")); //$NON-NLS-1$ assertEquals(ct.getElementName(), new String("myarray")); //$NON-NLS-1$
checkElementOffset(ct); checkElementOffset(ct);
assertEquals(ct.getTemplateSignature(), new String("myarray<T, Tibor>")); //$NON-NLS-1$ assertEquals(ct.getTemplateSignature(), new String("myarray<T, Tibor>")); //$NON-NLS-1$
@ -474,7 +474,7 @@ public class StructuralCModelElementsTests extends TestCase {
// template struct // template struct
List structTemplates = namespace.getChildrenOfType(ICElement.C_TEMPLATE_STRUCT); List structTemplates = namespace.getChildrenOfType(ICElement.C_TEMPLATE_STRUCT);
StructureTemplate st = (StructureTemplate)structTemplates.get(0); IStructureTemplate st = (IStructureTemplate)structTemplates.get(0);
assertEquals(st.getElementName(), new String("mystruct")); //$NON-NLS-1$ assertEquals(st.getElementName(), new String("mystruct")); //$NON-NLS-1$
checkElementOffset(st); checkElementOffset(st);
assertEquals(st.getTemplateSignature(), new String("mystruct<T, Tibor>")); //$NON-NLS-1$ assertEquals(st.getTemplateSignature(), new String("mystruct<T, Tibor>")); //$NON-NLS-1$

View file

@ -57,9 +57,10 @@ public class StructuralTemplateTests extends ITemplateTests {
}; };
assertEquals(myExpectedValues.length, arrayElements.size()); assertEquals(myExpectedValues.length, arrayElements.size());
for(int i=0; i<myExpectedValues.length; i++) { for(int i=0; i<myExpectedValues.length; i++) {
ITemplate myITemplate = (ITemplate) arrayElements.get(i); ICElement celement = (ICElement) arrayElements.get(i);
ITemplate myITemplate = (ITemplate)celement;
assertNotNull( "Failed on "+i, myITemplate); assertNotNull( "Failed on "+i, myITemplate);
assertEquals("Failed on "+i, myExpectedValues[i], myITemplate.getElementName()); assertEquals("Failed on "+i, myExpectedValues[i], celement.getElementName());
} }
} }
{ {
@ -69,9 +70,10 @@ public class StructuralTemplateTests extends ITemplateTests {
}; };
assertEquals(myExpectedValues.length, arrayElements.size()); assertEquals(myExpectedValues.length, arrayElements.size());
for(int i=0; i<myExpectedValues.length; i++) { for(int i=0; i<myExpectedValues.length; i++) {
ITemplate myITemplate = (ITemplate) arrayElements.get(i); ICElement celement = (ICElement) arrayElements.get(i);
ITemplate myITemplate = (ITemplate)celement;
assertNotNull( "Failed on "+i, myITemplate); assertNotNull( "Failed on "+i, myITemplate);
assertEquals("Failed on "+i, myExpectedValues[i], myITemplate.getElementName()); assertEquals("Failed on "+i, myExpectedValues[i], celement.getElementName());
} }
} }
{ {
@ -81,9 +83,10 @@ public class StructuralTemplateTests extends ITemplateTests {
}; };
assertEquals(myExpectedValues.length, arrayElements.size()); assertEquals(myExpectedValues.length, arrayElements.size());
for(int i=0; i<myExpectedValues.length; i++) { for(int i=0; i<myExpectedValues.length; i++) {
ITemplate myITemplate = (ITemplate) arrayElements.get(i); ICElement celement = (ICElement) arrayElements.get(i);
ITemplate myITemplate = (ITemplate)celement;
assertNotNull( "Failed on "+i, myITemplate); assertNotNull( "Failed on "+i, myITemplate);
assertEquals("Failed on "+i, myExpectedValues[i], myITemplate.getElementName()); assertEquals("Failed on "+i, myExpectedValues[i], celement.getElementName());
} }
} }
{ {
@ -93,18 +96,20 @@ public class StructuralTemplateTests extends ITemplateTests {
List arrayElements = getTemplateMethods(tu); List arrayElements = getTemplateMethods(tu);
arrayElements.addAll(tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION)); arrayElements.addAll(tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION));
arrayElements.addAll(tu.getChildrenOfType(ICElement.C_TEMPLATE_METHOD)); arrayElements.addAll(tu.getChildrenOfType(ICElement.C_TEMPLATE_METHOD));
arrayElements.addAll(tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION_DECLARATION));
String[] myExpectedValues = { String[] myExpectedValues = {
"fum", "fum",
"scrum", "scrum",
"IsGreaterThan",
"first", "first",
"fum" "fum",
"IsGreaterThan",
}; };
assertEquals(myExpectedValues.length, arrayElements.size()); assertEquals(myExpectedValues.length, arrayElements.size());
for(int i=0; i<myExpectedValues.length; i++) { for(int i=0; i<myExpectedValues.length; i++) {
ITemplate myITemplate = (ITemplate) arrayElements.get(i); ICElement celement = (ICElement) arrayElements.get(i);
ITemplate myITemplate = (ITemplate)celement;
assertNotNull( "Failed on "+i, myITemplate); assertNotNull( "Failed on "+i, myITemplate);
assertEquals("Failed on "+i, myExpectedValues[i], myITemplate.getElementName()); assertEquals("Failed on "+i, myExpectedValues[i], celement.getElementName());
} }
} }
} }
@ -120,6 +125,7 @@ public class StructuralTemplateTests extends ITemplateTests {
arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_UNION ) ); arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_UNION ) );
arrayElements.addAll( getTemplateMethods(tu) ); arrayElements.addAll( getTemplateMethods(tu) );
arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION ) ); arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION ) );
arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION_DECLARATION ) );
arrayElements.addAll(tu.getChildrenOfType(ICElement.C_TEMPLATE_METHOD)); arrayElements.addAll(tu.getChildrenOfType(ICElement.C_TEMPLATE_METHOD));
// TEMPLATE_VARIABLE moved to failed tests // TEMPLATE_VARIABLE moved to failed tests
//arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_VARIABLE ) ); //arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_VARIABLE ) );
@ -149,6 +155,7 @@ public class StructuralTemplateTests extends ITemplateTests {
arrayElements.addAll( getTemplateMethods(tu) ); arrayElements.addAll( getTemplateMethods(tu) );
arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION ) ); arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION ) );
arrayElements.addAll(tu.getChildrenOfType(ICElement.C_TEMPLATE_METHOD)); arrayElements.addAll(tu.getChildrenOfType(ICElement.C_TEMPLATE_METHOD));
arrayElements.addAll(tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION_DECLARATION));
// TEMPLATE_VARIABLE moved to failed tests // TEMPLATE_VARIABLE moved to failed tests
//arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_VARIABLE ) ); //arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_VARIABLE ) );
@ -163,12 +170,12 @@ public class StructuralTemplateTests extends ITemplateTests {
{"Bar"}, {"Bar"},
//"TemplateParameter::scrum" //"TemplateParameter::scrum"
{"int"}, {"int"},
//"IsGreaterThan"
{"X"},
//"nonVector::first" //"nonVector::first"
{"T"}, {"T"},
//"Foo::fum" //"Foo::fum"
{"Bar"}, {"Bar"},
//"IsGreaterThan"
{"X"},
/* /*
//"default_alloc_template::S_start_free" //"default_alloc_template::S_start_free"
{"bool", "int"},*/ {"bool", "int"},*/
@ -198,6 +205,7 @@ public class StructuralTemplateTests extends ITemplateTests {
arrayElements.addAll( getTemplateMethods(tu) ); arrayElements.addAll( getTemplateMethods(tu) );
arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION ) ); arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION ) );
arrayElements.addAll(tu.getChildrenOfType(ICElement.C_TEMPLATE_METHOD)); arrayElements.addAll(tu.getChildrenOfType(ICElement.C_TEMPLATE_METHOD));
arrayElements.addAll(tu.getChildrenOfType(ICElement.C_TEMPLATE_FUNCTION_DECLARATION));
// TEMPLATE_VARIABLE moved to failed tests // TEMPLATE_VARIABLE moved to failed tests
//arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_VARIABLE ) ); //arrayElements.addAll( tu.getChildrenOfType(ICElement.C_TEMPLATE_VARIABLE ) );
@ -208,9 +216,9 @@ public class StructuralTemplateTests extends ITemplateTests {
"fum<Bar>(int) : void", "fum<Bar>(int) : void",
"scrum<int>(void) : void", // TODO: deduce the rules of () versus (void), compare below. "scrum<int>(void) : void", // TODO: deduce the rules of () versus (void), compare below.
// TODO: shouldn't signature indicate const function as well? // TODO: shouldn't signature indicate const function as well?
"IsGreaterThan<X>(X, X) : bool",
"first<T>() : const T&", // TODO: where should <T> be? "first<T>() : const T&", // TODO: where should <T> be?
"fum<Bar>(int) : void", "fum<Bar>(int) : void",
"IsGreaterThan<X>(X, X) : bool",
/*"default_alloc_template<threads,inst>::S_start_free<bool, int> : char*",*/ /*"default_alloc_template<threads,inst>::S_start_free<bool, int> : char*",*/
}; };
assertEquals(myExpectedValues.length, arrayElements.size()); assertEquals(myExpectedValues.length, arrayElements.size());