39 changed files with 355 additions and 824 deletions
@ -1,47 +0,0 @@
@@ -1,47 +0,0 @@
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Linq; |
||||
using System.Text; |
||||
|
||||
|
||||
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); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -1,214 +0,0 @@
@@ -1,214 +0,0 @@
|
||||
// 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 System.Collections.Generic; |
||||
using System.Collections.ObjectModel; |
||||
using ICSharpCode.Core; |
||||
|
||||
namespace ICSharpCode.UnitTesting |
||||
{ |
||||
public class TestClassCollection : KeyedCollection<string, TestClass> |
||||
{ |
||||
TestResultType testResult = TestResultType.None; |
||||
|
||||
Dictionary<string, TestClass> passedTestClasses = new Dictionary<string, TestClass>(); |
||||
Dictionary<string, TestClass> failedTestClasses = new Dictionary<string, TestClass>(); |
||||
Dictionary<string, TestClass> ignoredTestClasses = new Dictionary<string, TestClass>(); |
||||
|
||||
/// <summary>
|
||||
/// Raised when the test result for this collection of
|
||||
/// classes has changed.
|
||||
/// </summary>
|
||||
public event EventHandler ResultChanged; |
||||
|
||||
/// <summary>
|
||||
/// Raised when a class is added to this collection.
|
||||
/// </summary>
|
||||
public event TestClassEventHandler TestClassAdded; |
||||
|
||||
/// <summary>
|
||||
/// Raised when a class is removed from this collection.
|
||||
/// </summary>
|
||||
public event TestClassEventHandler TestClassRemoved; |
||||
|
||||
/// <summary>
|
||||
/// Gets the overall test results for the collection of
|
||||
/// test classes.
|
||||
/// </summary>
|
||||
public TestResultType Result { |
||||
get { |
||||
return testResult; |
||||
} |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Sets all the test class test results back to none.
|
||||
/// </summary>
|
||||
public void ResetTestResults() |
||||
{ |
||||
passedTestClasses.Clear(); |
||||
failedTestClasses.Clear(); |
||||
ignoredTestClasses.Clear(); |
||||
|
||||
foreach (TestClass c in this) { |
||||
c.ResetTestResults(); |
||||
} |
||||
|
||||
SetTestResult(TestResultType.None); |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Updates the test method with the specified test result.
|
||||
/// </summary>
|
||||
public void UpdateTestResult(TestResult testResult) |
||||
{ |
||||
TestClass testClass = GetTestClassFromTestMemberName(testResult.Name); |
||||
if (testClass != null) { |
||||
testClass.UpdateTestResult(testResult); |
||||
} |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Gets the matching test member from this set of classes.
|
||||
/// </summary>
|
||||
/// <param name="fullyQualifiedName">The fully qualified
|
||||
/// method name (e.g. Namespace.ClassName.MethodName).</param>
|
||||
/// <returns>Null if the method cannot be found.</returns>
|
||||
public TestMember GetTestMember(string fullyQualifiedName) |
||||
{ |
||||
string className = TestMember.GetQualifiedClassName(fullyQualifiedName); |
||||
if (className != null) { |
||||
if (Contains(className)) { |
||||
TestClass testClass = this[className]; |
||||
string memberName = TestMember.GetMemberName(fullyQualifiedName); |
||||
if (memberName != null) { |
||||
return testClass.GetTestMember(memberName); |
||||
} |
||||
} else { |
||||
LoggingService.Debug("TestClass not found: " + className); |
||||
} |
||||
} else { |
||||
LoggingService.Debug("Invalid test member name: " + fullyQualifiedName); |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
protected override string GetKeyForItem(TestClass item) |
||||
{ |
||||
return item.QualifiedName; |
||||
} |
||||
|
||||
protected override void InsertItem(int index, TestClass item) |
||||
{ |
||||
item.ResultChanged += TestClassResultChanged; |
||||
base.InsertItem(index, item); |
||||
TestClassResultChanged(item, new EventArgs()); |
||||
OnTestClassAdded(item); |
||||
} |
||||
|
||||
protected override void RemoveItem(int index) |
||||
{ |
||||
TestClass c = this[index]; |
||||
c.ResultChanged -= TestClassResultChanged; |
||||
base.RemoveItem(index); |
||||
OnTestResultNone(c.Name); |
||||
OnTestClassRemoved(c); |
||||
} |
||||
|
||||
protected void OnTestClassAdded(TestClass testClass) |
||||
{ |
||||
if (TestClassAdded != null) { |
||||
TestClassAdded(this, new TestClassEventArgs(testClass)); |
||||
} |
||||
} |
||||
|
||||
protected void OnTestClassRemoved(TestClass testClass) |
||||
{ |
||||
if (TestClassRemoved != null) { |
||||
TestClassRemoved(this, new TestClassEventArgs(testClass)); |
||||
} |
||||
} |
||||
|
||||
void TestClassResultChanged(object source, EventArgs e) |
||||
{ |
||||
TestClass c = (TestClass)source; |
||||
switch (c.Result) { |
||||
case TestResultType.None: |
||||
OnTestResultNone(c.QualifiedName); |
||||
break; |
||||
case TestResultType.Failure: |
||||
SetTestResult(TestResultType.Failure); |
||||
failedTestClasses.Add(c.QualifiedName, c); |
||||
break; |
||||
case TestResultType.Success: |
||||
passedTestClasses.Add(c.QualifiedName, c); |
||||
if (passedTestClasses.Count == Count) { |
||||
SetTestResult(TestResultType.Success); |
||||
} else if (passedTestClasses.Count + ignoredTestClasses.Count == Count) { |
||||
SetTestResult(TestResultType.Ignored); |
||||
} |
||||
break; |
||||
case TestResultType.Ignored: |
||||
ignoredTestClasses.Add(c.QualifiedName, c); |
||||
if (ignoredTestClasses.Count == Count || |
||||
ignoredTestClasses.Count + passedTestClasses.Count == Count) { |
||||
SetTestResult(TestResultType.Ignored); |
||||
} |
||||
break; |
||||
} |
||||
} |
||||
|
||||
void SetTestResult(TestResultType value) |
||||
{ |
||||
TestResultType previousTestResult = testResult; |
||||
testResult = value; |
||||
if (testResult != previousTestResult) { |
||||
OnResultChanged(); |
||||
} |
||||
} |
||||
|
||||
void OnResultChanged() |
||||
{ |
||||
if (ResultChanged != null) { |
||||
ResultChanged(this, new EventArgs()); |
||||
} |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Removes the specified test class from the list of
|
||||
/// failed, passed and ignored tests and updates the
|
||||
/// test result state of the test class collection.
|
||||
/// </summary>
|
||||
void OnTestResultNone(string qualifiedName) |
||||
{ |
||||
passedTestClasses.Remove(qualifiedName); |
||||
failedTestClasses.Remove(qualifiedName); |
||||
ignoredTestClasses.Remove(qualifiedName); |
||||
if (ignoredTestClasses.Count + failedTestClasses.Count == 0) { |
||||
SetTestResult(TestResultType.None); |
||||
} |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Gets the test class from the specified test result.
|
||||
/// </summary>
|
||||
TestClass GetTestClassFromTestMemberName(string memberName) |
||||
{ |
||||
if (memberName != null) { |
||||
string className = TestMember.GetQualifiedClassName(memberName); |
||||
if (className != null) { |
||||
if (Contains(className)) { |
||||
return this[className]; |
||||
} else { |
||||
LoggingService.Debug("TestClass not found: " + className); |
||||
return GetTestClassFromTestMemberName(className); |
||||
} |
||||
} else { |
||||
LoggingService.Debug("Invalid TestMember.Name: " + memberName); |
||||
} |
||||
} |
||||
return null; |
||||
} |
||||
} |
||||
} |
@ -1,30 +0,0 @@
@@ -1,30 +0,0 @@
|
||||
// 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; |
||||
|
||||
namespace ICSharpCode.UnitTesting |
||||
{ |
||||
/// <summary>
|
||||
/// Represents the class that will handle the TestCollection's
|
||||
/// TestClassAdded or TestClassRemoved events.
|
||||
/// </summary>
|
||||
public delegate void TestClassEventHandler(object source, TestClassEventArgs e); |
||||
|
||||
/// <summary>
|
||||
/// Provides data for the TestCollection's TestClassAdded and TestClassRemoved events.
|
||||
/// </summary>
|
||||
public class TestClassEventArgs |
||||
{ |
||||
TestClass testClass; |
||||
|
||||
public TestClassEventArgs(TestClass testClass) |
||||
{ |
||||
this.testClass = testClass; |
||||
} |
||||
|
||||
public TestClass TestClass { |
||||
get { return testClass; } |
||||
} |
||||
} |
||||
} |
@ -1,153 +0,0 @@
@@ -1,153 +0,0 @@
|
||||
// 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 System.Collections.Generic; |
||||
using System.Collections.ObjectModel; |
||||
|
||||
namespace ICSharpCode.UnitTesting |
||||
{ |
||||
public class TestMemberCollection : KeyedCollection<string, TestMember> |
||||
{ |
||||
TestResultType testResult = TestResultType.None; |
||||
Dictionary<string, TestMember> passedTestMembers = new Dictionary<string, TestMember>(); |
||||
Dictionary<string, TestMember> failedTestMembers = new Dictionary<string, TestMember>(); |
||||
Dictionary<string, TestMember> ignoredTestMembers = new Dictionary<string, TestMember>(); |
||||
|
||||
/// <summary>
|
||||
/// Raised when the test result for this collection of
|
||||
/// members has changed.
|
||||
/// </summary>
|
||||
public event EventHandler ResultChanged; |
||||
|
||||
/// <summary>
|
||||
/// Raised when a member is added to this collection.
|
||||
/// </summary>
|
||||
public event TestMemberEventHandler TestMemberAdded; |
||||
|
||||
/// <summary>
|
||||
/// Raised when a member is removed from this collection.
|
||||
/// </summary>
|
||||
public event TestMemberEventHandler TestMemberRemoved; |
||||
|
||||
/// <summary>
|
||||
/// Gets the overall test results for the collection of
|
||||
/// test members.
|
||||
/// </summary>
|
||||
public TestResultType Result { |
||||
get { return testResult; } |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Sets all the test members test results back to none.
|
||||
/// </summary>
|
||||
public void ResetTestResults() |
||||
{ |
||||
passedTestMembers.Clear(); |
||||
failedTestMembers.Clear(); |
||||
ignoredTestMembers.Clear(); |
||||
|
||||
foreach (TestMember member in this) { |
||||
member.Result = TestResultType.None; |
||||
} |
||||
|
||||
SetTestResult(TestResultType.None); |
||||
} |
||||
|
||||
protected override void InsertItem(int index, TestMember item) |
||||
{ |
||||
item.ResultChanged += TestMemberResultChanged; |
||||
base.InsertItem(index, item); |
||||
TestMemberResultChanged(item, new EventArgs()); |
||||
OnTestMemberAdded(item); |
||||
} |
||||
|
||||
protected override string GetKeyForItem(TestMember item) |
||||
{ |
||||
return item.Name; |
||||
} |
||||
|
||||
protected override void RemoveItem(int index) |
||||
{ |
||||
TestMember member = this[index]; |
||||
member.ResultChanged -= TestMemberResultChanged; |
||||
base.RemoveItem(index); |
||||
OnTestResultNone(member.Name); |
||||
OnTestMemberRemoved(member); |
||||
} |
||||
|
||||
protected void OnTestMemberAdded(TestMember testMember) |
||||
{ |
||||
if (TestMemberAdded != null) { |
||||
TestMemberAdded(this, new TestMemberEventArgs(testMember)); |
||||
} |
||||
} |
||||
|
||||
protected void OnTestMemberRemoved(TestMember testMember) |
||||
{ |
||||
if (TestMemberRemoved != null) { |
||||
TestMemberRemoved(this, new TestMemberEventArgs(testMember)); |
||||
} |
||||
} |
||||
|
||||
void TestMemberResultChanged(object source, EventArgs e) |
||||
{ |
||||
TestMember member = (TestMember)source; |
||||
switch (member.Result) { |
||||
case TestResultType.None: |
||||
OnTestResultNone(member.Name); |
||||
break; |
||||
case TestResultType.Failure: |
||||
SetTestResult(TestResultType.Failure); |
||||
failedTestMembers.Add(member.Name, member); |
||||
break; |
||||
case TestResultType.Success: |
||||
passedTestMembers.Add(member.Name, member); |
||||
if (passedTestMembers.Count == Count) { |
||||
SetTestResult(TestResultType.Success); |
||||
} else if (passedTestMembers.Count + ignoredTestMembers.Count == Count) { |
||||
SetTestResult(TestResultType.Ignored); |
||||
} |
||||
break; |
||||
case TestResultType.Ignored: |
||||
ignoredTestMembers.Add(member.Name, member); |
||||
if (ignoredTestMembers.Count == Count || |
||||
ignoredTestMembers.Count + passedTestMembers.Count == Count) { |
||||
SetTestResult(TestResultType.Ignored); |
||||
} |
||||
break; |
||||
} |
||||
} |
||||
|
||||
void SetTestResult(TestResultType value) |
||||
{ |
||||
TestResultType previousTestResult = testResult; |
||||
testResult = value; |
||||
if (testResult != previousTestResult) { |
||||
OnResultChanged(); |
||||
} |
||||
} |
||||
|
||||
void OnResultChanged() |
||||
{ |
||||
if (ResultChanged != null) { |
||||
ResultChanged(this, new EventArgs()); |
||||
} |
||||
} |
||||
|
||||
/// <summary>
|
||||
/// Removes the specified test member from the list of
|
||||
/// failed, passed and ignored tests and updates the
|
||||
/// test result state of the test members collection.
|
||||
/// </summary>
|
||||
void OnTestResultNone(string name) |
||||
{ |
||||
passedTestMembers.Remove(name); |
||||
failedTestMembers.Remove(name); |
||||
ignoredTestMembers.Remove(name); |
||||
if (ignoredTestMembers.Count + failedTestMembers.Count == 0) { |
||||
SetTestResult(TestResultType.None); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -1,30 +0,0 @@
@@ -1,30 +0,0 @@
|
||||
// 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; |
||||
|
||||
namespace ICSharpCode.UnitTesting |
||||
{ |
||||
/// <summary>
|
||||
/// Represents the member that will handle the TestCollection's
|
||||
/// TestMemberAdded or TestMemberRemoved events.
|
||||
/// </summary>
|
||||
public delegate void TestMemberEventHandler(object source, TestMemberEventArgs e); |
||||
|
||||
/// <summary>
|
||||
/// Provides data for the TestCollection's TestMemberAdded and TestMemberRemoved events.
|
||||
/// </summary>
|
||||
public class TestMemberEventArgs |
||||
{ |
||||
TestMember testMember; |
||||
|
||||
public TestMemberEventArgs(TestMember testMember) |
||||
{ |
||||
this.testMember = testMember; |
||||
} |
||||
|
||||
public TestMember TestMember { |
||||
get { return testMember; } |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue