Browse Source

Added debugger test: Stepping

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@863 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
David Srbecký 20 years ago
parent
commit
7bf31daafb
  1. 3
      src/AddIns/Misc/Debugger/Debugger.Tests/Project/Debugger.Tests.csproj
  2. 63
      src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/DebuggerTests.cs
  3. 1
      src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestProgram.cs
  4. 34
      src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/Stepping.cs

3
src/AddIns/Misc/Debugger/Debugger.Tests/Project/Debugger.Tests.csproj

@ -46,6 +46,7 @@ @@ -46,6 +46,7 @@
<Compile Include="Src\TestPrograms\Symbols.cs" />
<Compile Include="Src\TestPrograms\Break.cs" />
<Compile Include="Src\TestPrograms\FileRelease.cs" />
<Compile Include="Src\TestPrograms\Stepping.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="Src" />
@ -66,4 +67,4 @@ @@ -66,4 +67,4 @@
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>
</Project>

63
src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/DebuggerTests.cs

@ -57,6 +57,15 @@ namespace Debugger.Tests @@ -57,6 +57,15 @@ namespace Debugger.Tests
debugger.Start(exeFilename, Path.GetDirectoryName(exeFilename), programName);
}
public void WaitForPause(PausedReason expectedReason, string expectedLastLogMessage)
{
if (expectedLastLogMessage != null) expectedLastLogMessage += "\r\n";
debugger.WaitForPause();
Assert.AreEqual(true, debugger.IsPaused);
Assert.AreEqual(expectedReason, debugger.PausedReason);
Assert.AreEqual(expectedLastLogMessage, lastLogMessage);
}
[Test]
public void SimpleProgram()
{
@ -80,8 +89,7 @@ namespace Debugger.Tests @@ -80,8 +89,7 @@ namespace Debugger.Tests
{
StartProgram("Break");
debugger.WaitForPause();
Assert.AreEqual(PausedReason.Break, debugger.PausedReason);
WaitForPause(PausedReason.Break, null);
debugger.Continue();
debugger.WaitForPrecessExit();
@ -90,13 +98,12 @@ namespace Debugger.Tests @@ -90,13 +98,12 @@ namespace Debugger.Tests
[Test]
public void Symbols()
{
Assert.AreEqual("debugger.tests.exe", Path.GetFileName(assemblyFilename).ToLower());
Assert.IsTrue(File.Exists(symbolsFilename), "Symbols file not found (.pdb)");
StartProgram("Symbols");
debugger.WaitForPause();
Assert.AreEqual(PausedReason.Break, debugger.PausedReason);
Assert.AreEqual("debugger.tests.exe", Path.GetFileName(assemblyFilename).ToLower());
WaitForPause(PausedReason.Break, null);
Assert.AreEqual(true, debugger.GetModule(Path.GetFileName(assemblyFilename)).SymbolsLoaded, "Module symbols not loaded");
debugger.Continue();
@ -110,22 +117,16 @@ namespace Debugger.Tests @@ -110,22 +117,16 @@ namespace Debugger.Tests
StartProgram("Breakpoint");
debugger.WaitForPause();
Assert.AreEqual(PausedReason.Break, debugger.PausedReason);
Assert.AreEqual("", log);
WaitForPause(PausedReason.Break, null);
Assert.AreEqual(true, b.Enabled);
Assert.AreEqual(true, b.HadBeenSet, "Breakpoint is not set");
Assert.AreEqual(18, b.SourcecodeSegment.StartLine);
debugger.Continue();
debugger.WaitForPause();
Assert.AreEqual(PausedReason.Breakpoint, debugger.PausedReason, "Breakpoint was not hit");
Assert.AreEqual("Mark 1\r\n", log);
WaitForPause(PausedReason.Breakpoint, "Mark 1");
debugger.Continue();
debugger.WaitForPause();
Assert.AreEqual(PausedReason.Break, debugger.PausedReason);
Assert.AreEqual("Mark 1\r\nMark 2\r\n", log);
WaitForPause(PausedReason.Break, "Mark 2");
debugger.Continue();
debugger.WaitForPrecessExit();
@ -167,5 +168,39 @@ namespace Debugger.Tests @@ -167,5 +168,39 @@ namespace Debugger.Tests
Assert.Fail("Symbols file not released\n" + e.ToString());
}
}
[Test]
public void Stepping()
{
StartProgram("Stepping");
WaitForPause(PausedReason.Break, null);
debugger.StepOver(); // Debugger.Break
WaitForPause(PausedReason.StepComplete, null);
debugger.StepOver(); // Debug.WriteLine 1
WaitForPause(PausedReason.StepComplete, "1");
debugger.StepInto(); // Method Sub
WaitForPause(PausedReason.StepComplete, "1");
debugger.StepInto(); // '{'
WaitForPause(PausedReason.StepComplete, "1");
debugger.StepInto(); // Debug.WriteLine 2
WaitForPause(PausedReason.StepComplete, "2");
debugger.StepOut(); // Method Sub
WaitForPause(PausedReason.StepComplete, "4");
debugger.StepOver(); // Method Sub
WaitForPause(PausedReason.StepComplete, "4");
debugger.StepOver(); // Method Sub2
WaitForPause(PausedReason.StepComplete, "5");
debugger.Continue();
debugger.WaitForPrecessExit();
}
}
}

1
src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestProgram.cs

@ -24,6 +24,7 @@ namespace Debugger.Tests @@ -24,6 +24,7 @@ namespace Debugger.Tests
case "FileRelease": Progs.FileRelease.Main(); break;
case "HelloWorld": Progs.HelloWorld.Main(); break;
case "SimpleProgram": Progs.SimpleProgram.Main(); break;
case "Stepping": Progs.Stepping.Main(); break;
case "Symbols": Progs.Symbols.Main(); break;
}
}

34
src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/Stepping.cs

@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
// <file>
// <copyright see="prj:///doc/copyright.txt">2002-2005 AlphaSierraPapa</copyright>
// <license see="prj:///doc/license.txt">GNU General Public License</license>
// <owner name="David Srbecký" email="dsrbecky@gmail.com"/>
// <version>$Revision$</version>
// </file>
using System;
namespace Debugger.Tests.TestPrograms
{
public class Stepping
{
public static void Main()
{
System.Diagnostics.Debugger.Break();
System.Diagnostics.Debug.WriteLine("1"); // Step over external code
Sub(); // Step in internal code
Sub2(); // Step over internal code
}
public static void Sub()
{ // Step in noop
System.Diagnostics.Debug.WriteLine("2"); // Step in external code
System.Diagnostics.Debug.WriteLine("3"); // Step out
System.Diagnostics.Debug.WriteLine("4");
}
public static void Sub2()
{
System.Diagnostics.Debug.WriteLine("5");
}
}
}
Loading…
Cancel
Save