[build] Roslyn switch
[mono.git] / mcs / class / Mono.Debugger.Soft / Test / dtest.cs
index af994790ea00b44e9eedcf6e4d6af2467ee3e232..05896473e395ffdeead91a2a52ee74b64e90f198 100644 (file)
@@ -608,6 +608,7 @@ public class DebuggerTests
        }
 
        [Test]
+       [Category ("NotWorking")] // https://bugzilla.xamarin.com/show_bug.cgi?id=44974
        public void SingleStepping () {
                Event e = run_until ("single_stepping");
 
@@ -906,6 +907,28 @@ public class DebuggerTests
                req.Disable ();
        }
 
+       [Test]
+       public void SingleSteppingNoFrames () {
+               //
+               // Test what happens when starting a single step operation on a thread
+               // with no managed frames
+               //
+               // Run a delegate on a tp thread
+               var e = run_until ("ss_no_frames_2");
+
+               var this_type = e.Thread.GetFrames ()[0].Method.DeclaringType;
+               this_type.SetValue (this_type.GetField ("static_i"), vm.CreateValue (56));
+
+               var thread = e.Thread;
+               var e2 = run_until ("ss_no_frames_3");
+               // The tp thread should be idle now
+               step_req = vm.CreateStepRequest (thread);
+               step_req.Depth = StepDepth.Over;
+               AssertThrows<Exception> (delegate {
+                       step_req.Enable ();
+                       });
+       }
+
        [Test]
        public void MethodEntryExit () {
                run_until ("single_stepping");
@@ -3323,6 +3346,9 @@ public class DebuggerTests
                        vm.Resume ();
                        e = GetNextEvent ();
                        if (e is AssemblyUnloadEvent) {
+                               AssertThrows<Exception> (delegate () {
+                                               var assembly_obj = (e as AssemblyUnloadEvent).Assembly.GetAssemblyObject ();
+                                       });
                                continue;
                        } else {
                                break;
@@ -3983,7 +4009,8 @@ public class DebuggerTests
                req.Disable ();
                var frames = e.Thread.GetFrames ();
                var locs = frames [0].Method.Locations;
-               var next_loc = locs.First (l => (l.LineNumber == frames [0].Location.LineNumber + 2));
+
+               var next_loc = locs.First (l => (l.LineNumber == frames [0].Location.LineNumber + 3));
 
                e.Thread.SetIP (next_loc);
 
@@ -4016,7 +4043,7 @@ public class DebuggerTests
                req.Disable ();
                var frames = e.Thread.GetFrames ();
                var locs = frames [0].Method.Locations;
-               var prev_loc = locs.First (l => (l.LineNumber == frames [0].Location.LineNumber - 3));
+               var prev_loc = locs.First (l => (l.LineNumber == frames [0].Location.LineNumber - 1));
                AssertValue (2, frames [0].GetValue (frames [0].Method.GetLocal ("i")));
 
                // Set back the ip to the first i ++; line