diff --git a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Debugger.Tests.csproj b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Debugger.Tests.csproj index a65d3bb41b..399f44fd14 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Debugger.Tests.csproj +++ b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Debugger.Tests.csproj @@ -50,6 +50,7 @@ + diff --git a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/DebuggerTests.cs b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/DebuggerTests.cs index cb593cf2c0..4563e6ba74 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/DebuggerTests.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/DebuggerTests.cs @@ -236,15 +236,15 @@ namespace Debugger.Tests debugger.Continue(); WaitForPause(PausedReason.Break, null); args = new List(debugger.CurrentFunction.ArgumentVariables); - // Argument names + // names Assert.AreEqual("i", args[0].Name); Assert.AreEqual("s", args[1].Name); Assert.AreEqual("args", args[2].Name); - // Argument types + // types Assert.AreEqual(typeof(PrimitiveValue), args[0].Value.GetType()); Assert.AreEqual(typeof(PrimitiveValue), args[1].Value.GetType()); Assert.AreEqual(typeof(ArrayValue), args[2].Value.GetType()); - // Argument values + // values Assert.AreEqual("0", args[0].Value.AsString); Assert.AreEqual("S", args[1].Value.AsString); Assert.AreEqual(0 ,((ArrayValue)args[2].Value).Lenght); @@ -252,11 +252,11 @@ namespace Debugger.Tests debugger.Continue(); WaitForPause(PausedReason.Break, null); args = new List(debugger.CurrentFunction.ArgumentVariables); - // Argument types + // types Assert.AreEqual(typeof(PrimitiveValue), args[0].Value.GetType()); Assert.AreEqual(typeof(PrimitiveValue), args[1].Value.GetType()); Assert.AreEqual(typeof(ArrayValue), args[2].Value.GetType()); - // Argument values + // values Assert.AreEqual("1", args[0].Value.AsString); Assert.AreEqual("S", args[1].Value.AsString); Assert.AreEqual(1 ,((ArrayValue)args[2].Value).Lenght); @@ -264,11 +264,11 @@ namespace Debugger.Tests debugger.Continue(); WaitForPause(PausedReason.Break, null); args = new List(debugger.CurrentFunction.ArgumentVariables); - // Argument types + // types Assert.AreEqual(typeof(PrimitiveValue), args[0].Value.GetType()); Assert.AreEqual(typeof(NullValue), args[1].Value.GetType()); Assert.AreEqual(typeof(ArrayValue), args[2].Value.GetType()); - // Argument values + // values Assert.AreEqual("2", args[0].Value.AsString); Assert.IsNotNull(args[1].Value.AsString); Assert.AreEqual(2 ,((ArrayValue)args[2].Value).Lenght); @@ -286,19 +286,19 @@ namespace Debugger.Tests StartProgram("FunctionLocalVariables"); WaitForPause(PausedReason.Break, null); args = new List(debugger.CurrentFunction.LocalVariables); - // Argument names + // names Assert.AreEqual("i", args[0].Name); Assert.AreEqual("s", args[1].Name); Assert.AreEqual("args", args[2].Name); Assert.AreEqual("n", args[3].Name); Assert.AreEqual("o", args[4].Name); - // Argument types + // types Assert.AreEqual(typeof(PrimitiveValue), args[0].Value.GetType()); Assert.AreEqual(typeof(PrimitiveValue), args[1].Value.GetType()); Assert.AreEqual(typeof(ArrayValue), args[2].Value.GetType()); Assert.AreEqual(typeof(NullValue), args[3].Value.GetType()); Assert.AreEqual(typeof(ObjectValue), args[4].Value.GetType()); - // Argument values + // values Assert.AreEqual("0", args[0].Value.AsString); Assert.AreEqual("S", args[1].Value.AsString); Assert.AreEqual(1 ,((ArrayValue)args[2].Value).Lenght); @@ -435,5 +435,51 @@ namespace Debugger.Tests debugger.Continue(); debugger.WaitForPrecessExit(); } + + [Test] + public void PropertyVariable() + { + Variable local = null; + List subVars = new List(); + + StartProgram("PropertyVariable"); + WaitForPause(PausedReason.Break, null); + foreach(Variable var in debugger.CurrentFunction.LocalVariables) { + local = var; + } + foreach(Variable var in local.SubVariables) { + subVars.Add(var); + } + Assert.AreEqual("PrivateProperty", subVars[1].Name); + Assert.AreEqual("PublicProperty", subVars[2].Name); + Assert.AreEqual("ExceptionProperty", subVars[3].Name); + Assert.AreEqual("StaticProperty", subVars[4].Name); + + Assert.AreEqual(typeof(UnavailableValue), subVars[1].Value.GetType()); + debugger.StartEvaluation(); + WaitForPause(PausedReason.AllEvalsComplete, null); + Assert.AreEqual("private", subVars[1].Value.AsString); + + Assert.AreEqual(typeof(UnavailableValue), subVars[2].Value.GetType()); + debugger.StartEvaluation(); + WaitForPause(PausedReason.AllEvalsComplete, null); + Assert.AreEqual("public", subVars[2].Value.AsString); + + Assert.AreEqual(typeof(UnavailableValue), subVars[3].Value.GetType()); + debugger.StartEvaluation(); + WaitForPause(PausedReason.AllEvalsComplete, null); + Assert.AreEqual(typeof(UnavailableValue), subVars[3].Value); + + Assert.AreEqual(typeof(UnavailableValue), subVars[4].Value.GetType()); + debugger.StartEvaluation(); + WaitForPause(PausedReason.AllEvalsComplete, null); + Assert.AreEqual("static", subVars[4].Value.AsString); + + debugger.Continue(); + WaitForPause(PausedReason.Break, null); + + debugger.Continue(); + debugger.WaitForPrecessExit(); + } } } diff --git a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestProgram.cs b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestProgram.cs index 0d4f4b3842..197d43d7bb 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestProgram.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestProgram.cs @@ -29,6 +29,7 @@ namespace Debugger.Tests case "FunctionVariablesLifetime": Progs.FunctionVariablesLifetime.Main(); break; case "HelloWorld": Progs.HelloWorld.Main(); break; case "ObjectValue": Progs.ObjectValue.Main(); break; + case "PropertyVariable": Progs.PropertyVariable.Main(); break; case "SimpleProgram": Progs.SimpleProgram.Main(); break; case "Stepping": Progs.Stepping.Main(); break; case "Symbols": Progs.Symbols.Main(); break; diff --git a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/PropertyVariable.cs b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/PropertyVariable.cs new file mode 100644 index 0000000000..e3e12ff7fe --- /dev/null +++ b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/PropertyVariable.cs @@ -0,0 +1,45 @@ +// +// 2002-2005 AlphaSierraPapa +// GNU General Public License +// +// $Revision$ +// + +using System; + +namespace Debugger.Tests.TestPrograms +{ + public class PropertyVariable + { + string PrivateProperty { + get { + return "private"; + } + } + + public string PublicProperty { + get { + return "public"; + } + } + + public string ExceptionProperty { + get { + throw new NotSupportedException(); + } + } + + public static string StaticProperty { + get { + return "static"; + } + } + + public static void Main() + { + PropertyVariable var = new PropertyVariable(); + System.Diagnostics.Debugger.Break(); + System.Diagnostics.Debugger.Break(); + } + } +}