diff options
author | Lluis Sanchez Gual <lluis@xamarin.com> | 2015-07-22 11:51:23 +0300 |
---|---|---|
committer | Lluis Sanchez Gual <lluis@xamarin.com> | 2015-07-22 11:51:23 +0300 |
commit | 7e3b6535ab1d8e3350a0d3e30c7b434773fd4b50 (patch) | |
tree | 3c1b11f271aff65a970aaddde885867b558070b5 /main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests | |
parent | 9c6aa547c43a7fcb59c62bccbf7f3d69e568af33 (diff) | |
parent | 7bcb8ecc7194fef55cd4f7a8d045130ec782e139 (diff) |
Merge remote-tracking branch 'origin/master' into roslyn
Diffstat (limited to 'main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests')
-rw-r--r-- | main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests/DebugTests.cs | 10 | ||||
-rw-r--r-- | main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests/EvaluationTests.cs | 129 |
2 files changed, 135 insertions, 4 deletions
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests/DebugTests.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests/DebugTests.cs index 033e45bb70..6b2e752541 100644 --- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests/DebugTests.cs +++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests/DebugTests.cs @@ -224,6 +224,9 @@ namespace MonoDevelop.Debugger.Tests default: throw new Exception ("Timeout while waiting for initial breakpoint"); } + if (Session is SoftDebuggerSession) { + Console.WriteLine ("SDB protocol version:" + ((SoftDebuggerSession)Session).ProtocolVersion); + } } void GetLineAndColumn (string breakpointMarker, int offset, string statement, out int line, out int col) @@ -401,6 +404,13 @@ namespace MonoDevelop.Debugger.Tests static class EvalHelper { + public static bool AtLeast (this Version ver, int major, int minor) { + if ((ver.Major > major) || ((ver.Major == major && ver.Minor >= minor))) + return true; + else + return false; + } + public static ObjectValue Sync (this ObjectValue val) { if (!val.IsEvaluating) diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests/EvaluationTests.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests/EvaluationTests.cs index 9371dfa6f2..4f06ceae1d 100644 --- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests/EvaluationTests.cs +++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests/EvaluationTests.cs @@ -177,6 +177,11 @@ namespace MonoDevelop.Debugger.Tests public virtual void HiddenMembers () { IgnoreCorDebugger ("TODO"); + if (Session is SoftDebuggerSession) { + if (!((SoftDebuggerSession)Session).ProtocolVersion.AtLeast (2, 40)) { + Assert.Ignore ("Need newer Mono with SDB protocol 2.40+"); + } + } ObjectValue val; val = Eval ("HiddenField"); Assert.AreEqual ("5", val.Value); @@ -203,6 +208,122 @@ namespace MonoDevelop.Debugger.Tests } Assert.AreEqual ("5", val.Value); Assert.AreEqual ("int", val.TypeName); + + val = Eval ("OverridenPropertyInt"); + if (!AllowTargetInvokes) { + var options = Session.Options.EvaluationOptions.Clone (); + options.AllowTargetInvoke = true; + + val.Refresh (options); + val = val.Sync (); + } + Assert.AreEqual ("6", val.Value); + Assert.AreEqual ("int", val.TypeName); + + val = Eval ("OverridenMethodInt()"); + if (!AllowTargetInvokes) { + var options = Session.Options.EvaluationOptions.Clone (); + options.AllowTargetInvoke = true; + + val.Refresh (options); + val = val.Sync (); + } + Assert.AreEqual ("6", val.Value); + Assert.AreEqual ("int", val.TypeName); + + val = Eval ("OverridenPropertyString"); + if (!AllowTargetInvokes) { + var options = Session.Options.EvaluationOptions.Clone (); + options.AllowTargetInvoke = true; + + val.Refresh (options); + val = val.Sync (); + } + Assert.AreEqual ("\"6\"", val.Value); + Assert.AreEqual ("string", val.TypeName); + + val = Eval ("OverridenMethodString()"); + if (!AllowTargetInvokes) { + var options = Session.Options.EvaluationOptions.Clone (); + options.AllowTargetInvoke = true; + + val.Refresh (options); + val = val.Sync (); + } + Assert.AreEqual ("\"6\"", val.Value); + Assert.AreEqual ("string", val.TypeName); + + + + val = Eval ("testEvaluationChild.HiddenField"); + Assert.AreEqual ("6", val.Value); + Assert.AreEqual ("int", val.TypeName); + + val = Eval ("testEvaluationChild.HiddenProperty"); + if (!AllowTargetInvokes) { + var options = Session.Options.EvaluationOptions.Clone (); + options.AllowTargetInvoke = true; + + val.Refresh (options); + val = val.Sync (); + } + Assert.AreEqual ("6", val.Value); + Assert.AreEqual ("int", val.TypeName); + + val = Eval ("testEvaluationChild.HiddenMethod()"); + if (!AllowTargetInvokes) { + var options = Session.Options.EvaluationOptions.Clone (); + options.AllowTargetInvoke = true; + + val.Refresh (options); + val = val.Sync (); + } + Assert.AreEqual ("6", val.Value); + Assert.AreEqual ("int", val.TypeName); + + val = Eval ("testEvaluationChild.OverridenPropertyInt"); + if (!AllowTargetInvokes) { + var options = Session.Options.EvaluationOptions.Clone (); + options.AllowTargetInvoke = true; + + val.Refresh (options); + val = val.Sync (); + } + Assert.AreEqual ("6", val.Value); + Assert.AreEqual ("int", val.TypeName); + + val = Eval ("testEvaluationChild.OverridenMethodInt()"); + if (!AllowTargetInvokes) { + var options = Session.Options.EvaluationOptions.Clone (); + options.AllowTargetInvoke = true; + + val.Refresh (options); + val = val.Sync (); + } + Assert.AreEqual ("6", val.Value); + Assert.AreEqual ("int", val.TypeName); + + val = Eval ("testEvaluationChild.OverridenPropertyString"); + if (!AllowTargetInvokes) { + var options = Session.Options.EvaluationOptions.Clone (); + options.AllowTargetInvoke = true; + + val.Refresh (options); + val = val.Sync (); + } + Assert.AreEqual ("\"6\"", val.Value); + Assert.AreEqual ("string", val.TypeName); + + val = Eval ("testEvaluationChild.OverridenMethodString()"); + if (!AllowTargetInvokes) { + var options = Session.Options.EvaluationOptions.Clone (); + options.AllowTargetInvoke = true; + + val.Refresh (options); + val = val.Sync (); + } + Assert.AreEqual ("\"6\"", val.Value); + Assert.AreEqual ("string", val.TypeName); } [Test] @@ -610,7 +731,7 @@ namespace MonoDevelop.Debugger.Tests Assert.AreEqual ("bool", val.TypeName); val = Eval ("alist.Count"); - if (!AllowTargetInvokes && soft == null) { + if (!AllowTargetInvokes) { // Note: this is a simple property which gets evaluated client-side by the SDB backend var options = Session.Options.EvaluationOptions.Clone (); options.AllowTargetInvoke = true; @@ -1659,7 +1780,7 @@ namespace MonoDevelop.Debugger.Tests Assert.Ignore ("A newer version of the Mono runtime is required."); val = Eval ("a.Prop"); - if (!AllowTargetInvokes && soft == null) { + if (!AllowTargetInvokes) { var options = Session.Options.EvaluationOptions.Clone (); options.AllowTargetInvoke = true; @@ -1683,7 +1804,7 @@ namespace MonoDevelop.Debugger.Tests Assert.AreEqual ("int", val.TypeName); val = Eval ("a.PropNoVirt2"); - if (!AllowTargetInvokes && soft == null) { + if (!AllowTargetInvokes) { var options = Session.Options.EvaluationOptions.Clone (); options.AllowTargetInvoke = true; @@ -1735,7 +1856,7 @@ namespace MonoDevelop.Debugger.Tests Assert.AreEqual ("int", val.TypeName); val = Eval ("b.Prop"); - if (!AllowTargetInvokes && soft == null) { + if (!AllowTargetInvokes) { var options = Session.Options.EvaluationOptions.Clone (); options.AllowTargetInvoke = true; |