using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using UnitTestSharp; using UnitTestSharp.Extensions; namespace TestsForUnitTestSharp.Extensions { public class StackTraceExtensionsTests : TestFixture { public void GetFirstFrameIndexNotInNamespace() { var stackTrace = new System.Diagnostics.StackTrace(); CheckEqual(1, stackTrace.GetFirstFrameIndexNotInNamespace("TestsForUnitTestSharp")); } public void GetFirstFrameIndexNotInNamespace_NoneToIgnore() { var stackTrace = new System.Diagnostics.StackTrace(); CheckEqual(0, stackTrace.GetFirstFrameIndexNotInNamespace("Foo")); } public class ShouldNotShow : UnitTestSharp.TestFixture { public void StackTrace() { var stackTrace = new System.Diagnostics.StackTrace(); string file; int? lineNumber; string pedigree; stackTrace.FindFirstFrameNotInNamespace("TestsForUnitTestSharp") .ExtractCallingMethodInfo(out file, out lineNumber, out pedigree); CheckNotEqualRegex("ShouldNotShow::StackTrace", pedigree); } } [ShouldShowInStackTrace] public class ShouldShow : UnitTestSharp.TestFixture { public void StackTrace() { var stackTrace = new System.Diagnostics.StackTrace(); string file; int? lineNumber; string pedigree; stackTrace.FindFirstFrameNotInNamespace("TestsForUnitTestSharp") .ExtractCallingMethodInfo(out file, out lineNumber, out pedigree); CheckEqualRegex("ShouldShow::StackTrace", pedigree); } } public void GetFirstFrameNotInNamespace() { var stackTrace = new System.Diagnostics.StackTrace(); string file; int? lineNumber; string pedigree; stackTrace.FindFirstFrameNotInNamespace("TestsForUnitTestSharp") .ExtractCallingMethodInfo(out file, out lineNumber, out pedigree); CheckNotEqualRegex("TestsForUnitTestSharp", pedigree); } public void GetFirstFrameNotInNamespace_BogusNamespaceFilter() { var stackTrace = new System.Diagnostics.StackTrace(); string file; int? lineNumber; string pedigree; stackTrace.FindFirstFrameNotInNamespace("Foo") .ExtractCallingMethodInfo(out file, out lineNumber, out pedigree); CheckEqualRegex("TestsForUnitTestSharp", pedigree); } public void FindBoundsOnNotThisNamespace() { var stackTrace = new System.Diagnostics.StackTrace(true); var stackFrames = stackTrace.FindBoundsOnNotThisNamespace("UnitTestSharp"); CheckEqual(1, stackFrames.Length); } public void FindBoundsOnNotThisNamespace_BogusNamespace() { var stackTrace = new System.Diagnostics.StackTrace(true); var stackFrames = stackTrace.FindBoundsOnNotThisNamespace("Foo"); Check(stackFrames.Length > 1); } [ShouldShowInStackTrace] public class FindBoundsOnNotThisNamespace_ShouldShow : UnitTestSharp.TestFixture { public void StackTrace() { var stackTrace = new System.Diagnostics.StackTrace(true); var stackFrames = stackTrace.FindBoundsOnNotThisNamespace("TestsForUnitTestSharp"); CheckEqual(stackTrace.GetFrame(0), stackFrames[0]); } } public class FindBoundsOnNotThisNamespace_ShouldNotShow : UnitTestSharp.TestFixture { public void StackTrace() { var stackTrace = new System.Diagnostics.StackTrace(true); var stackFrames = stackTrace.FindBoundsOnNotThisNamespace("TestsForUnitTestSharp"); CheckNotEqual(stackTrace.GetFrame(0), stackFrames[0]); } } } }