| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- //
- // MonoTests.System.Diagnostics.StackFrameTest.cs
- //
- // Author:
- // Alexander Klyubin ([email protected])
- //
- // (C) 2001
- //
- using System;
- using System.Diagnostics;
- using System.Reflection;
- using NUnit.Framework;
- namespace MonoTests.System.Diagnostics {
- /// <summary>
- /// Tests the case where StackFrame is created for specified file name and
- /// location inside it.
- /// </summary>
- [TestFixture]
- public class StackFrameTest1 : TestCase {
- private StackFrame frame1;
- private StackFrame frame2;
-
- protected override void SetUp() {
- frame1 = new StackFrame("dir/someFile", 13, 45);
- frame2 = new StackFrame("SomeFile2.cs", 24);
- }
-
- protected override void TearDown() {
- frame1 = null;
- frame2 = null;
- }
-
- /// <summary>
- /// Tests whether getting file name works.
- /// </summary>
- public void TestGetFileName() {
- AssertEquals("File name (1)",
- "dir/someFile",
- frame1.GetFileName());
-
- AssertEquals("File name (2)",
- "SomeFile2.cs",
- frame2.GetFileName());
- }
-
- /// <summary>
- /// Tests whether getting file line number works.
- /// </summary>
- public void TestGetFileLineNumber() {
- AssertEquals("Line number (1)",
- 13,
- frame1.GetFileLineNumber());
-
- AssertEquals("Line number (2)",
- 24,
- frame2.GetFileLineNumber());
- }
-
- /// <summary>
- /// Tests whether getting file column number works.
- /// </summary>
- public void TestGetFileColumnNumber() {
- AssertEquals("Column number (1)",
- 45,
- frame1.GetFileColumnNumber());
-
- AssertEquals("Column number (2)",
- 0,
- frame2.GetFileColumnNumber());
- }
-
-
- /// <summary>
- /// Tests whether getting method associated with frame works.
- /// </summary>
- public void TestGetMethod() {
- Assert("Method not null (1)", (frame1.GetMethod() != null));
- AssertEquals("Class declaring the method (1)",
- this.GetType(),
- frame1.GetMethod().DeclaringType);
- AssertEquals("Method name (1)",
- "SetUp",
- frame1.GetMethod().Name);
-
- Assert("Method not null (2)", (frame2.GetMethod() != null));
-
- AssertEquals("Class declaring the method (2)",
- this.GetType(),
- frame2.GetMethod().DeclaringType);
- AssertEquals("Method name (2)",
- "SetUp",
- frame2.GetMethod().Name);
- }
- }
-
- /// <summary>
- /// Tests the case where StackFrame is created for current method.
- /// </summary>
- /// <remarks>
- /// FIXME: Must be compiled with /debug switch. Otherwise some file
- /// information will be incorrect for the following test cases.
- /// What's the best way to do both types of tests with and without
- /// debug information?
- /// </remarks>
- [TestFixture]
- public class StackFrameTest2 : TestCase {
- private StackFrame frame1;
- private StackFrame frame2;
- private StackFrame frame3;
-
- protected override void SetUp() {
- frame1 = new StackFrame();
- frame2 = new StackFrame(true);
- frame3 = new StackFrame(0);
- }
-
- protected override void TearDown() {
- frame1 = null;
- frame2 = null;
- frame3 = null;
- }
-
-
-
- /// <summary>
- /// Tests whether getting file name works.
- /// </summary>
- public void TestGetFileName() {
- AssertNull("File name (1)",
- frame1.GetFileName());
-
- Assert("File name (2) " + frame2.GetFileName()
- + " ends with StackFrameTest.cs",
- frame2.GetFileName().EndsWith("StackFrameTest.cs"));
- }
-
- /// <summary>
- /// Tests whether getting file line number works.
- /// </summary>
- public void TestGetFileLineNumber() {
- AssertEquals("Line number (1)",
- 0,
- frame1.GetFileLineNumber());
-
- AssertEquals("Line number (2)",
- 116,
- frame2.GetFileLineNumber());
-
- AssertEquals("Line number (3)",
- 0,
- frame3.GetFileLineNumber());
- }
-
- /// <summary>
- /// Tests whether getting file column number works.
- /// </summary>
- public void TestGetFileColumnNumber() {
- AssertEquals("Column number (1)",
- 0,
- frame1.GetFileColumnNumber());
-
- AssertEquals("Column number (2)",
- 25,
- frame2.GetFileColumnNumber());
-
- AssertEquals("Column number (3)",
- 0,
- frame3.GetFileColumnNumber());
- }
-
-
- /// <summary>
- /// Tests whether getting method associated with frame works.
- /// </summary>
- public void TestGetMethod() {
- Assert("Method not null (1)",
- (frame1.GetMethod() != null));
- AssertEquals("Class declaring the method (1)",
- this.GetType(),
- frame1.GetMethod().DeclaringType);
- AssertEquals("Method name (1)",
- "SetUp",
- frame1.GetMethod().Name);
-
- Assert("Method not null (2)",
- (frame2.GetMethod() != null));
-
- AssertEquals("Class declaring the method (2)",
- this.GetType(),
- frame2.GetMethod().DeclaringType);
- AssertEquals("Method name (2)",
- "SetUp",
- frame2.GetMethod().Name);
-
- Assert("Method not null (3)",
- (frame3.GetMethod() != null));
- AssertEquals("Class declaring the method (3)",
- this.GetType(),
- frame3.GetMethod().DeclaringType);
- AssertEquals("Method name (3)",
- "SetUp",
- frame3.GetMethod().Name);
- }
- }
-
-
- /// <summary>
- /// Tests the case where StackFrame is created for current method but
- /// skipping some frames.
- /// </summary>
- /// <remarks>
- /// FIXME: Must be compiled with /debug switch. Otherwise some file
- /// information will be incorrect for the following test cases.
- /// What's the best way to do both types of tests with and without
- /// debug information?
- /// </remarks>
- [TestFixture]
- public class StackFrameTest3 : TestCase {
- private StackFrame frame1;
- private StackFrame frame2;
-
- protected override void SetUp() {
- // In order to get better test cases with stack traces
- NestedSetUp();
- }
-
- private void NestedSetUp() {
- frame1 = new StackFrame(2);
- frame2 = new StackFrame(1, true);
- }
-
- protected override void TearDown() {
- frame1 = null;
- frame2 = null;
- }
-
-
-
- /// <summary>
- /// Tests whether getting file name works.
- /// </summary>
- public void TestGetFileName() {
- AssertNull("File name (1)",
- frame1.GetFileName());
-
- Assert("File name (2) " + frame2.GetFileName()
- + " ends with StackFrameTest.cs",
- frame2.GetFileName().EndsWith("StackFrameTest.cs"));
- }
-
- /// <summary>
- /// Tests whether getting file line number works.
- /// </summary>
- public void TestGetFileLineNumber() {
- AssertEquals("Line number (1)",
- 0,
- frame1.GetFileLineNumber());
-
- AssertEquals("Line number (2)",
- 230,
- frame2.GetFileLineNumber());
- }
-
- /// <summary>
- /// Tests whether getting file column number works.
- /// </summary>
- public void TestGetFileColumnNumber() {
- AssertEquals("Column number (1)",
- 0,
- frame1.GetFileColumnNumber());
-
- AssertEquals("Column number (2)",
- 17,
- frame2.GetFileColumnNumber());
- }
-
-
- /// <summary>
- /// Tests whether getting method associated with frame works.
- /// </summary>
- public void TestGetMethod() {
- Assert("Method not null (1)", (frame1.GetMethod() != null));
- AssertEquals("Method name (1)",
- "InternalInvoke",
- frame1.GetMethod().Name);
-
- Assert("Method not null (2)", (frame2.GetMethod() != null));
-
- AssertEquals("Class declaring the method (2)",
- this.GetType(),
- frame2.GetMethod().DeclaringType);
-
- AssertEquals("Method name (2)",
- "SetUp",
- frame2.GetMethod().Name);
- }
- }
- }
|