#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

70 lines
2.6 KiB

// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using System;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.UnitTesting;
using UnitTesting.Tests.Utils;
namespace UnitTesting.Tests.Project
{
/// <summary>
/// Base class for testing inner classes with TestFixture information.
/// </summary>
public class InnerClassTestFixtureBase
{
protected TestClass testClass;
protected MockClass innerClass;
protected TestProject testProject;
protected MockProjectContent projectContent;
protected MockClass outerClass;
protected void InitBase()
{
projectContent = new MockProjectContent();
projectContent.Language = LanguageProperties.None;
// Create the base test class.
outerClass = new MockClass("MyTests.A");
outerClass.ProjectContent = projectContent;
projectContent.Classes.Add(outerClass);
// Create the inner test class.
// Note the use of the DotNetName "MyTests.A+InnerTest".
innerClass = new MockClass("MyTests.A.InnerATest", "MyTests.A+InnerATest");
innerClass.Attributes.Add(new MockAttribute("TestFixture"));
innerClass.ProjectContent = projectContent;
innerClass.DeclaringType = outerClass; // Declaring type is outer class.
MockMethod method = new MockMethod("FooBar");
method.Attributes.Add(new MockAttribute("Test"));
method.DeclaringType = innerClass;
innerClass.Methods.Add(method);
outerClass.InnerClasses.Add(innerClass);
// Add another inner class that is not a test class.
MockClass nonTestInnerClass = new MockClass("MyTests.A.InnerBClass");
nonTestInnerClass.ProjectContent = projectContent;
nonTestInnerClass.DeclaringType = outerClass; // Declaring type is outer class.
outerClass.InnerClasses.Add(nonTestInnerClass);
// Add another inner class with the same name as the InnerATest.
// This makes sure duplicate classes are not added.
MockClass duplicateInnerClass = new MockClass("MyTests.A.InnerATest", "MyTests.A+InnerATest");
duplicateInnerClass.Attributes.Add(new MockAttribute("TestFixture"));
duplicateInnerClass.ProjectContent = projectContent;
duplicateInnerClass.DeclaringType = outerClass; // Declaring type is outer class.
outerClass.InnerClasses.Add(duplicateInnerClass);
testProject = new TestProject(null, projectContent);
if (testProject.TestClasses.Count > 0) {
testClass = testProject.TestClasses[0];
}
}
}
}