7 changed files with 150 additions and 14 deletions
@ -0,0 +1,47 @@ |
|||||||
|
using System; |
||||||
|
using System.Collections.Generic; |
||||||
|
using System.Linq; |
||||||
|
using System.Text; |
||||||
|
using ICSharpCode.SharpDevelop.Dom; |
||||||
|
|
||||||
|
namespace ICSharpCode.UnitTesting |
||||||
|
{ |
||||||
|
public class InnerClassEnumerator : IEnumerable<IClass> |
||||||
|
{ |
||||||
|
readonly IClass _c; |
||||||
|
|
||||||
|
public InnerClassEnumerator(IClass c) |
||||||
|
{ |
||||||
|
_c = c; |
||||||
|
} |
||||||
|
|
||||||
|
#region IEnumerable<IClass> Members
|
||||||
|
|
||||||
|
public IEnumerator<IClass> GetEnumerator() |
||||||
|
{ |
||||||
|
var result = new List<IClass>(); |
||||||
|
Visit(_c, result); |
||||||
|
return result.GetEnumerator(); |
||||||
|
} |
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region IEnumerable Members
|
||||||
|
|
||||||
|
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() |
||||||
|
{ |
||||||
|
return GetEnumerator(); |
||||||
|
} |
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private void Visit(IClass c, List<IClass> resultList) |
||||||
|
{ |
||||||
|
foreach (var innerClass in c.InnerClasses) |
||||||
|
{ |
||||||
|
resultList.Add(innerClass); |
||||||
|
Visit(innerClass, resultList); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,81 @@ |
|||||||
|
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||||
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||||
|
|
||||||
|
using System; |
||||||
|
using ICSharpCode.SharpDevelop.Dom; |
||||||
|
using ICSharpCode.SharpDevelop.Project; |
||||||
|
using ICSharpCode.UnitTesting; |
||||||
|
using NUnit.Framework; |
||||||
|
using UnitTesting.Tests.Utils; |
||||||
|
using System.Linq; |
||||||
|
|
||||||
|
namespace UnitTesting.Tests.Project |
||||||
|
{ |
||||||
|
/// <summary>
|
||||||
|
/// Tests that a class nested inside test fixture is recognized, e.g.
|
||||||
|
///
|
||||||
|
/// [TestFixture]
|
||||||
|
/// public class A
|
||||||
|
/// {
|
||||||
|
/// public class InnerATest
|
||||||
|
/// {
|
||||||
|
/// [Test]
|
||||||
|
/// public void FooBar()
|
||||||
|
/// {
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// In this case the FooBar test is identified via: "A+InnerATest.FooBar".
|
||||||
|
/// </summary>
|
||||||
|
[TestFixture] |
||||||
|
public class InnerClassInTestFixtureTests : InnerClassTestFixtureBase |
||||||
|
{ |
||||||
|
MockClass classNestedInInnerClass; |
||||||
|
|
||||||
|
[SetUp] |
||||||
|
public void Init() |
||||||
|
{ |
||||||
|
base.InitBase(); |
||||||
|
|
||||||
|
//Add TestFixture attribute to outer class
|
||||||
|
outerClass.Attributes.Add(new MockAttribute("TestFixture")); |
||||||
|
testProject = new TestProject(null, projectContent, testFrameworks); |
||||||
|
|
||||||
|
//Add inner class nested in test class
|
||||||
|
classNestedInInnerClass = new MockClass(projectContent, "MyTests.A.InnerATest.InnerTestLevel2", "MyTests.A+InnerATest+InnerTestLevel2", innerClass); |
||||||
|
innerClass.InnerClasses.Add(classNestedInInnerClass); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void OuterTestClassFound() |
||||||
|
{ |
||||||
|
AssertTestResultContainsClass(outerClass); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void InnerTestClassWithTestFixtureAttributeFound() |
||||||
|
{ |
||||||
|
AssertTestResultContainsClass(innerClass); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void InnerTestClassWithoutTestFixtureAttributeFound() |
||||||
|
{ |
||||||
|
AssertTestResultContainsClass(nonTestInnerClass); |
||||||
|
} |
||||||
|
|
||||||
|
[Test] |
||||||
|
public void InnerClassInInnerClassFound() |
||||||
|
{ |
||||||
|
AssertTestResultContainsClass(classNestedInInnerClass); |
||||||
|
} |
||||||
|
|
||||||
|
void AssertTestResultContainsClass(IClass clazz) |
||||||
|
{ |
||||||
|
var count = testProject.TestClasses.Count(c => c.Class == clazz); |
||||||
|
if (count != 1) |
||||||
|
throw new AssertionException(string.Format("Test result should contain class {0}.", clazz.FullyQualifiedName)); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue