Remove old tests.
authorMikhail Kurinnoi <m.kurinnoi@samsung.com>
Tue, 2 Aug 2022 14:23:08 +0000 (17:23 +0300)
committerAlexander Soldatov/Platform Lab /SRR/Staff Engineer/Samsung Electronics <soldatov.a@samsung.com>
Tue, 2 Aug 2022 14:39:48 +0000 (17:39 +0300)
30 files changed:
tests/BreakpointAddRemoveTest/BreakpointAddRemoveTest.cs [deleted file]
tests/BreakpointAddRemoveTest/BreakpointAddRemoveTest.csproj [deleted file]
tests/ExceptionBreakpointMultiThreadsTest/ExceptionBreakpointMultiThreadsTest.cs [deleted file]
tests/ExceptionBreakpointMultiThreadsTest/ExceptionBreakpointMultiThreadsTest.csproj [deleted file]
tests/ExceptionBreakpointTest/ExceptionBreakpointTest.cs [deleted file]
tests/ExceptionBreakpointTest/ExceptionBreakpointTest.csproj [deleted file]
tests/ExceptionTest/ExceptionTest.cs [deleted file]
tests/ExceptionTest/ExceptionTest.csproj [deleted file]
tests/ExpressionsTest/ExpressionsTest.csproj [deleted file]
tests/ExpressionsTest/Program.cs [deleted file]
tests/LambdaTest/LambdaTest.csproj [deleted file]
tests/LambdaTest/Program.cs [deleted file]
tests/README.md [deleted file]
tests/SetValuesTest/SetValuesTest.cs [deleted file]
tests/SetValuesTest/SetValuesTest.csproj [deleted file]
tests/SimpleSteppingTest/SimpleSteppingTest.cs [deleted file]
tests/SimpleSteppingTest/SimpleSteppingTest.csproj [deleted file]
tests/ValuesTest/ValuesTest.cs [deleted file]
tests/ValuesTest/ValuesTest.csproj [deleted file]
tests/cli/.gitignore [deleted file]
tests/cli/Makefile [deleted file]
tests/cli/README.md [deleted file]
tests/cli/test.cs [deleted file]
tests/cli/test.csproj [deleted file]
tests/run_tests_sdb.sh [deleted file]
tests/runner/MIException.cs [deleted file]
tests/runner/MIResults.cs [deleted file]
tests/runner/Runner.cs [deleted file]
tests/runner/runner.csproj [deleted file]
tests/tests.sln [deleted file]

diff --git a/tests/BreakpointAddRemoveTest/BreakpointAddRemoveTest.cs b/tests/BreakpointAddRemoveTest/BreakpointAddRemoveTest.cs
deleted file mode 100644 (file)
index 3072f53..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
-using System.IO;
-Send("1-file-exec-and-symbols dotnet");
-Send("2-exec-arguments " + TestBin);
-
-string filename = Path.GetFileName(TestSource);
-
-Send(String.Format("3-break-insert -f {0}:{1}", filename, Lines["BREAK1"]));
-r = Expect("3^done");
-int id1 = r.Find("bkpt").FindInt("number");
-
-Send(String.Format("4-break-insert -f {0}:{1}", filename, Lines["BREAK2"]));
-r = Expect("4^done");
-int id2 = r.Find("bkpt").FindInt("number");
-
-Send(String.Format("5-break-insert -f -c \"x>20\" {0}:{1}", filename, Lines["BREAK3"]));
-r = Expect("5^done");
-int id3 = r.Find("bkpt").FindInt("number");
-
-Send(String.Format("6-break-insert -f -c \"x>50\" BreakpointAddRemoveTest.Program.TestFunc2"));
-r = Expect("6^done");
-int id4 = r.Find("bkpt").FindInt("number");
-
-Send(String.Format("7-break-insert -f Program.TestFunc3"));
-r = Expect("7^done");
-int id5 = r.Find("bkpt").FindInt("number");
-
-Send(String.Format("8-break-insert -f TestFunc4(int)"));
-r = Expect("8^done");
-int id6 = r.Find("bkpt").FindInt("number");
-
-Send("-exec-run");
-*/
-using System;
-
-namespace BreakpointAddRemoveTest
-{
-
-
-    class Program
-    {
-        static void Main(string[] args)
-        {                                      // //@START@
-/*
-var r = Expect("*stopped");
-Assert.Equal("entry-point-hit", r.FindString("reason"));
-Assert.Equal(Lines["START"], r.Find("frame").FindInt("line"));
-
-Send("9-exec-continue");
-*/
-            Console.WriteLine("Hello World!"); // //@BREAK1@
-/*
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["BREAK1"], r.Find("frame").FindInt("line"));
-Assert.Equal(id1, r.FindInt("bkptno"));
-
-Send(String.Format("10-break-delete {0}", id2));
-Expect("10^done");
-Send("11-exec-continue");
-*/
-                TestFunc(10);
-                TestFunc(21);
-                TestFunc(9);
-                TestFunc2(11);
-                TestFunc2(90);
-
-                TestFunc3(true);
-                TestFunc3();
-
-                TestFunc4();
-                TestFunc4(50);
-
-                Console.WriteLine("Hello World!"); // //@BREAK2@
-        }
-
-        static void TestFunc(int x)
-        {
-                x++;                            // //@BREAK3@
-/*
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["BREAK3"], r.Find("frame").FindInt("line"));
-Assert.Equal(id3, r.FindInt("bkptno"));
-Send("12-exec-continue");
-*/
-        }
-
-        static void TestFunc2(int x)
-        {                                       // //@FUNC_BREAK@
-/*
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["FUNC_BREAK"], r.Find("frame").FindInt("line"));
-Assert.Equal(id4, r.FindInt("bkptno"));
-Send("13-exec-continue");
-*/
-                x++;
-        }
-
-        static int TestFunc3(bool iii)
-        {                                       // //@FUNC_BREAK2@
-/*
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["FUNC_BREAK2"], r.Find("frame").FindInt("line"));
-Assert.Equal(id5, r.FindInt("bkptno"));
-Send("14-exec-continue");
-*/
-                return 10;
-        }
-
-        static int TestFunc3()
-        {                                       // //@FUNC_BREAK3@
-/*
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["FUNC_BREAK3"], r.Find("frame").FindInt("line"));
-Assert.Equal(id5, r.FindInt("bkptno"));
-Send("15-exec-continue");
-*/
-                return 100;
-        }
-
-        static int TestFunc4(int a)
-        {                                       // //@FUNC_BREAK4@
-/*
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["FUNC_BREAK4"], r.Find("frame").FindInt("line"));
-Assert.Equal(id6, r.FindInt("bkptno"));
-Send("16-exec-continue");
-*/
-                return 50;
-        }
-
-        static int TestFunc4()
-        {
-                return 10;
-        }
-    }
-/*
-r = Expect("*stopped");
-Assert.Equal("exited", r.FindString("reason"));
-*/
-}
diff --git a/tests/BreakpointAddRemoveTest/BreakpointAddRemoveTest.csproj b/tests/BreakpointAddRemoveTest/BreakpointAddRemoveTest.csproj
deleted file mode 100644 (file)
index ce1697a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp2.0</TargetFramework>
-  </PropertyGroup>
-
-</Project>
diff --git a/tests/ExceptionBreakpointMultiThreadsTest/ExceptionBreakpointMultiThreadsTest.cs b/tests/ExceptionBreakpointMultiThreadsTest/ExceptionBreakpointMultiThreadsTest.cs
deleted file mode 100644 (file)
index 165d687..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
-using System.IO;
-Send("1-file-exec-and-symbols dotnet");
-Send("2-exec-arguments " + TestBin);
-string filename = Path.GetFileName(TestSource);
-Send(String.Format("5-break-insert -f {0}:{1}", filename, Lines["PIT_STOP"]));
-var r = Expect("5^done");
-int b1 = r.Find("bkpt").FindInt("number");
-Send("7-exec-run");
-r = Expect("*stopped");
-Assert.Equal("entry-point-hit", r.FindString("reason"));
-Assert.Equal(Lines["MAIN"], r.Find("frame").FindInt("line"));
-Send("8-exec-continue");
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["PIT_STOP"], r.Find("frame").FindInt("line"));
-Send("100-exec-continue");
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Send("101-exec-continue");
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Send("102-exec-continue");
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Send("103-exec-continue");
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Send("104-exec-continue");
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Send("105-exec-continue");
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Send("106-exec-continue");
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Send("107-exec-continue");
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Send("108-exec-continue");
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Send("109-exec-continue");
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Send("120-exec-continue");
-r = Expect("*stopped");
-Assert.Equal("exited", r.FindString("reason"));
-Send(String.Format("999-break-delete {0}", b1));
-Expect("999^done");
-Send("-gdb-exit");
-*/
-
-using System;
-using System.Threading;
-
-public class Test {
-    public void TestSystemException()
-    {
-        throw new System.DivideByZeroException("Message text");
-    }
-    
-    public void run()
-    { // //@PIT_STOP@
-        Test test = new Test();
-
-        Thread thread0 = new Thread(new System.Threading.ThreadStart(test.TestSystemException));
-        Thread thread1 = new Thread(new System.Threading.ThreadStart(test.TestSystemException));
-        Thread thread2 = new Thread(new System.Threading.ThreadStart(test.TestSystemException));
-        Thread thread3 = new Thread(new System.Threading.ThreadStart(test.TestSystemException));
-        Thread thread4 = new Thread(new System.Threading.ThreadStart(test.TestSystemException));
-        Thread thread5 = new Thread(new System.Threading.ThreadStart(test.TestSystemException));
-        Thread thread6 = new Thread(new System.Threading.ThreadStart(test.TestSystemException));
-        Thread thread7 = new Thread(new System.Threading.ThreadStart(test.TestSystemException));
-        Thread thread8 = new Thread(new System.Threading.ThreadStart(test.TestSystemException));
-        Thread thread9 = new Thread(new System.Threading.ThreadStart(test.TestSystemException));
-        
-        thread0.Name = "_thread_0_";
-        thread1.Name = "_thread_1_";
-        thread2.Name = "_thread_2_";
-        thread3.Name = "_thread_3_";
-        thread4.Name = "_thread_4_";
-        thread5.Name = "_thread_5_";
-        thread6.Name = "_thread_6_";
-        thread7.Name = "_thread_7_";
-        thread8.Name = "_thread_8_";
-        thread9.Name = "_thread_9_";
-        
-        thread0.Start();
-        thread1.Start();
-        thread2.Start();
-        thread3.Start();
-        thread4.Start();
-        thread5.Start();
-        thread6.Start();
-        thread7.Start();
-        thread8.Start();
-        thread9.Start();
-                
-        thread9.Join();
-        thread8.Join();
-        thread7.Join();
-        thread6.Join();
-        thread5.Join();
-        thread4.Join();
-        thread3.Join();
-        thread2.Join();
-        thread1.Join();
-        thread0.Join();        
-    }
-}
-
-public class MainClass
-{
-    public static void Main()
-    { // //@MAIN@
-        Test test = new Test();
-        //////// Empty exception filter. And we expect unhandled exception from each thread.
-        //////// Line in breakpoint and exception events not available inside thread methods.
-        //////// And also, this test checks additional Continue(). 
-        //////// FuncEval() not checked for MI, because ExceptionInfo not used for MI.
-        test.run();
-    }
-}
diff --git a/tests/ExceptionBreakpointMultiThreadsTest/ExceptionBreakpointMultiThreadsTest.csproj b/tests/ExceptionBreakpointMultiThreadsTest/ExceptionBreakpointMultiThreadsTest.csproj
deleted file mode 100644 (file)
index ce1697a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp2.0</TargetFramework>
-  </PropertyGroup>
-
-</Project>
diff --git a/tests/ExceptionBreakpointTest/ExceptionBreakpointTest.cs b/tests/ExceptionBreakpointTest/ExceptionBreakpointTest.cs
deleted file mode 100644 (file)
index 0622f56..0000000
+++ /dev/null
@@ -1,425 +0,0 @@
-/*
-using System.IO;
-Send("1-file-exec-and-symbols dotnet");
-Send("2-exec-arguments " + TestBin);
-
-string filename = Path.GetFileName(TestSource);
-
-Send("3-break-exception-insert throw+user-unhandled A B C");
-var r = Expect("3^done");
-Send("4-break-exception-delete 3 2 1");
-r = Expect("4^done");
-
-//////// Silent removing of previous global exception filter
-Send("200-break-exception-insert throw *");
-r = Expect("200^done");
-int be200 = r.Find("bkpt").FindInt("number");
-
-Send("201-break-exception-insert throw+user-unhandled *");
-r = Expect("201^done");
-int be201 = r.Find("bkpt").FindInt("number");
-
-Send(String.Format("202-break-exception-delete {0}", be200));
-r = Expect("202^error");
-
-Send(String.Format("203-break-exception-delete {0}", be201));
-r = Expect("203^done");
-////////
-
-Send(String.Format("5-break-insert -f {0}:{1}", filename, Lines["PIT_STOP_A"]));
-r = Expect("5^done");
-int b1 = r.Find("bkpt").FindInt("number");
-
-Send(String.Format("6-break-insert -f {0}:{1}", filename, Lines["PIT_STOP_B"]));
-r = Expect("6^done");
-int b2 = r.Find("bkpt").FindInt("number");
-
-Send("7-exec-run");
-
-r = Expect("*stopped");
-Assert.Equal("entry-point-hit", r.FindString("reason"));
-Assert.Equal(Lines["MAIN"], r.Find("frame").FindInt("line"));
-
-//////// Expected result => Not found any exception breakpoits.
-//////// "State: !Thow() && !UserUnhandled() name := '*'";
-Send("8-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["PIT_STOP_A"], r.Find("frame").FindInt("line"));
-
-//////// Expected result => Not found any exception breakpoits.
-//////// "State: !Thow() && UserUnhandled() name := '*'";
-Send("10-break-exception-insert user-unhandled *");
-r = Expect("10^done");
-int be1 = r.Find("bkpt").FindInt("number");
-
-Send("11-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["PIT_STOP_A"], r.Find("frame").FindInt("line"));
-
-Send(String.Format("12-break-exception-delete {0}", be1));
-r = Expect("12^done");
-
-//////// Expected result => Raised EXCEPTION_A and EXCEPTION_B.
-//////// "State: Thow() && !UserUnhandled() name := '*'";
-Send("13-break-exception-insert throw *");
-r = Expect("13^done");
-int be2 = r.Find("bkpt").FindInt("number");
-
-Send("14-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Assert.Equal(Lines["EXCEPTION_A"], r.Find("frame").FindInt("line"));
-
-Send("15-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Assert.Equal(Lines["EXCEPTION_B"], r.Find("frame").FindInt("line"));
-
-Send("17-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["PIT_STOP_A"], r.Find("frame").FindInt("line"));
-
-Send(String.Format("18-break-exception-delete {0}", be2));
-r = Expect("18^done");
-
-//////// Expected result => Raised EXCEPTION_A and EXCEPTION_B.
-//////// "State: Thow() && UserUnhandled() name := '*'";
-Send("19-break-exception-insert throw+user-unhandled *");
-r = Expect("19^done");
-int be3 = r.Find("bkpt").FindInt("number");
-
-Send("20-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Assert.Equal(Lines["EXCEPTION_A"], r.Find("frame").FindInt("line"));
-
-Send("21-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Assert.Equal(Lines["EXCEPTION_B"], r.Find("frame").FindInt("line"));
-
-Send("22-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["PIT_STOP_A"], r.Find("frame").FindInt("line"));
-
-Send(String.Format("23-break-exception-delete {0}", be3));
-r = Expect("23^done");
-
-//////// Expected result => Raised EXCEPTION_A and EXCEPTION_B.
-//////// "State: Thow() && UserUnhandled() name := '*'";
-Send("19-break-exception-insert throw+user-unhandled *");
-r = Expect("19^done");
-int be4 = r.Find("bkpt").FindInt("number");
-
-Send("20-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Assert.Equal(Lines["EXCEPTION_A"], r.Find("frame").FindInt("line"));
-
-Send("21-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Assert.Equal(Lines["EXCEPTION_B"], r.Find("frame").FindInt("line"));
-
-Send("22-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["PIT_STOP_A"], r.Find("frame").FindInt("line"));
-
-Send(String.Format("23-break-exception-delete {0}", be4));
-r = Expect("23^done");
-
-//////// Expected result => Raised EXCEPTION_A and EXCEPTION_B.
-//////// "State: Thow() && UserUnhandled()";
-//////// "name := System.DivideByZeroException";
-Send("24-break-exception-insert throw+user-unhandled System.DivideByZeroException");
-r = Expect("24^done");
-int be5 = r.Find("bkpt").FindInt("number");
-
-Send("25-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Assert.Equal(Lines["EXCEPTION_A"], r.Find("frame").FindInt("line"));
-
-Send("26-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Assert.Equal(Lines["EXCEPTION_B"], r.Find("frame").FindInt("line"));
-
-Send("27-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["PIT_STOP_A"], r.Find("frame").FindInt("line"));
-
-Send(String.Format("28-break-exception-delete {0}", be5));
-r = Expect("28^done");
-
-//////// Expected result => Raised EXCEPTION_A and EXCEPTION_B.
-////////  "State: Thow()";
-////////  "name := System.DivideByZeroException";
-////////  "State: UserUnhandled()";
-////////  "name := System.DivideByZeroException";
-Send("29-break-exception-insert throw System.DivideByZeroException");
-r = Expect("29^done");
-int be6 = r.Find("bkpt").FindInt("number");
-
-Send("30-break-exception-insert user-unhandled System.DivideByZeroException");
-r = Expect("30^done");
-int be7 = r.Find("bkpt").FindInt("number");
-
-Send("31-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Assert.Equal(Lines["EXCEPTION_A"], r.Find("frame").FindInt("line"));
-
-Send("32-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Assert.Equal(Lines["EXCEPTION_B"], r.Find("frame").FindInt("line"));
-
-Send("33-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["PIT_STOP_A"], r.Find("frame").FindInt("line"));
-
-Send(String.Format("34-break-exception-delete {0}", be7));
-r = Expect("34^done");
-
-Send(String.Format("35-break-exception-delete {0}", be6));
-r = Expect("35^done");
-
-//////// Expected result => Raised EXCEPTION_A and EXCEPTION_B.
-//////// "State: Thow() && UserUnhandled()";
-//////// "name := System.DivideByZeroExceptionWrong and *";
-Send("36-break-exception-insert throw+user-unhandled *");
-r = Expect("36^done");
-int be8 = r.Find("bkpt").FindInt("number");
-
-Send("37-break-exception-insert throw+user-unhandled DivideByZeroExceptionWrong");
-r = Expect("37^done");
-int be9 = r.Find("bkpt").FindInt("number");
-
-Send("38-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Assert.Equal(Lines["EXCEPTION_A"], r.Find("frame").FindInt("line"));
-
-Send("39-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Assert.Equal(Lines["EXCEPTION_B"], r.Find("frame").FindInt("line"));
-
-Send("40-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["PIT_STOP_A"], r.Find("frame").FindInt("line"));
-
-Send(String.Format("41-break-exception-delete {0}", be8));
-r = Expect("41^done");
-
-Send(String.Format("42-break-exception-delete {0}", be9));
-r = Expect("42^done");
-
-//////// Expected result => Not found any exception breakpoits.
-//////// "State: Thow() && UserUnhandled()";
-//////// "name := System.DivideByZeroExceptionWrong";
-
-Send("36-break-exception-insert throw+user-unhandled System.DivideByZeroExceptionWrong");
-r = Expect("36^done");
-int be10 = r.Find("bkpt").FindInt("number");
-
-Send("37-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["PIT_STOP_B"], r.Find("frame").FindInt("line"));
-
-Send(String.Format("38-break-exception-delete {0}", be10));
-r = Expect("38^done");
-
-//////// Expected result => Raised EXCEPTION_C, EXCEPTION_D, EXCEPTION_E and exit after third unhandled exception.
-//////// "State: !Thow() && UserUnhandled()";
-//////// "name := AppException";
-
-//////// Test of setting unhandled - read only mode.
-Send("39-break-exception-insert unhandled AppException");
-r = Expect("39^done");
-
-Send("40-break-exception-insert user-unhandled AppException");
-r = Expect("40^done");
-int be11 = r.Find("bkpt").FindInt("number");
-
-Send("41-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Assert.Equal(Lines["EXCEPTION_C"], r.Find("frame").FindInt("line"));
-
-Send("42-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Assert.Equal(Lines["EXCEPTION_D"], r.Find("frame").FindInt("line"));
-
-Send("43-exec-continue");
-
-r = Expect("*stopped");
-Assert.Equal("exception-received", r.FindString("reason"));
-Assert.Equal(Lines["EXCEPTION_E"], r.Find("frame").FindInt("line"));
-
-Send("45-exec-continue");
-r = Expect("*stopped");
-Assert.Equal("exited", r.FindString("reason"));
-
-Send(String.Format("46-break-exception-delete {0}", be11));
-r = Expect("46^done");
-
-Send(String.Format("99-break-delete {0}", b1));
-Expect("99^done");
-Send(String.Format("100-break-delete {0}", b2));
-Expect("100^done");
-
-Send("-gdb-exit");
-*/
-
-using System;
-using System.Threading;
-
-public class AppException : Exception
-{
-    public AppException(String message) : base(message) { }
-    public AppException(String message, Exception inner) : base(message, inner) { }
-}
-
-public class Test
-{
-    public void TestSystemException()
-    { // //@PIT_STOP_A@
-        int zero = 1 - 1;
-        try
-        {
-            int a = 1 / zero; // //@EXCEPTION_A@
-        }
-        catch (Exception e)
-        {
-            Console.WriteLine($"Implicit Exception: {e.Message}");
-        }
-        try
-        {
-            throw new System.DivideByZeroException(); // //@EXCEPTION_B@
-        }
-        catch (Exception e)
-        {
-            Console.WriteLine($"Explicit Exception: {e.Message}");
-        }
-        Console.WriteLine("Complete system exception test\n");
-    }
-    public void TestAppException()
-    { // //@PIT_STOP_B@
-        try
-        {
-            CatchInner();
-        }
-        catch (AppException e)
-        {
-            Console.WriteLine("Caught: {0}", e.Message);
-            if (e.InnerException != null)
-            {
-                Console.WriteLine("Inner exception: {0}", e.InnerException);
-            }
-            throw new AppException("Error again in CatchInner caused by calling the ThrowInner method.", e);  // //@EXCEPTION_E@
-        }
-        Console.WriteLine("Complete application exception test\n");
-    }
-    public void ThrowInner()
-    {
-        throw new AppException("Exception in ThrowInner method."); // //@EXCEPTION_C@
-    }
-    public void CatchInner()
-    {
-        try
-        {
-            this.ThrowInner();
-        }
-        catch (AppException e)
-        {
-            throw new AppException("Error in CatchInner caused by calling the ThrowInner method.", e); // //@EXCEPTION_D@
-        }
-    }
-}
-
-public class MainClass
-{
-    public static void Main()
-    { // //@MAIN@
-        Test test = new Test();
-
-        //////// "State: !Thow() && !UserUnhandled() name := '*'";
-        test.TestSystemException();
-
-        //////// "State: !Thow() && UserUnhandled() name := '*'";
-        test.TestSystemException();
-
-        //////// "State: Thow() && !UserUnhandled() name := '*'";
-        test.TestSystemException();
-
-        ////////  "State: Thow() && UserUnhandled() name := '*'";
-        test.TestSystemException();
-
-        ////////  "State: Thow() && UserUnhandled()";
-        ////////  "name := System.DivideByZeroException";
-        test.TestSystemException();
-
-        ////////  "State: Thow()";
-        ////////  "name := System.DivideByZeroException";
-        ////////  "State: UserUnhandled()";
-        ////////  "name := System.DivideByZeroException";
-        test.TestSystemException();
-
-        ////////  "State: Thow() && UserUnhandled()";
-        ////////  "name := System.DivideByZeroExceptionWrong and *";
-        test.TestSystemException();
-
-        ////////  "State: Thow() && UserUnhandled()";
-        ////////  "name := System.DivideByZeroExceptionWrong";
-        test.TestSystemException();
-
-        //////// "TODO:\n"
-        //////// "Test for check forever waiting:\n"
-        //////// "threads in NetcoreDBG (unsupported now)\n"
-        //////// "Thread threadA = new Thread(new ThreadStart(test.TestSystemException));\n"
-        //////// "Thread threadB = new Thread(new ThreadStart(test.TestSystemException));\n"
-        //////// "threadA.Start();\n"
-        //////// "threadB.Start();\n"
-        //////// "threadA.Join();\n"
-        //////// "threadB.Join();\n"
-
-        //////// "Test with process exit at the end, need re-run"
-        //////// "INFO: State: !Thow() && UserUnhandled() name := AppException";
-        test.TestAppException();
-    }
-}
diff --git a/tests/ExceptionBreakpointTest/ExceptionBreakpointTest.csproj b/tests/ExceptionBreakpointTest/ExceptionBreakpointTest.csproj
deleted file mode 100644 (file)
index ce1697a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp2.0</TargetFramework>
-  </PropertyGroup>
-
-</Project>
diff --git a/tests/ExceptionTest/ExceptionTest.cs b/tests/ExceptionTest/ExceptionTest.cs
deleted file mode 100644 (file)
index 0d7df3d..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
-Send("1-file-exec-and-symbols dotnet");
-Send("2-exec-arguments " + TestBin);
-Send("3-exec-run");
-
-var r = Expect("*stopped");
-Assert.Equal("entry-point-hit", r.FindString("reason"));
-Assert.Equal(Lines["START"], r.Find("frame").FindInt("line"));
-*/
-
-using System;
-
-namespace ExceptionTest
-{
-    class P {
-        public int x {
-            get { return 111; }
-        }
-    }
-
-    class Program
-    {
-        static void MyFunction(string s)
-        {
-            throw new Exception("test exception"); // //@THROW1@
-        }
-        static void MyFunction(int a)
-        {
-        }
-        static void Main(string[] args)
-        {                  // //@START@
-            P p = new P(); // //@STEP1@
-/*
-var try1Lines = new string[] { "STEP1", "TRY1", "TRY2", "TRY3", "CATCH1", "CATCH2", "CATCH3", "CATCH4" };
-foreach (string tag in try1Lines)
-{
-    Send("-exec-next");
-    r = Expect("*stopped");
-    Assert.Equal("end-stepping-range", r.FindString("reason"));
-    Assert.Equal(Lines[tag], r.Find("frame").FindInt("line"));
-}
-*/
-            try
-            {                       // //@TRY1@
-                try
-                {                   // //@TRY2@
-                    MyFunction(""); // //@TRY3@
-                }
-                catch(Exception e)  // //@CATCH1@
-                {                   // //@CATCH2@
-                    int a = 1;      // //@CATCH3@
-                }                   // //@CATCH4@
-/*
-// Check stack frames location
-
-Send("-stack-list-frames");
-r = Expect("^done");
-
-NamedResultValue[] frames = r.Find<ResultListValue>("stack").Content;
-Assert.True(frames.Length >= 3);
-
-Assert.Equal("frame", frames[0].Name);
-Assert.Equal("frame", frames[1].Name);
-Assert.Equal("frame", frames[2].Name);
-
-Assert.Equal(0, frames[0].Value.FindInt("level"));
-Assert.Equal(1, frames[1].Value.FindInt("level"));
-Assert.Equal(2, frames[2].Value.FindInt("level"));
-
-Assert.Equal(TestSource, frames[0].Value.FindString("fullname"));
-Assert.Equal(TestSource, frames[1].Value.FindString("fullname"));
-Assert.Equal(TestSource, frames[2].Value.FindString("fullname"));
-
-Assert.Equal(Lines["CATCH4"], frames[0].Value.FindInt("line"));
-Assert.Equal(Lines["THROW1"], frames[1].Value.FindInt("line"));
-Assert.Equal(Lines["TRY3"],   frames[2].Value.FindInt("line"));
-
-// Check local variables
-
-Send("-stack-list-variables");
-r = Expect("^done");
-ResultValue[] variables = r.Find<ValueListValue>("variables").AsArray<ResultValue>();
-Func<string, string> getVarValue = (string name) => Array.Find(variables, v => v.FindString("name") == name).FindString("value");
-
-Assert.Equal("{System.Exception}", getVarValue("$exception"));
-Assert.Equal("{System.Exception}", getVarValue("e"));
-Assert.Equal("1",                  getVarValue("a"));
-Assert.Equal("{ExceptionTest.P}",  getVarValue("p"));
-Assert.Equal("{string[0]}",        getVarValue("args"));
-
-// Execute property and check its value
-
-Send(String.Format("-var-create - * \"{0}\"", "p.x"));
-r = Expect("^done");
-Assert.Equal("111", r.FindString("value"));
-Assert.Equal("0", r.FindString("numchild"));
-Assert.Equal("int", r.FindString("type"));
-Assert.Equal("p.x", r.FindString("exp"));
-*/
-                int b = 2;          // //@TRY4@
-                try
-                {
-                    MyFunction("");
-                }
-                catch(Exception e)
-                {
-                    int c = 1;
-                    throw new Exception("my exception");
-                }
-            }
-            catch(Exception e)
-            {
-                MyFunction(1);
-            }
-            int d = 1; // //@BREAK@
-        }
-    }
-}
-/*
-Send("-exec-continue");
-r = Expect("*stopped");
-Assert.Equal("exited", r.FindString("reason"));
-*/
diff --git a/tests/ExceptionTest/ExceptionTest.csproj b/tests/ExceptionTest/ExceptionTest.csproj
deleted file mode 100644 (file)
index ce1697a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp2.0</TargetFramework>
-  </PropertyGroup>
-
-</Project>
diff --git a/tests/ExpressionsTest/ExpressionsTest.csproj b/tests/ExpressionsTest/ExpressionsTest.csproj
deleted file mode 100644 (file)
index 8e047a0..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">\r
-\r
-  <PropertyGroup>\r
-    <OutputType>Exe</OutputType>\r
-    <TargetFramework>netcoreapp2.0</TargetFramework>\r
-  </PropertyGroup>\r
-\r
-</Project>\r
diff --git a/tests/ExpressionsTest/Program.cs b/tests/ExpressionsTest/Program.cs
deleted file mode 100644 (file)
index 920ce5d..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*\r
-using System.IO;\r
-Send("1-file-exec-and-symbols dotnet");\r
-Send("2-exec-arguments " + TestBin);\r
-\r
-string filename = Path.GetFileName(TestSource);\r
-\r
-Send(String.Format("3-break-insert -f {0}:{1}", filename, Lines["BREAK1"]));\r
-r = Expect("3^done");\r
-int id1 = r.Find("bkpt").FindInt("number");\r
-\r
-Send(String.Format("4-break-insert -f {0}:{1}", filename, Lines["BREAK2"]));\r
-r = Expect("4^done");\r
-int id2 = r.Find("bkpt").FindInt("number");\r
-\r
-Send(String.Format("5-break-insert -f {0}:{1}", filename, Lines["BREAK3"]));\r
-r = Expect("5^done");\r
-int id3 = r.Find("bkpt").FindInt("number");\r
-\r
-Send("6-exec-run");\r
-*/\r
-\r
-using System;\r
-\r
-namespace ExpressionsTest\r
-{\r
-    class Program\r
-    {\r
-        static void Main(string[] args)\r
-        {                                               // //@START@\r
-/*\r
-var r = Expect("*stopped");\r
-Assert.Equal("entry-point-hit", r.FindString("reason"));\r
-Assert.Equal(Lines["START"], r.Find("frame").FindInt("line"));\r
-\r
-Send("7-exec-continue");\r
-*/\r
-            int a = 10;\r
-            int b = 11;\r
-            TestStruct tc = new TestStruct(a + 1, b);\r
-            string str1 = "string1";\r
-            string str2 = "string2";\r
-            int c = tc.b + b;                           // //@BREAK1@\r
-/*\r
-r = Expect("*stopped");\r
-Assert.Equal("breakpoint-hit", r.FindString("reason"));\r
-Assert.Equal(Lines["BREAK1"], r.Find("frame").FindInt("line"));\r
-Assert.Equal(id1, r.FindInt("bkptno"));\r
-\r
-Send(String.Format("8-var-create - * \"{0}\"", "a + b"));\r
-r = Expect("8^done");\r
-Assert.Equal("21", r.FindString("value"));\r
-\r
-Send(String.Format("9-var-create - * \"{0}\"", "tc.a + b"));\r
-r = Expect("9^done");\r
-Assert.Equal("22", r.FindString("value"));\r
-\r
-Send(String.Format("10-var-create - * \"{0}\"", "str1 + str2"));\r
-r = Expect("10^done");\r
-Assert.Equal("\"string1string2\"", r.FindString("value"));\r
-\r
-Send("11-exec-continue");\r
-*/\r
-            {\r
-                int d = 99;\r
-                int e = c + a;                          // //@BREAK2@\r
-/*\r
-r = Expect("*stopped");\r
-Assert.Equal("breakpoint-hit", r.FindString("reason"));\r
-Assert.Equal(Lines["BREAK2"], r.Find("frame").FindInt("line"));\r
-Assert.Equal(id2, r.FindInt("bkptno"));\r
-\r
-Send(String.Format("12-var-create - * \"{0}\"", "d + a"));\r
-r = Expect("12^done");\r
-Assert.Equal("109", r.FindString("value"));\r
-\r
-Send("13-exec-continue");\r
-*/\r
-            }\r
-\r
-            Console.WriteLine(str1 + str2);\r
-\r
-            tc.IncA();\r
-\r
-            Console.WriteLine("Hello World!");\r
-        }\r
-    }\r
-\r
-    struct TestStruct\r
-    {\r
-        public int a;\r
-        public int b;\r
-\r
-        public TestStruct(int x, int y)\r
-        {\r
-            a = x;\r
-            b = y;\r
-        }\r
-\r
-        public void IncA()\r
-        {\r
-            a++;                                        // //@BREAK3@\r
-/*\r
-r = Expect("*stopped");\r
-Assert.Equal("breakpoint-hit", r.FindString("reason"));\r
-Assert.Equal(Lines["BREAK3"], r.Find("frame").FindInt("line"));\r
-Assert.Equal(id3, r.FindInt("bkptno"));\r
-\r
-Send(String.Format("14-var-create - * \"{0}\"", "a + 1"));\r
-r = Expect("14^done");\r
-Assert.Equal("12", r.FindString("value"));\r
-\r
-Send("15-exec-continue");\r
-*/\r
-        }\r
-    }\r
-/*\r
-r = Expect("*stopped");\r
-Assert.Equal("exited", r.FindString("reason"));\r
-*/\r
-}\r
diff --git a/tests/LambdaTest/LambdaTest.csproj b/tests/LambdaTest/LambdaTest.csproj
deleted file mode 100644 (file)
index ce1697a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp2.0</TargetFramework>
-  </PropertyGroup>
-
-</Project>
diff --git a/tests/LambdaTest/Program.cs b/tests/LambdaTest/Program.cs
deleted file mode 100644 (file)
index 1546dfe..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
-Send("1-file-exec-and-symbols dotnet");
-Send("2-exec-arguments " + TestBin);
-
-Send(String.Format("3-break-insert -f {0}:{1}", TestSource, Lines["LAMBDAENTRY1"]));
-r = Expect("3^done");
-
-Send(String.Format("4-break-insert -f {0}:{1}", TestSource, Lines["LAMBDAENTRY2"]));
-var r = Expect("4^done");
-
-Send("5-exec-run");
-r = Expect("*stopped");
-Assert.Equal("entry-point-hit", r.FindString("reason"));
-
-Send("6-exec-continue");
-r = Expect("6^running");
-
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["LAMBDAENTRY1"], r.Find("frame").FindInt("line"));
-
-Send("7-stack-list-variables");
-r = Expect("7^done");
-ResultValue[] variables = r.Find<ValueListValue>("variables").AsArray<ResultValue>();
-Func<string, string> getVarValue = (string name) => Array.Find(variables, v => v.FindString("name") == name).FindString("value");
-
-Assert.Equal(variables.Length, 6);
-Assert.Equal("{LambdaTest.Class1.Class2}", getVarValue("this"));
-Assert.Equal("{LambdaTest.Lambda}", getVarValue("lambda2"));
-Assert.Equal("\"funcVar\"",     getVarValue("funcVar"));
-Assert.Equal("\"funcArg\"",     getVarValue("funcArg"));
-Assert.Equal("\"localVar1\"",   getVarValue("localVar1"));
-Assert.Equal("\"argVar1\"",     getVarValue("argVar1"));
-
-string [] accessibleVars1 = {
-    "staticVar1",
-    "staticVar2",
-    "instanceVar",
-    "funcVar",
-    "funcArg",
-    "localVar1",
-    "argVar1"
-};
-
-foreach (string v in accessibleVars1)
-{
-    Send(String.Format("-var-create - * \"{0}\"", v));
-    r = Expect("^done");
-    Assert.Equal($"\"{v}\"", r.FindString("value"));
-}
-
-Send("8-exec-continue");
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["LAMBDAENTRY2"], r.Find("frame").FindInt("line"));
-
-Send("9-stack-list-variables");
-r = Expect("9^done");
-variables = r.Find<ValueListValue>("variables").AsArray<ResultValue>();
-
-Assert.Equal(variables.Length, 7);
-Assert.Equal("{LambdaTest.Class1.Class2}", getVarValue("this"));
-Assert.Equal("\"funcVar\"",     getVarValue("funcVar"));
-Assert.Equal("\"funcArg\"",     getVarValue("funcArg"));
-Assert.Equal("\"localVar1\"",   getVarValue("localVar1"));
-Assert.Equal("\"argVar1\"",     getVarValue("argVar1"));
-Assert.Equal("\"localVar2\"",   getVarValue("localVar2"));
-Assert.Equal("\"argVar2\"",     getVarValue("argVar2"));
-
-string [] accessibleVars2 = {
-    "staticVar1",
-    "staticVar2",
-    "instanceVar",
-    "funcVar",
-    "funcArg",
-    "localVar1",
-    "argVar1",
-    "localVar2",
-    "argVar2"
-};
-
-foreach (string v in accessibleVars2)
-{
-    Send(String.Format("-var-create - * \"{0}\"", v));
-    r = Expect("^done");
-    Assert.Equal($"\"{v}\"", r.FindString("value"));
-}
-
-*/
-
-using System;
-namespace LambdaTest
-{
-    delegate void Lambda(string argVar);
-
-    class Class1
-    {
-        static string staticVar1 = "staticVar1";
-        class Class2
-        {
-
-            static string staticVar2 = "staticVar2";
-
-            string instanceVar = "instanceVar";
-
-            public void Func(string funcArg)
-            {
-                string funcVar = "funcVar";
-
-                Lambda lambda1 = (argVar1) => {
-                    string localVar1 = "localVar1";
-
-                    Lambda lambda2 = (argVar2) => {
-                            string localVar2 = "localVar2";
-
-                            Console.WriteLine(staticVar1); // //@LAMBDAENTRY2@
-                            Console.WriteLine(staticVar2);
-                            Console.WriteLine(instanceVar);
-                            Console.WriteLine(funcVar);
-                            Console.WriteLine(funcArg);
-                            Console.WriteLine(localVar1);
-                            Console.WriteLine(argVar1);
-                            Console.WriteLine(localVar2);
-                            Console.WriteLine(argVar2);
-                    };
-                    Console.WriteLine(staticVar1); // //@LAMBDAENTRY1@
-                    Console.WriteLine(staticVar2);
-                    Console.WriteLine(instanceVar);
-                    Console.WriteLine(funcVar);
-                    Console.WriteLine(funcArg);
-                    Console.WriteLine(localVar1);
-                    Console.WriteLine(argVar1);
-                    lambda2("argVar2");
-                };
-                lambda1("argVar1");
-            }
-        }
-
-        static void Main(string[] args)
-        {   // //@START@
-            var c = new Class2();
-            c.Func("funcArg");
-        }
-    }
-}
-
-/*
-Send("-exec-continue");
-r = Expect("*stopped");
-Assert.Equal("exited", r.FindString("reason"));
-*/
\ No newline at end of file
diff --git a/tests/README.md b/tests/README.md
deleted file mode 100644 (file)
index 4126f57..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-# Tests
-
-## Running tests
-
-By default test runner looks for debugger binary in `./bin` directory and expects `dotnet` CLI to be present in `PATH`.
-
-Test are run through dotnet CLI from the project root directory:
-```
-cd tests
-dotnet build && dotnet test runner
-```
-
-It is possible to override path to the debugger binary through `PIPE` environment variable:
-```
-cd tests
-PIPE=<path-to-debugger> dotnet test --logger "trx;LogFileName=$PWD/Results.trx"
-```
-
-`PIPE` can contain multiple shell commands, but in the end the debugger MI console should be lanched.
-
-Test results can be exported to a file with `--logger` command line option.
-
-By default test binaries are discovered recursively under project `tests` directory. When tests should be executed on another machine, environment variable `TESTDIR` can override the location of test binaries. In that case recursive search is not performed and all test binaries should be located directly under `TESTDIR`. So for `TESTDIR=/tmp` the test binary files layout shoud be:
-```
-/tmp/Example1Test.dll
-/tmp/Example1Test.pdb
-/tmp/Example2Test.dll
-/tmp/Example2Test.pdb
-...
-```
-
-Refer to `run_tests_sdb.sh` as an example of running tests on Tizen device.
-
-`TIMEOUT` environment variable overrides a default timeout (in seconds) for test's `Expect` command.
-
-## Writing new tests
-
-### Add new test
-
-Create new project under `tests` directory and add it to `tests` solution:
-```
-cd tests
-dotnet new console -o ExampleTest
-dotnet sln add ExampleTest/ExampleTest.csproj
-```
-
-Add project name as a method of `Runner.TestRunner` class in `runner/Runner.cs`:
-```
-[Fact]
-public void ExampleTest() => ExecuteTest();
-```
-
-Method name should match the project name and the name of the dll that is produced after project build.
-
-Now the ExampleTest should be displayed as available:
-```
-$ dotnet test -t
-...
-The following Tests are available:
-    ...
-    Runner.TestRunner.ExampleTest
-```
-
-### Write test scenario
-
-Test scenario should be present in comments inside TestExample/Program.cs
-
-The following example instructs the debugger to run test binary and verifies that the debugger stops at line with `@START@` tag with stop reason `entry-point-hit`:
-```
-/*
-Send("1-file-exec-and-symbols dotnet");
-Send("2-exec-arguments " + TestBin);
-Send("3-exec-run");
-
-var r = Expect("*stopped");
-Assert.Equal(r.FindString("reason"), "entry-point-hit");
-Assert.Equal(r.Find("frame").FindInt("line"), Lines["START"]);
-*/
-using System;
-
-namespace ExampleTest
-{
-    class Program
-    {
-        static void Main(string[] args)
-        { // //@START@
-            Console.WriteLine("Hello World!");
-        }
-    }
-}
-```
-
-#### Variables
-
-* `Dictionary<string, int> Lines` provides the mapping between tags `@TAGNAME@` in test source and line numbers.
-
-* `string TestSource` is a full path to test source file.
-
-* `string TestBin` is a full path to test dll file.
-
-* `int DefaultExpectTimeout` is a timeout for `Expect` operation, default value is 20 (seconds).
-
-* `ITestOutputHelper Output` is a log interface from Xunit, it contains methods like `WriteLine` etc.
-
-#### Methods
-
-* `Assert.*` are asserts from Xunit.
-
-* `void Send(string s)` sends command to the debugger process through stdin. New line is automatically appended to `s`.
-
-* `MICore.Results Expect(string s, int timeoutSec = DefaultExpectTimeout)` reads debugger output line by line and checks if some line starts with `s`. If the expected line is found then it is parsed into MI responce object `MICore.Results`. In case of timeout or invalid MI responce an exception is thrown.
-For more info about MI responce object see https://github.com/Microsoft/MIEngine/blob/master/src/MICore/MIResults.cs
-
-* `int GetCurrentLine()` provides current line number.
diff --git a/tests/SetValuesTest/SetValuesTest.cs b/tests/SetValuesTest/SetValuesTest.cs
deleted file mode 100644 (file)
index 652c994..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-/*\r
-Send("1-file-exec-and-symbols dotnet");\r
-Send("2-exec-arguments " + TestBin);\r
-Send("3-exec-run");\r
-\r
-var r = Expect("*stopped");\r
-Assert.Equal("entry-point-hit", r.FindString("reason"));\r
-\r
-Send(String.Format("4-break-insert -f {0}:{1}", TestSource, Lines["BREAK1"]));\r
-Expect("4^done");\r
-\r
-Send(String.Format("5-break-insert -f {0}:{1}", TestSource, Lines["BREAK2"]));\r
-Expect("5^done");\r
-\r
-Send("6-exec-continue");\r
-*/\r
-\r
-using System;\r
-\r
-namespace SetValuesTest\r
-{\r
-    public struct TestStruct1\r
-    {\r
-        public int val1;\r
-        public byte val2;\r
-\r
-        public TestStruct1(int v1, byte v2)\r
-        {\r
-            val1 = v1;\r
-            val2 = v2;\r
-        }\r
-    }\r
-\r
-    public struct TestStruct2\r
-    {\r
-        public int val1;\r
-        public TestStruct1 struct2;\r
-\r
-        public TestStruct2(int v1, int v2, byte v3)\r
-        {\r
-            val1 = v1;\r
-            struct2.val1 = v2;\r
-            struct2.val2 = v3;\r
-        }\r
-    }\r
-\r
-    class Program\r
-    {\r
-        static void Main(string[] args)\r
-        {               // //@START@\r
-            TestStruct2 ts = new TestStruct2(1, 5, 10); \r
-\r
-            bool testBool = false;\r
-            char testChar = 'ㅎ';\r
-            byte testByte = (byte)10;\r
-            sbyte testSByte = (sbyte)-100;\r
-            short testShort = (short)-500;\r
-            ushort testUShort = (ushort)500;\r
-            int testInt = -999999;\r
-            uint testUInt = 999999;\r
-            long testLong = -999999999;\r
-            ulong testULong = 9999999999;\r
-\r
-            decimal b = 0000001.000000000000000000000000006M;\r
-            int[] arrs = decimal.GetBits(b);\r
-            string testString = "someNewString that I'll test with";\r
-\r
-            int dummy1 = 1;            // //@BREAK1@\r
-/*\r
-r = Expect("*stopped");\r
-Assert.Equal("breakpoint-hit", r.FindString("reason"));\r
-Assert.Equal(Lines["BREAK1"], r.Find("frame").FindInt("line"));\r
-\r
-Send(String.Format("8-var-create - * \"{0}\"", "ts.struct2.val1"));\r
-r = Expect("8^done");\r
-string val1 = r.FindString("name");\r
-Send(String.Format("9-var-assign {0} \"666\"", val1));\r
-r = Expect("9^done");\r
-\r
-Send(String.Format("10-var-create - * \"{0}\"", "testBool"));\r
-r = Expect("10^done");\r
-string testBool = r.FindString("name");\r
-Send(String.Format("11-var-assign {0} \"true\"", testBool));\r
-r = Expect("11^done");\r
-\r
-Send(String.Format("12-var-create - * \"{0}\"", "testChar"));\r
-r = Expect("12^done");\r
-string testChar = r.FindString("name");\r
-Send(String.Format("13-var-assign {0} \"'a'\"", testChar));\r
-r = Expect("13^done");\r
-\r
-Send(String.Format("14-var-create - * \"{0}\"", "testByte"));\r
-r = Expect("14^done");\r
-string testByte = r.FindString("name");\r
-Send(String.Format("15-var-assign {0} \"200\"", testByte));\r
-r = Expect("15^done");\r
-\r
-Send(String.Format("16-var-create - * \"{0}\"", "testSByte"));\r
-r = Expect("16^done");\r
-string testSByte = r.FindString("name");\r
-Send(String.Format("17-var-assign {0} \"-1\"", testSByte));\r
-r = Expect("17^done");\r
-\r
-Send(String.Format("18-var-create - * \"{0}\"", "testShort"));\r
-r = Expect("18^done");\r
-string testShort = r.FindString("name");\r
-Send(String.Format("19-var-assign {0} \"-666\"", testShort));\r
-r = Expect("19^done");\r
-\r
-Send(String.Format("20-var-create - * \"{0}\"", "testUShort"));\r
-r = Expect("20^done");\r
-string testUShort = r.FindString("name");\r
-Send(String.Format("21-var-assign {0} \"666\"", testUShort));\r
-r = Expect("21^done");\r
-\r
-Send(String.Format("22-var-create - * \"{0}\"", "testInt"));\r
-r = Expect("22^done");\r
-string testInt = r.FindString("name");\r
-Send(String.Format("23-var-assign {0} \"666666\"", testInt));\r
-r = Expect("23^done");\r
-\r
-Send(String.Format("24-var-create - * \"{0}\"", "testUInt"));\r
-r = Expect("24^done");\r
-string testUInt = r.FindString("name");\r
-Send(String.Format("25-var-assign {0} \"666666\"", testUInt));\r
-r = Expect("25^done");\r
-\r
-Send(String.Format("26-var-create - * \"{0}\"", "testLong"));\r
-r = Expect("26^done");\r
-string testLong = r.FindString("name");\r
-Send(String.Format("27-var-assign {0} \"-666666666\"", testLong));\r
-r = Expect("27^done");\r
-\r
-Send(String.Format("28-var-create - * \"{0}\"", "testULong"));\r
-r = Expect("28^done");\r
-string testULong = r.FindString("name");\r
-Send(String.Format("29-var-assign {0} \"666666666\"", testULong));\r
-r = Expect("29^done");\r
-\r
-Send(String.Format("30-var-create - * \"{0}\"", "b"));\r
-r = Expect("30^done");\r
-string b = r.FindString("name");\r
-Send(String.Format("31-var-assign {0} \"-1.000000000000000000000017M\"", b));\r
-r = Expect("31^done");\r
-\r
-Send(String.Format("32-var-create - * \"{0}\"", "testString"));\r
-r = Expect("32^done");\r
-string testString = r.FindString("name");\r
-Send(String.Format("33-var-assign {0} \"\"edited string\"\"", testString));\r
-r = Expect("33^done");\r
-Send("34-exec-continue");\r
-*/\r
-                 int dummy2 = 2;         // //@BREAK2@\r
-/*\r
-r = Expect("*stopped");\r
-Assert.Equal("breakpoint-hit", r.FindString("reason"));\r
-Assert.Equal(Lines["BREAK2"], r.Find("frame").FindInt("line"));\r
-\r
-Send(String.Format("35-var-create - * \"{0}\"", "ts.struct2"));\r
-r = Expect("35^done");\r
-string struct2 = r.FindString("name");\r
-Send(String.Format("36-var-list-children --simple-values \"{0}\"", struct2));\r
-r = Expect("36^done");\r
-string val = r.Find("children").Find("child").FindString("value");\r
-Assert.Equal("666", val);\r
-\r
-\r
-\r
-\r
-\r
-\r
-Send(String.Format("37-var-create - * \"{0}\"", "testBool"));\r
-r = Expect("37^done");\r
-Assert.Equal(r.FindString("value"), "true");\r
-\r
-Send(String.Format("38-var-create - * \"{0}\"", "testChar"));\r
-r = Expect("38^done");\r
-Assert.Equal(r.FindString("value"), "97 \'a\'");\r
-\r
-Send(String.Format("39-var-create - * \"{0}\"", "testByte"));\r
-r = Expect("39^done");\r
-Assert.Equal(r.FindString("value"), "200");\r
-\r
-Send(String.Format("40-var-create - * \"{0}\"", "testSByte"));\r
-r = Expect("40^done");\r
-Assert.Equal(r.FindString("value"), "-1");\r
-\r
-Send(String.Format("41-var-create - * \"{0}\"", "testShort"));\r
-r = Expect("41^done");\r
-Assert.Equal(r.FindString("value"), "-666");\r
-\r
-Send(String.Format("42-var-create - * \"{0}\"", "testUShort"));\r
-r = Expect("42^done");\r
-Assert.Equal(r.FindString("value"), "666");\r
-\r
-Send(String.Format("43-var-create - * \"{0}\"", "testInt"));\r
-r = Expect("43^done");\r
-Assert.Equal(r.FindString("value"), "666666");\r
-\r
-Send(String.Format("44-var-create - * \"{0}\"", "testUInt"));\r
-r = Expect("44^done");\r
-Assert.Equal(r.FindString("value"), "666666");\r
-\r
-Send(String.Format("45-var-create - * \"{0}\"", "testLong"));\r
-r = Expect("45^done");\r
-Assert.Equal(r.FindString("value"), "-666666666");\r
-\r
-Send(String.Format("46-var-create - * \"{0}\"", "testULong"));\r
-r = Expect("46^done");\r
-Assert.Equal(r.FindString("value"), "666666666");\r
-\r
-Send(String.Format("47-var-create - * \"{0}\"", "b"));\r
-r = Expect("47^done");\r
-Assert.Equal(r.FindString("value"), "-1.000000000000000000000017");\r
-\r
-Send(String.Format("48-var-create - * \"{0}\"", "testString"));\r
-r = Expect("48^done");\r
-Assert.Equal(r.FindString("value"), "\"edited string\"");\r
-\r
-*/\r
-        }\r
-    }\r
-}\r
-/*\r
-Send("49-exec-continue");\r
-r = Expect("*stopped");\r
-Assert.Equal("exited", r.FindString("reason"));\r
-*/\r
diff --git a/tests/SetValuesTest/SetValuesTest.csproj b/tests/SetValuesTest/SetValuesTest.csproj
deleted file mode 100644 (file)
index 8e047a0..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">\r
-\r
-  <PropertyGroup>\r
-    <OutputType>Exe</OutputType>\r
-    <TargetFramework>netcoreapp2.0</TargetFramework>\r
-  </PropertyGroup>\r
-\r
-</Project>\r
diff --git a/tests/SimpleSteppingTest/SimpleSteppingTest.cs b/tests/SimpleSteppingTest/SimpleSteppingTest.cs
deleted file mode 100644 (file)
index 91c282d..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-Send("1-file-exec-and-symbols dotnet");
-Send("2-exec-arguments " + TestBin);
-Send("3-exec-run");
-
-var r = Expect("*stopped");
-Assert.Equal(r.FindString("reason"), "entry-point-hit");
-Assert.Equal(r.Find("frame").FindInt("line"), Lines["START"]);
-
-Send("4-exec-step");
-r = Expect("*stopped");
-Assert.Equal(r.FindString("reason"), "end-stepping-range");
-Assert.Equal(r.Find("frame").FindInt("line"), Lines["STEP1"]);
-
-Send("5-exec-step");
-r = Expect("*stopped");
-Assert.Equal(r.FindString("reason"), "end-stepping-range");
-Assert.Equal(r.Find("frame").FindInt("line"), Lines["STEP2"]);
-
-Send("6-gdb-exit");
-*/
-
-using System;
-
-namespace simple_stepping
-{
-    class Program
-    {
-        static void Main(string[] args)
-        {                                      // //@START@
-            Console.WriteLine("Hello World!"); // //@STEP1@
-        }                                      // //@STEP2@
-    }
-}
diff --git a/tests/SimpleSteppingTest/SimpleSteppingTest.csproj b/tests/SimpleSteppingTest/SimpleSteppingTest.csproj
deleted file mode 100644 (file)
index ce1697a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp2.0</TargetFramework>
-  </PropertyGroup>
-
-</Project>
diff --git a/tests/ValuesTest/ValuesTest.cs b/tests/ValuesTest/ValuesTest.cs
deleted file mode 100644 (file)
index 0a7e63b..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-Send("1-file-exec-and-symbols dotnet");
-Send("2-exec-arguments " + TestBin);
-Send("3-exec-run");
-
-var r = Expect("*stopped");
-Assert.Equal("entry-point-hit", r.FindString("reason"));
-Assert.Equal(Lines["START"], r.Find("frame").FindInt("line"));
-
-Send(String.Format("4-break-insert -f {0}:{1}", TestSource, Lines["BREAK"]));
-Expect("4^done");
-
-Send("5-exec-continue");
-*/
-
-using System;
-
-namespace values
-{
-    class Program
-    {
-        static void Main(string[] args)
-        {              // //@START@
-            decimal d = 12345678901234567890123456m;
-            decimal long_zero_dec = 0.00000000000000000017M;
-            decimal short_zero_dec = 0.17M;
-            string 测试 = "电视机"; // //Chinese named variable
-            int x = 1; // //@BREAK@
-            /*
-r = Expect("*stopped");
-Assert.Equal("breakpoint-hit", r.FindString("reason"));
-Assert.Equal(Lines["BREAK"], r.Find("frame").FindInt("line"));
-
-Send(String.Format("6-var-create - * \"{0}\"", "d"));
-r = Expect("6^done");
-Assert.Equal("12345678901234567890123456", r.FindString("value"));
-Assert.Equal("d", r.FindString("exp"));
-Assert.Equal("0", r.FindString("numchild"));
-Assert.Equal("decimal", r.FindString("type"));
-
-Send(String.Format("7-var-create 8 * \"{0}\"", "long_zero_dec"));
-r = Expect("7^done");
-Assert.Equal("0.00000000000000000017", r.FindString("value"));
-
-Send(String.Format("8-var-create 8 * \"{0}\"", "short_zero_dec"));
-r = Expect("8^done");
-Assert.Equal("0.17", r.FindString("value"));
-
-Send(String.Format("9-var-create - * \"{0}\"", "测试"));
-r = Expect("9^done");
-Assert.Equal("\"电视机\"", r.FindString("value"));
-
-Send(String.Format("99-var-create - * \"{0}\"", "测试 + 测试"));
-r = Expect("99^done");
-Assert.Equal("\"电视机电视机\"", r.FindString("value"));
-             */
-        }
-    }
-}
-/*
-Send("10-exec-continue");
-r = Expect("*stopped");
-Assert.Equal("exited", r.FindString("reason"));
-*/
diff --git a/tests/ValuesTest/ValuesTest.csproj b/tests/ValuesTest/ValuesTest.csproj
deleted file mode 100644 (file)
index ce1697a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp2.0</TargetFramework>
-  </PropertyGroup>
-
-</Project>
diff --git a/tests/cli/.gitignore b/tests/cli/.gitignore
deleted file mode 100644 (file)
index 253c319..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-bin
-obj
-*.sw*
diff --git a/tests/cli/Makefile b/tests/cli/Makefile
deleted file mode 100644 (file)
index 410d944..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-
-.PHONY: all clean
-all:
-       dotnet build -c Debug
-
-clean:
-       rm -rf bin obj
diff --git a/tests/cli/README.md b/tests/cli/README.md
deleted file mode 100644 (file)
index a4f1ef0..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-This directory contains test program used to test "cli" interface of netcoredbg.
-
-```
-Usage: corerun test.dll <function> [args...]
-Function should be one of the following:
-assert     -- call Debug.Assert
-fail       -- call Debug.Fail
-null       -- cause NullReferenceException
-range      -- cause IndexOutOfRange exception
-key        -- cause KeyNotFound exception
-overflow   -- cause OverflowException
-sigsegv    -- cause SIGSEGV signal
-exception  -- throw and catch test exception
-task       -- run test task
-delegate   -- call function via delegate
-wait       -- wait for input from stdin
-vars       -- test variables in debugger (break test.cs:100)
-function   -- test breakpoints in debugger (break test.cs:30
-output     -- test stdout/stderr/debug output
-```
-
diff --git a/tests/cli/test.cs b/tests/cli/test.cs
deleted file mode 100644 (file)
index 0185bca..0000000
+++ /dev/null
@@ -1,337 +0,0 @@
-/* vim: set ts=4 sw=4 sts=4 et ai: */
-
-using System;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Diagnostics;
-using System.Runtime.Serialization;
-using System.Runtime.Serialization.Formatters.Binary;
-using System.Collections.Generic;
-using System.Text;
-using System.IO;
-
-namespace Test
-{
-    static class Program
-    {
-        static public string get_caller_info()
-        {
-            StackFrame callStack = new StackFrame(1, true);
-            return callStack.GetFileName() + ":" + (callStack.GetFileLineNumber() + 1);
-        }
-
-        static public string function(int v)
-        {
-            if (v != 0) Console.WriteLine("function entry");
-
-            if (v == 0) return get_caller_info();
-
-            v += 1;
-            Console.WriteLine("function leave");
-            return "";
-        }
-
-        static public int consume(string s)
-        {
-            return s.Length;
-        }
-
-        static public int vars(string a1, ref int a2, int a3)
-        {
-            ushort us = 0xcafe;
-            short s1 = 0x1ace, s2 = (short)us;
-            uint u = 0xfeedca75;
-            int i1 = 0x1ead1e55, i2 = (int)u;
-            ulong ul = 0xfee1900dc0cac01a;
-            long l1 = 0x10aded1e55f001ed,  l2 = (long)ul;
-            string s = "test string";
-            char c = 'a';
-            byte ub = 0xa5;
-            sbyte b1 = 0x5a, b2 = (sbyte)ub;
-            bool t = true, f = false;
-            float F = 3.141592654F;
-            double D = 2.71828D;
-            decimal L = 123456789.123456789M;
-
-            Console.WriteLine("us={0}, s1={1}, s2={2}, u={3}, i1={4}, i2={5}",
-                                us, s1, s2, u, i1, i2);
-            
-            Console.WriteLine("ul={0}, l1={1}, l2={2}", ul, l1, l2);
-
-            Console.WriteLine("s={0}, c={1}, ub={2}, b1={3}, b2={4}, t={5}, f={6}",
-                                s, c, ub, b1, b2, t, f);
-
-            Console.WriteLine("f={0}, d={1}, L={2}", F, D, L);
-
-            Console.WriteLine("a1={0}, a2={1}, a3={2}", a1, a2, a3);
-
-            Console.WriteLine("sv={0}", sv);
-
-            Debug.Fail("examine variables");
-
-            return consume(s + c + us + s1 + u + i1 + i2 + ul + l1 + l1 + ub + b1 + b2 + t + f + F + D + L);
-        }
-
-
-        static long sv = 0x1eadf1ee7;
-        volatile static int zero = 0, one = 1;
-
-        class Except : Exception
-        {
-            public Except(string msg): base(msg) {}
-        }
-
-        static void task()
-        {
-            System.Threading.Thread.Sleep(3000);
-        }
-
-        delegate void Delegate(string msg);
-
-        static void delegate_impl(string msg)
-        {
-            Console.WriteLine("delegate: {0}", msg);
-        }
-
-        static void call_delegate(Delegate func)
-        {
-            func("test");
-        }
-
-        static public void consume(Object obj)
-        {
-            using (var devnull = new FileStream("/dev/null", FileMode.Append)) {
-                new BinaryFormatter().Serialize(devnull,(obj));
-            }
-        }
-
-        static void stdout_test(int len)
-        {
-            // using fixed seed (need reproducible result for testing)
-            int send = 0;
-            Random rnd = new Random(0);
-            StringBuilder str = new StringBuilder();
-            while (send < len)
-            {
-                int left = len - send;
-                int size = rnd.Next(1, len / 10);
-                if (size > left) size = left;
-                
-                str.Clear();
-                string dlm = "";
-                while (str.Length < size)
-                {
-                    str.AppendFormat("{0}{1}", dlm, size);
-                    dlm = " ";
-                }
-
-                str.Length = size;
-                Console.WriteLine(str);
-                send += str.Length;
-            }
-        }
-
-        static int fib(int x)
-        {
-            int y = x - 1;
-            int z = x - 2;
-            if (x == 0) {
-                System.Diagnostics.Debugger.Break();
-                return 0;
-            }
-            else if (x == 1)
-                return 1;
-            else
-                return fib(y) + fib(z);
-        }
-
-        static void Main(string[] args)
-        {
-            Thread.CurrentThread.Name = "main (test)";
-
-            if (args.Length == 0)
-            {
-                Console.WriteLine("Usage: {0} <function> [args...]", Environment.CommandLine);
-                Console.WriteLine(String.Join(Environment.NewLine,
-                    "Function should be one of the following:",
-                    "assert      -- call Diagnostics.Debug.Assert",
-                    "fail        -- call Diagnostics.Debug.Fail",
-                    "break       -- call Diagnostics.Debugger.Break (deep stack)",
-                    "log         -- call Diagnostics.Debugger.Log",
-                    "null        -- cause ArgumentNullException",
-                    "range       -- cause IndexOutOfRangeException",
-                    "key         -- cause KeyNotFoundException",
-                    "overflow    -- cause OverflowException",
-                    "sigsegv     -- cause SIGSEGV signal (NullReferenceException)",
-                    "exception   -- throw and catch test exception",
-                    "task        -- run test task",
-                    "delegate    -- call function via delegate",
-                    "wait        -- wait for input from stdin",
-                    "vars        -- test variables in debugger",
-                    "function    -- test breakpoints in debugger",
-                    "output      -- test stdout/stderr/debug output",
-                    "print [len] -- print len bytes to stdout (1MByte default)",
-                    "echo [text] -- print 'text' (or read lines from stdin and print)"
-                    "sleep [sec] -- sleep (default is infinite)"
-                ));
-                Console.WriteLine("");
-                Console.WriteLine("breakpoint location: Test::Program::function at {0}", function(0));
-                Environment.Exit(0);
-            }
-
-            switch (args[0])
-            {
-            case "assert":
-                System.Diagnostics.Debug.Assert(false, "calling Debug.Assert");
-                break;
-
-            case "fail":
-                System.Diagnostics.Debug.Fail("calling Debug.Fail");
-                break;
-
-            case "break":
-                fib(20);
-                break;
-
-            case "log":
-                System.Diagnostics.Debugger.Log(0, null, "Test log message 1");
-                System.Diagnostics.Debugger.Log(1, "category", "Test log message 2");
-                break;
-
-            case "null":
-                consume(null);
-                break;
-
-            case "range": 
-                {
-                var v = new int[1];
-                consume(v[one]);
-                }
-                break;
-
-            case "key":
-                {
-                var v = new SortedList<int, int>();
-                consume(v[zero]);
-                }
-                break;
-
-            case "overflow":
-                {
-                int v = Int32.MaxValue;
-                checked {
-                    v += one;
-                }
-                }
-                break;
-
-            case "sigsegv":
-                {
-                int x = 1;
-                unsafe {
-                    int *i = (int*)zero;
-                    x = *i;
-                    consume(*i);
-                }
-                }
-                break;
-
-            case "exception":
-                try {
-                    throw (new Except("test exception"));
-                }
-                catch (Except e) {
-                    Console.WriteLine("caught: {0}", e.Message);
-                }
-                break;
-
-            case "task":
-                {
-                Task task = Task.Run(() => Test.Program.task());
-                task.Wait();
-                }
-                break;
-
-            case "delegate":
-                {
-                Delegate func = delegate_impl;
-                call_delegate(func);
-                }
-                break;
-
-            case "wait":
-                Console.ReadLine();
-                break;
-
-            case "vars":
-                {
-                int ref_i = 42;
-                vars("func-test", ref ref_i, 43);
-                }
-                break;
-
-            case "function":
-                function(42);
-                break;
-
-            case "output":
-                Console.WriteLine("stdout output line 1");
-                Console.Error.WriteLine("stderr output line 1");
-                Debug.WriteLine("Debug.WriteLine message line 1");
-                System.Diagnostics.Debugger.Log(0, null, "log message 1\n");
-                Console.WriteLine("stdout output line 2");
-                Console.Error.WriteLine("stderr output line 2");
-                Debug.WriteLine("Debug.WriteLine message line 2");
-                System.Diagnostics.Debugger.Log(0, null, "log message 2\n");
-                break;
-
-            case "print":
-                {
-                int len = 1024*1024;
-                if (args.Length > 1)
-                    len = Int32.Parse(args[1]);
-                stdout_test(len);
-                }
-                break;
-
-            case "echo":
-                {
-                if (args.Length > 1) {
-                    Console.WriteLine(args[1]);
-                    break;
-                }
-
-                try {
-                    string s;
-                    while (true)
-                    {
-                        s = Console.ReadLine();
-                        if (s == null) break;
-                        Console.WriteLine(s);
-                    }
-                }
-                catch (IOException e)
-                {
-                    Console.Error.WriteLine(e.GetType().Name);
-                }
-                }
-                break;
-
-            case "sleep":
-                {
-                int sec = 86400;
-                if (args.Length > 1)
-                    sec = Int32.Parse(args[1]);
-                System.Threading.Thread.Sleep(sec * 1000);
-                }
-                break;
-
-            default:
-                Console.Error.WriteLine("Wrong argument ({0})", args[0]);
-                Environment.Exit(1);
-                break;
-            }
-        }
-    }
-}
-
diff --git a/tests/cli/test.csproj b/tests/cli/test.csproj
deleted file mode 100644 (file)
index c1b61bb..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>netcoreapp3.1</TargetFramework>
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-  </PropertyGroup>
-
-</Project>
diff --git a/tests/run_tests_sdb.sh b/tests/run_tests_sdb.sh
deleted file mode 100755 (executable)
index 23a48f5..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/sh
-
-SDB=${SDB:-sdb}
-
-GBSROOT=$HOME/GBS-ROOT
-TOOLS_ABS_PATH=/home/owner/share/tmp/sdk_tools
-
-SCRIPTDIR=$(dirname $(readlink -f $0))
-
-# Detect target arch
-
-if   $SDB shell lscpu | grep -q armv7l; then ARCH=armv7l; 
-elif $SDB shell lscpu | grep -q i686;   then ARCH=i686;
-else echo "Unknown target architecture"; exit 1; fi
-
-# The following command assumes that GBS build was performed on a clean system (or in Docker),
-# which means only one such file exists.
-RPMFILE=$(find $GBSROOT/local/repos/ -type f -name netcoredbg-[0-9]\*$ARCH.rpm -print -quit)
-
-# Repackage RPM file as TGZ
-
-if [ ! -f "$RPMFILE" ]; then echo "Debugger RPM not found"; exit 1; fi
-PKGNAME=`rpm -q --qf "%{n}" -p $RPMFILE`
-PKGVERSION=`rpm -q --qf "%{v}" -p $RPMFILE`
-PKGARCH=`rpm -q --qf "%{arch}" -p $RPMFILE`
-TARGZNAME=$PKGNAME-$PKGVERSION-$PKGARCH.tar.gz
-if [ -d "$SCRIPTDIR/unpacked" ]; then rm -rf "$SCRIPTDIR/unpacked"; fi
-mkdir "$SCRIPTDIR/unpacked" && cd "$SCRIPTDIR/unpacked"
-rpm2cpio "$RPMFILE" | cpio -idmv
-touch .$TOOLS_ABS_PATH/$PKGNAME/version-$PKGVERSION
-tar cfz ../$TARGZNAME --owner=root --group=root -C .$TOOLS_ABS_PATH .
-cd ..
-
-# Upload TGZ to target and unpack
-
-REMOTETESTDIR=$TOOLS_ABS_PATH/netcoredbg-tests
-
-$SDB root on
-$SDB shell rm -rf "$TOOLS_ABS_PATH/netcoredbg"
-$SDB shell mkdir -p $TOOLS_ABS_PATH/on-demand
-$SDB push $TARGZNAME $TOOLS_ABS_PATH/on-demand
-$SDB shell "cd $TOOLS_ABS_PATH && tar xf $TOOLS_ABS_PATH/on-demand/$(basename $TARGZNAME)"
-$SDB shell rm -rf "$REMOTETESTDIR"
-$SDB shell mkdir $REMOTETESTDIR
-
-# Upload all test dlls and pdbs
-
-find "$SCRIPTDIR" -name '*Test.runtimeconfig.json' | while read fname; do
-  base=$(echo $fname | rev | cut -f 3- -d '.' | rev)
-  $SDB push ${base}.dll ${base}.pdb $REMOTETESTDIR
-done
-
-$SDB shell "echo -e '#!/bin/sh\nexec /lib/ld-linux.so.* /usr/share/dotnet/corerun --clr-path /usr/share/dotnet.tizen/netcoreapp \$@' > $REMOTETESTDIR/dotnet"
-$SDB shell chmod +x $REMOTETESTDIR/dotnet
-
-# Run tests
-
-DEBUGGER=$TOOLS_ABS_PATH/netcoredbg/netcoredbg
-
-# sdb always allocates a terminal for a shell command, but we do not want MI commands to be echoed.
-# So we need to delay stdin by 1 second and hope that `stty raw -echo` turns the echo off during the delay.
-TESTDIR=$REMOTETESTDIR PIPE="(sleep 1; cat) | $SDB shell stty raw -echo\\; export PATH=\$PATH:$TOOLS_ABS_PATH/netcoredbg-tests\\; $DEBUGGER --log=file --interpreter=mi" dotnet test "$SCRIPTDIR" --logger "trx;LogFileName=$SCRIPTDIR/Results.trx"
diff --git a/tests/runner/MIException.cs b/tests/runner/MIException.cs
deleted file mode 100644 (file)
index 75e97b5..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright (c) Microsoft. All rights reserved.
-// Licensed under the MIT license. See LICENSE file in the project root for full license information.
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Globalization;
-
-namespace MICore
-{
-    public class MIException : Exception
-    {
-        public MIException(int hr)
-        {
-            this.HResult = hr;
-        }
-
-        public MIException(int hr, Exception innerException)
-            : base(string.Empty, innerException)
-        {
-        }
-    }
-
-    public class MIResultFormatException : MIException
-    {
-        private const int COMQC_E_BAD_MESSAGE = unchecked((int)0x80110604);
-        public readonly string Field;
-        public ResultValue Result;
-
-        public MIResultFormatException(string field, ResultValue value)
-            : base(COMQC_E_BAD_MESSAGE)
-        {
-            Field = field;
-            Result = value;
-        }
-
-        public MIResultFormatException(string field, ResultValue value, Exception innerException)
-            : base(COMQC_E_BAD_MESSAGE, innerException)
-        {
-            Field = field;
-            Result = value;
-        }
-
-        public override string Message
-        {
-            get
-            {
-                string message = string.Format(CultureInfo.CurrentCulture, "Unrecognized format of field \"{0}\" in result: {1}", Field, Result.ToString());
-                return message;
-            }
-        }
-    }
-
-    public class UnexpectedMIResultException : MIException
-    {
-        // We want to have a message which is vaguely reasonable if it winds up getting converted to an HRESULT. So
-        // we will use take this one.
-        //    MessageId: COMQC_E_BAD_MESSAGE
-        //
-        //    MessageText:
-        //      The message is improperly formatted or was damaged in transit
-        private const int COMQC_E_BAD_MESSAGE = unchecked((int)0x80110604);
-        private readonly string _debuggerName;
-        private readonly string _command;
-        private readonly string _miError;
-
-        /// <summary>
-        /// Creates a new UnexpectedMIResultException
-        /// </summary>
-        /// <param name="debuggerName">[Required] Name of the underlying MI debugger (ex: 'GDB')</param>
-        /// <param name="command">[Required] MI command that was issued</param>
-        /// <param name="mi">[Optional] Error message from MI</param>
-        public UnexpectedMIResultException(string debuggerName, string command, string mi) : base(COMQC_E_BAD_MESSAGE)
-        {
-            _debuggerName = debuggerName;
-            _command = command;
-            _miError = mi;
-        }
-
-        public override string Message
-        {
-            get
-            {
-                string message = string.Format(CultureInfo.CurrentCulture, "Unexpected {0} output from command \"{1}\".", _debuggerName, _command);
-                if (!string.IsNullOrWhiteSpace(_miError))
-                {
-                    message = string.Concat(message, " ", _miError);
-                }
-
-                return message;
-            }
-        }
-
-        public string MIError
-        {
-            get { return _miError; }
-        }
-    }
-
-    public class MIDebuggerInitializeFailedException : Exception
-    {
-        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes")]
-        public readonly IReadOnlyList<string> OutputLines;
-        private readonly string _debuggerName;
-        private readonly IReadOnlyList<string> _errorLines;
-        private string _message;
-
-        public MIDebuggerInitializeFailedException(string debuggerName, IReadOnlyList<string> errorLines, IReadOnlyList<string> outputLines)
-        {
-            this.OutputLines = outputLines;
-            _debuggerName = debuggerName;
-            _errorLines = errorLines;
-        }
-
-        public override string Message
-        {
-            get
-            {
-                if (_message == null)
-                {
-                    if (_errorLines.Any(x => !string.IsNullOrWhiteSpace(x)))
-                    {
-                        _message = string.Format(CultureInfo.InvariantCulture, "Unable to establish a connection to {0}. The following message was written to stderr:\n\n{1}\n\nSee Output Window for details.", _debuggerName, string.Join("\r\n", _errorLines));
-                    }
-                    else
-                    {
-                        _message = string.Format(CultureInfo.InvariantCulture, "Unable to establish a connection to {0}. Debug output may contain more information.", _debuggerName);
-                    }
-                }
-
-                return _message;
-            }
-        }
-    }
-}
diff --git a/tests/runner/MIResults.cs b/tests/runner/MIResults.cs
deleted file mode 100644 (file)
index 1af663a..0000000
+++ /dev/null
@@ -1,1255 +0,0 @@
-// Copyright (c) Microsoft. All rights reserved.
-// Licensed under the MIT license. See LICENSE file in the project root for full license information.
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Diagnostics;
-using System.Collections;
-using System.Globalization;
-
-namespace MICore
-{
-    /// <summary>
-    /// Prefix from the output indicating the class of result. According to the documentation, these are:
-    ///
-    ///    result-class ==> "done" | "running" | "connected" | "error" | "exit" | "stopped"
-    /// </summary>
-    public enum ResultClass
-    {
-        /// <summary>
-        /// ResultClass is not set
-        /// </summary>
-        None,
-
-        done,
-        running,
-        connected,
-        error,
-        exit,
-        stopped
-    }
-
-    public class ResultValue
-    {
-        public virtual ResultValue Find(string name)
-        {
-            throw new MIResultFormatException(name, this);
-        }
-
-        public virtual bool TryFind(string name, out ResultValue result)
-        {
-            if (Contains(name))
-            {
-                result = Find(name);
-            }
-            else
-            {
-                result = null;
-            }
-            return result != null;
-        }
-
-        public virtual bool Contains(string name)
-        {
-            return false;
-        }
-
-        public ConstValue FindConst(string name)
-        {
-            return Find<ConstValue>(name);
-        }
-
-        public int FindInt(string name)
-        {
-            try
-            {
-                return FindConst(name).ToInt;
-            }
-            catch (MIResultFormatException)
-            {
-                throw;
-            }
-            catch (Exception e)
-            {
-                throw new MIResultFormatException(name, this, e);
-            }
-        }
-        public uint FindUint(string name)
-        {
-            try
-            {
-                return FindConst(name).ToUint;
-            }
-            catch (MIResultFormatException)
-            {
-                throw;
-            }
-            catch (Exception e)
-            {
-                throw new MIResultFormatException(name, this, e);
-            }
-        }
-
-        /// <summary>
-        /// Try to find a uint property. Throws if the property can be found but is not a uint.
-        /// </summary>
-        /// <param name="name">[Required] name of the property to search for</param>
-        /// <returns>The value of the property or null if it cannot be found</returns>
-        public uint? TryFindUint(string name)
-        {
-            ConstValue c;
-            if (!TryFind(name, out c))
-            {
-                return null;
-            }
-
-            try
-            {
-                return c.ToUint;
-            }
-            catch (OverflowException)
-            {
-                return null;
-            }
-            catch (MIResultFormatException)
-            {
-                throw;
-            }
-            catch (Exception e)
-            {
-                throw new MIResultFormatException(name, this, e);
-            }
-        }
-
-        public ulong FindAddr(string name)
-        {
-            try
-            {
-                return FindConst(name).ToAddr;
-            }
-            catch (MIResultFormatException)
-            {
-                throw;
-            }
-            catch (Exception e)
-            {
-                throw new MIResultFormatException(name, this, e);
-            }
-        }
-
-        /// <summary>
-        /// Try and find an address property. Returns null if there is no property. Will throw if that property exists but it is not an address.
-        /// </summary>
-        /// <param name="name">[Required] Name of the property to look for</param>
-        /// <returns>The value of the address or null if it can't be found</returns>
-        public ulong? TryFindAddr(string name)
-        {
-            ConstValue c;
-            if (!TryFind(name, out c))
-            {
-                return null;
-            }
-
-            try
-            {
-                return c.ToAddr;
-            }
-            catch (MIResultFormatException)
-            {
-                throw;
-            }
-            catch (Exception e)
-            {
-                throw new MIResultFormatException(name, this, e);
-            }
-        }
-
-
-        public string FindString(string name)
-        {
-            return FindConst(name).AsString;
-        }
-
-        public string TryFindString(string name)
-        {
-            ConstValue c;
-            if (!TryFind(name, out c))
-            {
-                return string.Empty;
-            }
-            return c.AsString;
-        }
-
-        public T Find<T>(string name) where T : ResultValue
-        {
-            var c = Find(name);
-            if (c is T)
-            {
-                return c as T;
-            }
-            throw new MIResultFormatException(name, this);
-        }
-
-        public ResultListValue FindResultListValue(string name)
-        {
-            var c = Find(name);
-            if (c is ResultListValue)
-            {
-                return c as ResultListValue;
-            }
-            throw new MIResultFormatException(name, this);
-        }
-
-        public bool TryFind<T>(string name, out T result) where T : ResultValue
-        {
-            if (Contains(name))
-            {
-                result = Find(name) as T;
-            }
-            else
-            {
-                result = null;
-            }
-            return result != null;
-        }
-
-        public T TryFind<T>(string name) where T : ResultValue
-        {
-            T result;
-            if (!TryFind(name, out result))
-            {
-                return null;
-            }
-            return result;
-        }
-    }
-
-    public class ConstValue : ResultValue
-    {
-        public readonly string Content;
-
-        public ConstValue(string str)
-        {
-            Content = str ?? string.Empty;
-        }
-
-        public static ulong ParseAddr(string addr, bool throwOnError = false)
-        {
-            ulong res = 0;
-            if (string.IsNullOrEmpty(addr))
-            {
-                if (throwOnError)
-                {
-                    throw new ArgumentNullException();
-                }
-                return 0;
-            }
-            else if (addr.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
-            {
-                if (throwOnError)
-                {
-                    res = ulong.Parse(addr.Substring(2), System.Globalization.NumberStyles.HexNumber, CultureInfo.InvariantCulture);
-                }
-                else
-                {
-                    ulong.TryParse(addr.Substring(2), System.Globalization.NumberStyles.HexNumber, CultureInfo.InvariantCulture, out res);
-                }
-            }
-            else
-            {
-                if (throwOnError)
-                {
-                    res = ulong.Parse(addr, System.Globalization.NumberStyles.Integer, CultureInfo.InvariantCulture);
-                }
-                else
-                {
-                    ulong.TryParse(addr, System.Globalization.NumberStyles.Integer, CultureInfo.InvariantCulture, out res);
-                }
-            }
-            return res;
-        }
-
-        public static uint ParseUint(string str, bool throwOnError = false)
-        {
-            uint value = 0;
-            if (string.IsNullOrEmpty(str))
-            {
-                if (throwOnError)
-                {
-                    throw new ArgumentException();
-                }
-                return value;
-            }
-            else if (str.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
-            {
-                if (throwOnError)
-                {
-                    value = uint.Parse(str.Substring(2), System.Globalization.NumberStyles.HexNumber, CultureInfo.InvariantCulture);
-                }
-                else
-                {
-                    uint.TryParse(str.Substring(2), System.Globalization.NumberStyles.HexNumber, CultureInfo.InvariantCulture, out value);
-                }
-            }
-            else
-            {
-                if (throwOnError)
-                {
-                    value = uint.Parse(str, System.Globalization.NumberStyles.Integer, CultureInfo.InvariantCulture);
-                }
-                else
-                {
-                    uint.TryParse(str, System.Globalization.NumberStyles.Integer, CultureInfo.InvariantCulture, out value);
-                }
-            }
-            return value;
-        }
-
-        public ulong ToAddr
-        {
-            get
-            {
-                return ParseAddr(Content, throwOnError: true);
-            }
-        }
-        public int ToInt
-        {
-            get
-            {
-                return int.Parse(Content, CultureInfo.InvariantCulture);
-            }
-        }
-        public uint ToUint
-        {
-            get
-            {
-                return ParseUint(Content, throwOnError: true);
-            }
-        }
-
-        public string AsString
-        {
-            get
-            {
-                return Content;
-            }
-        }
-
-        public override string ToString()
-        {
-            return Content;
-        }
-    }
-
-    [DebuggerDisplay("{DisplayValue,nq}", Name = "{Name,nq}")]
-    [DebuggerTypeProxy(typeof(NamedResultValueTypeProxy))]
-    public class NamedResultValue
-    {
-        internal class NamedResultValueTypeProxy
-        {
-            private ResultValue _value;
-            public NamedResultValueTypeProxy(NamedResultValue namedResultValue)
-            {
-                _value = namedResultValue.Value;
-            }
-
-            [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
-            public NamedResultValue[] Content
-            {
-                get
-                {
-                    List<NamedResultValue> values = null;
-
-                    if (_value is ValueListValue)
-                    {
-                        var valueListValue = (ValueListValue)_value;
-                        values = new List<NamedResultValue>(valueListValue.Length);
-                        for (int i = 0; i < valueListValue.Length; i++)
-                        {
-                            string name = string.Format(CultureInfo.InvariantCulture, "[{0}]", i); // fake the [0], [1], [2], etc...
-                            values.Add(new NamedResultValue(name, valueListValue.Content[i]));
-                        }
-                    }
-                    else if (_value is ResultListValue)
-                    {
-                        var resultListValue = (ResultListValue)_value;
-                        var namedResultValues = resultListValue.Content.Select(value => new NamedResultValue(value));
-                        values = new List<NamedResultValue>(namedResultValues);
-                    }
-                    else if (_value is TupleValue)
-                    {
-                        var tupleValue = (TupleValue)_value;
-                        values = new List<NamedResultValue>(tupleValue.Content.Count);
-                        tupleValue.Content.ForEach((namedResultValue) =>
-                        {
-                            values.Add(new NamedResultValue(namedResultValue.Name, namedResultValue.Value));
-                        });
-                    }
-
-                    return values?.ToArray();
-                }
-            }
-        }
-
-        public string Name { get; private set; }
-        public ResultValue Value { get; private set; }
-
-        public NamedResultValue(string name, ResultValue value)
-        {
-            this.Name = name;
-            this.Value = value;
-        }
-
-        public NamedResultValue(NamedResultValue namedResultValue) : this(namedResultValue.Name, namedResultValue.Value)
-        {
-        }
-
-        internal string DisplayValue
-        {
-            get
-            {
-                if (this.Value is ConstValue)
-                {
-                    return string.Format(CultureInfo.InvariantCulture, "\"{0}\"", ((ConstValue)this.Value).AsString);
-                }
-                else if (this.Value is TupleValue)
-                {
-                    return string.Format(CultureInfo.InvariantCulture, "{{...}}");
-                }
-                else if (this.Value is ListValue)
-                {
-                    return string.Format(CultureInfo.InvariantCulture, "[...] count = {0}", ((ListValue)this.Value).Length);
-                }
-
-                return "<Unknown ResultValue Type>";
-            }
-        }
-
-        public override string ToString()
-        {
-            StringBuilder builder = new StringBuilder();
-            builder.Append(Name);
-            builder.Append("=");
-            builder.Append(Value.ToString());
-            return builder.ToString();
-        }
-    }
-
-    public class TupleValue : ResultValue
-    {
-        public List<NamedResultValue> Content { get; private set; }
-
-        public TupleValue(List<NamedResultValue> list)
-        {
-            Content = list;
-        }
-        public override ResultValue Find(string name)
-        {
-            var item = Content.Find((c) => c.Name == name);
-            if (item == null)
-            {
-                throw new MIResultFormatException(name, this);
-            }
-            return item.Value;
-        }
-
-        public override bool Contains(string name)
-        {
-            var item = Content.Find((c) => c.Name == name);
-            return item != null;
-        }
-
-        public override string ToString()
-        {
-            StringBuilder outTuple = new StringBuilder();
-            outTuple.Append("{");
-            for (int i = 0; i < Content.Count; ++i)
-            {
-                if (i != 0)
-                {
-                    outTuple.Append(",");
-                }
-                outTuple.Append(Content[i].ToString());
-            }
-            outTuple.Append("}");
-            return outTuple.ToString();
-        }
-        public ResultValue[] FindAll(string name)
-        {
-            return Content.FindAll((c) => c.Name == name).Select((c) => c.Value).ToArray();
-        }
-
-        public T[] FindAll<T>(string name) where T : class
-        {
-            return FindAll(name).OfType<T>().ToArray();
-        }
-
-        /// <summary>
-        /// Creates a new TupleValue with a subset of values from this TupleValue.
-        /// </summary>
-        /// <param name="requiredNames">The list of names that must be added to the TupleValue.</param>
-        /// <param name="optionalNames">The list of names that will be added to the TupleValue if they exist in this TupleValue.</param>
-        public TupleValue Subset(IEnumerable<string> requiredNames, IEnumerable<string> optionalNames = null)
-        {
-            List<NamedResultValue> values = new List<NamedResultValue>();
-
-            // Iterate the required list and add the values.
-            // Will throw if a name cannot be found.
-            foreach (string name in requiredNames)
-            {
-                values.Add(new NamedResultValue(name, this.Find(name)));
-            }
-
-            // Iterate the optional list and add the values of the name exists.
-            if (null != optionalNames)
-            {
-                foreach (string name in optionalNames)
-                {
-                    ResultValue value;
-                    if (this.TryFind(name, out value))
-                    {
-                        values.Add(new NamedResultValue(name, value));
-                    }
-                }
-            }
-
-            return new TupleValue(values);
-        }
-    }
-
-    public abstract class ListValue : ResultValue
-    {
-        public abstract int Length { get; }
-        public bool IsEmpty()
-        {
-            return this.Length == 0;
-        }
-    }
-
-    public class ValueListValue : ListValue
-    {
-        public ResultValue[] Content { get; private set; }
-
-        public override int Length { get { return Content.Length; } }
-
-        public ValueListValue(List<ResultValue> list)
-        {
-            Content = list.ToArray();
-        }
-        public T[] AsArray<T>() where T : ResultValue
-        {
-            return Content.Cast<T>().ToArray();
-        }
-
-        public string[] AsStrings
-        {
-            get { return Content.Cast<ConstValue>().Select(c => c.AsString).ToArray(); }
-        }
-
-        public override string ToString()
-        {
-            StringBuilder outList = new StringBuilder();
-            outList.Append("[");
-            for (int i = 0; i < Content.Length; ++i)
-            {
-                if (i != 0)
-                {
-                    outList.Append(",");
-                }
-                outList.Append(Content[i].ToString());
-            }
-            outList.Append("]");
-            return outList.ToString();
-        }
-    }
-
-    public class ResultListValue : ListValue
-    {
-        public NamedResultValue[] Content { get; private set; }
-
-        public override int Length { get { return Content.Length; } }
-
-        public ResultListValue(List<NamedResultValue> list)
-        {
-            Content = list.ToArray();
-        }
-        public override ResultValue Find(string name)
-        {
-            var item = Array.Find(Content, (c) => c.Name == name);
-            if (item == null)
-            {
-                throw new MIResultFormatException(name, this);
-            }
-            return item.Value;
-        }
-
-        public override bool Contains(string name)
-        {
-            var item = Array.Find(Content, (c) => c.Name == name);
-            return item != null;
-        }
-
-        public ResultValue[] FindAll(string name)
-        {
-            return Array.FindAll(Content, (c) => c.Name == name).Select((c) => c.Value).ToArray();
-        }
-
-        public T[] FindAll<T>(string name) where T : class
-        {
-            return FindAll(name).OfType<T>().ToArray();
-        }
-
-        public string[] FindAllStrings(string name)
-        {
-            return FindAll<ConstValue>(name).Select((c) => c.AsString).ToArray();
-        }
-
-        public int CountOf(string name)
-        {
-            return Content.Count(c => c.Name == name);
-        }
-
-        public ResultValue FindWith(string name, string value)
-        {
-            for (int i = 0; i < Length; i++)
-                if (Content[i].Value.Find(name).ToString() == value)
-                    return Content[i].Value;
-            throw new MIResultFormatException(name, this);
-        }
-
-        public override string ToString()
-        {
-            StringBuilder outList = new StringBuilder();
-            outList.Append("[");
-            for (int i = 0; i < Content.Length; ++i)
-            {
-                if (i != 0)
-                {
-                    outList.Append(",");
-                }
-                outList.Append(Content[i].Name);
-                outList.Append("=");
-                outList.Append(Content[i].Value.ToString());
-            }
-            outList.Append("]");
-            return outList.ToString();
-        }
-    }
-
-    [DebuggerTypeProxy(typeof(ResultsTypeProxy))]
-    [DebuggerDisplay("{ResultClass}, Length={Length}")]
-    public class Results : ResultListValue
-    {
-        internal class ResultsTypeProxy
-        {
-            public ResultsTypeProxy(Results results)
-            {
-                this.Content = results.Content;
-            }
-
-            [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
-            public NamedResultValue[] Content { get; private set; }
-        }
-
-        public readonly ResultClass ResultClass;
-
-        public Results(ResultClass resultsClass, List<NamedResultValue> list = null)
-            : base(list ?? new List<NamedResultValue>())
-        {
-            ResultClass = resultsClass;
-        }
-
-        public Results Add(string name, ResultValue value)
-        {
-            var l = Content.ToList();
-            l.Add(new NamedResultValue(name, value));
-            return new Results(ResultClass, l);
-        }
-
-        public override string ToString()
-        {
-            StringBuilder outList = new StringBuilder();
-            outList.Append("result-class: " + ResultClass.ToString());
-            for (int i = 0; i < Content.Length; ++i)
-            {
-                outList.Append("\r\n");
-                outList.Append(Content[i].Name);
-                outList.Append(": ");
-                outList.Append(Content[i].Value.ToString());
-            }
-            outList.Append("\r\n");
-            return outList.ToString();
-        }
-    };
-
-    public class MIResults
-    {
-        struct Span
-        {
-            static Span _emptySpan;
-            public int Start { get; private set; }  // index first character in the substring
-            public int Length { get; private set; } // length of the substring
-            public int Extent { get { return Start + Length; } }
-            public bool IsEmpty { get { return Length == 0; } }
-            public static Span Empty { get { return _emptySpan; } }
-
-            static Span()
-            {
-                _emptySpan = new Span(0, 0);
-            }
-
-            public Span(string s)
-            {
-                Start = 0;
-                Length = s.Length;
-            }
-            public Span(int start, int len)
-            {
-                if (start < 0)
-                {
-                    throw new ArgumentException("start");
-                }
-                Start = start;
-                Length = len;
-            }
-            public Span Advance(int len)
-            {
-                if (len > Length)
-                {
-                    throw new ArgumentException("len");
-                }
-                return new Span(Start + len, Length - len);
-            }
-            public Span AdvanceTo(int pos)
-            {
-                if (Start > pos || pos > Start + Length)
-                {
-                    throw new ArgumentException("pos");
-                }
-                return new Span(pos, Length - (pos - Start));
-            }
-            public Span Prefix(int len)
-            {
-                if (len > Length)
-                {
-                    throw new ArgumentException("len");
-                }
-                return new Span(Start, len);
-            }
-            public string Extract(string theString)
-            {
-                if (Extent > theString.Length)
-                {
-                    throw new ArgumentException("theSpan");
-                }
-                return theString.Substring(Start, Length);
-            }
-            public int IndexOf(string theString, char c)
-            {
-                int i = theString.IndexOf(c, Start);
-                if (i < 0 || i >= Extent)
-                {
-                    return -1;
-                }
-                return i - Start;   // Span relative offset
-            }
-            public bool StartsWith(string theString, string pattern)
-            {
-                if (Length < pattern.Length)
-                {
-                    return false;
-                }
-                for (int i = 0; i < pattern.Length; ++i)
-                {
-                    if (theString[Start + i] != pattern[i])
-                    {
-                        return false;
-                    }
-                }
-                return true;
-            }
-        }
-
-        private string _resultString;
-
-        /// <summary>
-        /// result-record ==> result-class ( "," result )*
-        /// </summary>
-        /// <param name="output"></param>
-        public Results ParseCommandOutput(string output)
-        {
-            string token = ParseToken(ref output);
-            output = output.Remove(0, 1); // Remove first char (^, *, e.t.c)
-            _resultString = output.Trim();
-            int comma = _resultString.IndexOf(',');
-            Results results;
-            ResultClass resultClass = ResultClass.None;
-            if (comma < 0)
-            {
-                // no comma, so entire string should be the result class
-                results = new Results(ParseResultClass(output), new List<NamedResultValue>());
-            }
-            else
-            {
-                resultClass = ParseResultClass(output.Substring(0, comma));
-                Span wholeString = new Span(_resultString);
-                results = ParseResultList(wholeString.AdvanceTo(comma + 1), resultClass);
-            }
-            return results;
-        }
-
-        private string ParseToken(ref string output)
-        {
-            if (char.IsDigit(output, 0))
-            {
-                int i;
-                for (i = 1; i < output.Length; i++)
-                {
-                    if (!char.IsDigit(output, i))
-                        break;
-                }
-                if (i < output.Length)
-                {
-                    string token = output.Substring(0, i);
-                    output = output.Substring(i);
-                    return token;
-                }
-            }
-            return null;
-        }
-
-        public Results ParseResultList(string listStr, ResultClass resultClass = ResultClass.None)
-        {
-            _resultString = listStr.Trim();
-            return ParseResultList(new Span(_resultString), resultClass);
-        }
-
-        private Results ParseResultList(Span listStr, ResultClass resultClass = ResultClass.None)
-        {
-            Span rest;
-            var list = ParseResultList((Span s, ref int i) =>
-                {
-                    return true;
-                }, (Span s, ref int i) =>
-                    {
-                        return i == s.Extent;
-                    }, listStr, out rest);
-            if (!rest.IsEmpty)
-            {
-                ParseError("trailing chars", rest);
-                return null;
-            }
-            return new Results(resultClass, list);
-        }
-
-        public string ParseCString(string input)
-        {
-            if (input == null)
-            {
-                throw new ArgumentNullException("input");
-            }
-            else if (input == String.Empty)
-            {
-                return string.Empty;
-            }
-
-            string cstr = input.Trim();
-            if (cstr[0] != '\"')   // not a Cstring, just return the string
-            {
-                return input;
-            }
-            _resultString = cstr;
-            Span rest;
-            var s = ParseCString(new Span(cstr), out rest);
-            return s == null ? string.Empty : s.AsString;
-        }
-
-        private string ParseCString(Span input)
-        {
-            if (input.IsEmpty)
-            {
-                return string.Empty;
-            }
-
-            if (_resultString[input.Start] != '\"')   // not a Cstring, just return the string
-            {
-                return input.Extract(_resultString);
-            }
-            Span rest;
-            var s = ParseCString(input, out rest);
-            return s == null ? string.Empty : s.AsString;
-        }
-
-        /// <summary>
-        /// value ==>const | tuple | list
-        /// </summary>
-        /// <returns></returns>
-        private ResultValue ParseValue(Span resultStr, out Span rest)
-        {
-            ResultValue value = null;
-            rest = Span.Empty;
-            if (resultStr.IsEmpty)
-            {
-                return null;
-            }
-            switch (_resultString[resultStr.Start])
-            {
-                case '\"':
-                    value = ParseCString(resultStr, out rest);
-                    break;
-                case '{':
-                    value = ParseTuple(resultStr, out rest);
-                    break;
-                case '[':
-                    value = ParseList(resultStr, out rest);
-                    break;
-                default:
-                    ParseError("unexpected char", resultStr);
-                    break;
-            }
-            return value;
-        }
-
-        /// <summary>
-        /// GDB (on x86) sometimes returns a tuple list in a context requiring a tuple (&lt;MULTIPLE&gt; breakpoints).
-        /// The grammar does not allow this, but we recognize it and accept it only in the special case when it is contained
-        /// in a result value.
-        ///     tuplelist --  tuple ("," tuple)*
-        ///     value -- const | tuple | tuplelist | list
-        /// </summary>
-        /// <returns></returns>
-        private ResultValue ParseResultValue(Span resultStr, out Span rest)
-        {
-            ResultValue value = null;
-            rest = Span.Empty;
-            if (resultStr.IsEmpty)
-            {
-                return null;
-            }
-            switch (_resultString[resultStr.Start])
-            {
-                case '\"':
-                    value = ParseCString(resultStr, out rest);
-                    break;
-                case '{':
-                    value = ParseResultTuple(resultStr, out rest);
-                    break;
-                case '[':
-                    value = ParseList(resultStr, out rest);
-                    break;
-                default:
-                    ParseError("unexpected char", resultStr);
-                    break;
-            }
-            return value;
-        }
-
-        /// <summary>
-        /// IsValueChar - true is the char is a start-char for a value
-        /// </summary>
-        private static bool IsValueChar(char c)
-        {
-            return c == '\"' || c == '{' || c == '[';
-        }
-
-        /// <summary>
-        /// result ==> variable "=" value
-        /// </summary>
-        /// <param name="resultStr">trimmed input string</param>
-        /// <param name="rest">trimmed remainder after result</param>
-        private NamedResultValue ParseResult(Span resultStr, out Span rest)
-        {
-            rest = Span.Empty;
-            int equals = resultStr.IndexOf(_resultString, '=');
-            if (equals < 1)
-            {
-                ParseError("variable not found", resultStr);
-                return null;
-            }
-            string name = resultStr.Prefix(equals).Extract(_resultString);
-            ResultValue value = ParseResultValue(resultStr.Advance(equals + 1), out rest);
-            if (value == null)
-            {
-                return null;
-            }
-            return new NamedResultValue(name, value);
-        }
-
-        private static ResultClass ParseResultClass(string resultClass)
-        {
-            switch (resultClass)
-            {
-                case "done": return ResultClass.done;
-                case "running": return ResultClass.running;
-                case "connected": return ResultClass.connected;
-                case "error": return ResultClass.error;
-                case "exit": return ResultClass.exit;
-                case "stopped": return ResultClass.stopped;
-                default:
-                    {
-                        Debug.Fail("unexpected result class");
-                        return ResultClass.None;
-                    }
-            }
-        }
-
-        private ConstValue ParseCString(Span input, out Span rest)
-        {
-            rest = input;
-            StringBuilder output = new StringBuilder();
-            if (input.IsEmpty || _resultString[input.Start] != '\"')
-            {
-                ParseError("Cstring expected", input);
-                return null;
-            }
-            int i = input.Start + 1;
-            bool endFound = false;
-            for (; i < input.Extent; i++)
-            {
-                char c = _resultString[i];
-                if (c == '\"')
-                {
-                    // closing quote, so we are (probably) done
-                    i++;
-                    if ((i < input.Extent) && (_resultString[i] == c))
-                    {
-                        // double quotes mean we emit a single quote, and carry on
-                        ;
-                    }
-                    else
-                    {
-                        endFound = true;
-                        break;
-                    }
-                }
-                else if (c == '\\')
-                {
-                    // escaped character
-                    c = _resultString[++i];
-                    switch (c)
-                    {
-                        case 'n': c = '\n'; break;
-                        case 'r': c = '\r'; break;
-                        case 't': c = '\t'; break;
-                        default: break;
-                    }
-                }
-                output.Append(c);
-            }
-            if (!endFound)
-            {
-                ParseError("CString not terminated", input);
-                return null;
-            }
-            rest = input.AdvanceTo(i);
-            return new ConstValue(output.ToString());
-        }
-
-        private delegate bool EdgeCondition(Span s, ref int i);
-
-        private List<NamedResultValue> ParseResultList(EdgeCondition begin, EdgeCondition end, Span input, out Span rest)
-        {
-            rest = Span.Empty;
-            List<NamedResultValue> list = new List<NamedResultValue>();
-            int i = input.Start;
-            if (!begin(input, ref i))
-            {
-                ParseError("Unexpected opening character", input);
-                return null;
-            }
-            if (end(input, ref i))    // tuple is empty
-            {
-                rest = input.AdvanceTo(i);  // eat through the closing brace
-                return list;
-            }
-            input = input.AdvanceTo(i);
-            var item = ParseResult(input, out rest);
-            if (item == null)
-            {
-                ParseError("Result expected", input);
-                return null;
-            }
-            list.Add(item);
-            input = rest;
-            while (!input.IsEmpty && _resultString[input.Start] == ',')
-            {
-                item = ParseResult(input.Advance(1), out rest);
-                if (item == null)
-                {
-                    ParseError("Result expected", input);
-                    return null;
-                }
-                list.Add(item);
-                input = rest;
-            }
-
-            i = input.Start;
-            if (!end(input, ref i))    // tuple is not closed
-            {
-                ParseError("Unexpected list termination", input);
-                rest = Span.Empty;
-                return null;
-            }
-            rest = input.AdvanceTo(i);
-            return list;
-        }
-
-        private List<NamedResultValue> ParseResultList(char begin, char end, Span input, out Span rest)
-        {
-            return ParseResultList((Span s, ref int i) =>
-            {
-                if (_resultString[i] == begin)
-                {
-                    i++;
-                    return true;
-                }
-                return false;
-            }, (Span s, ref int i) =>
-            {
-                if (i < s.Extent && _resultString[i] == end)
-                {
-                    i++;
-                    return true;
-                }
-                return false;
-            }, input, out rest);
-        }
-
-        /// <summary>
-        /// tuple ==> "{}" | "{" result ( "," result )* "}"
-        /// </summary>
-        /// <returns>if one tuple found a TupleValue, otherwise a ValueListValue of TupleValues</returns>
-        private ResultValue ParseResultTuple(Span input, out Span rest)
-        {
-            var list = ParseResultList('{', '}', input, out rest);
-            if (list == null)
-            {
-                return null;
-            }
-            var tlist = new List<ResultValue>();
-            TupleValue v;
-            while (rest.StartsWith(_resultString, ",{"))
-            {
-                // a tuple list
-                v = new TupleValue(list);
-                tlist.Add(v);
-                list = ParseResultList('{', '}', rest.Advance(1), out rest);
-            }
-            v = new TupleValue(list);
-            if (tlist.Count != 0)
-            {
-                tlist.Add(v);
-                return new ValueListValue(tlist);
-            }
-            return v;
-        }
-
-        /// <summary>
-        /// tuple ==> "{}" | "{" result ( "," result )* "}"
-        /// </summary>
-        private TupleValue ParseTuple(Span input, out Span rest)
-        {
-            var list = ParseResultList('{', '}', input, out rest);
-            if (list == null)
-            {
-                return null;
-            }
-            return new TupleValue(list);
-        }
-
-        /// <summary>
-        /// list ==> "[]" | "[" value ( "," value )* "]" | "[" result ( "," result )* "]"
-        /// </summary>
-        private ResultValue ParseList(Span input, out Span rest)
-        {
-            rest = Span.Empty;
-            if (_resultString[input.Start] != '[')
-            {
-                ParseError("List expected", input);
-                return null;
-            }
-            if (_resultString[input.Start + 1] == ']')    // list is empty
-            {
-                rest = input.Advance(2);  // eat through the closing brace
-                return new ValueListValue(new List<ResultValue>());
-            }
-            if (IsValueChar(_resultString[input.Start + 1]))
-            {
-                return ParseValueList(input, out rest);
-            }
-            else
-            {
-                return ParseResultList(input, out rest);
-            }
-        }
-
-        /// <summary>
-        /// list ==>  "[" value ( "," value )* "]"
-        /// </summary>
-        private ValueListValue ParseValueList(Span input, out Span rest)
-        {
-            rest = Span.Empty;
-            List<ResultValue> list = new List<ResultValue>();
-            if (_resultString[input.Start] != '[')
-            {
-                ParseError("List expected", input);
-                return null;
-            }
-            input = input.Advance(1);
-            var item = ParseValue(input, out rest);
-            if (item == null)
-            {
-                ParseError("Value expected", input);
-                return null;
-            }
-            list.Add(item);
-            input = rest;
-            while (!input.IsEmpty && _resultString[input.Start] == ',')
-            {
-                item = ParseValue(input.Advance(1), out rest);
-                if (item == null)
-                {
-                    ParseError("Value expected", input);
-                    return null;
-                }
-                list.Add(item);
-                input = rest;
-            }
-
-            if (input.IsEmpty || _resultString[input.Start] != ']')    // list is not closed
-            {
-                ParseError("List not terminated", input);
-                rest = Span.Empty;
-                return null;
-            }
-            rest = input.Advance(1);
-            return new ValueListValue(list);
-        }
-
-        /// <summary>
-        /// list ==>  "[" result ( "," result )* "]"
-        /// </summary>
-        private ResultListValue ParseResultList(Span input, out Span rest)
-        {
-            var list = ParseResultList('[', ']', input, out rest);
-            if (list == null)
-            {
-                return null;
-            }
-            return new ResultListValue(list);
-        }
-
-        private void ParseError(string message, Span input)
-        {
-            if (input.Length > 1000)
-            {
-                input = new Span(input.Start, 1000);    // don't show more than 1000 chars
-            }
-            string result = input.Extract(_resultString);
-            Debug.Fail(message + ": " + result);
-        }
-    }
-}
diff --git a/tests/runner/Runner.cs b/tests/runner/Runner.cs
deleted file mode 100644 (file)
index 60eb426..0000000
+++ /dev/null
@@ -1,404 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.Text;
-using System.IO;
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using System.Threading.Tasks.Dataflow;
-using System.Runtime.InteropServices;
-using Xunit;
-using Xunit.Abstractions;
-
-using System.Text.RegularExpressions;
-using System.Reflection;
-
-using Microsoft.CodeAnalysis;
-using Microsoft.CodeAnalysis.CSharp.Scripting;
-using Microsoft.CodeAnalysis.CSharp;
-using System.Runtime.CompilerServices;
-using Microsoft.CodeAnalysis.Scripting;
-
-using System.Threading;
-
-namespace Runner
-{
-    public class TestRunner
-    {
-        [Fact]
-        public void SimpleSteppingTest() => ExecuteTest();
-
-        [Fact]
-        public void ValuesTest() => ExecuteTest();
-
-        [Fact]
-        public void ExceptionTest() => ExecuteTest();
-
-        [Fact]
-        public void BreakpointAddRemoveTest() => ExecuteTest();
-
-        [Fact]
-        public void ExceptionBreakpointTest() => ExecuteTest();
-
-        [Fact]
-        public void ExceptionBreakpointMultiThreadsTest() => ExecuteTest();
-
-        [Fact]
-        public void SetValuesTest() => ExecuteTest();
-
-        [Fact]
-        public void ExpressionsTest() => ExecuteTest();
-
-        [Fact]
-        public void LambdaTest() => ExecuteTest();
-
-        private const int DefaultTimeoutSec = 20;
-        private int expectTimeoutSec;
-
-        public class ProcessInfo
-        {
-            public ProcessInfo(string command, int defaultTimeoutSec, ITestOutputHelper output)
-            {
-                this.output = output;
-                this.defaultTimeoutSec = defaultTimeoutSec;
-                process = new Process();
-                queue = new BufferBlock<string>();
-
-                process.StartInfo.CreateNoWindow = true;
-                process.StartInfo.RedirectStandardOutput = true;
-                process.StartInfo.RedirectStandardInput = true;
-                process.StartInfo.UseShellExecute = false;
-                process.StartInfo.StandardOutputEncoding = Encoding.UTF8;
-                if (TestRunner.IsWindows)
-                {
-                    // For older Windows versions:
-                    //   process.StartInfo.Arguments = String.Format("/C \"{0}\"", command);
-                    //   process.StartInfo.FileName = "cmd";
-                    process.StartInfo.Arguments = String.Format("-NoLogo -Command \"{0}\"", command);
-                    process.StartInfo.FileName = "powershell";
-                }
-                else
-                {
-                    process.StartInfo.Arguments = String.Format("-c \"{0}\"", command);
-                    process.StartInfo.FileName = "/bin/sh";
-                }
-                // enable raising events because Process does not raise events by default
-                process.EnableRaisingEvents = true;
-                // attach the event handler for OutputDataReceived before starting the process
-                process.OutputDataReceived += new DataReceivedEventHandler
-                (
-                    delegate(object sender, DataReceivedEventArgs e)
-                    {
-                        if (e.Data is null)
-                            return;
-                        // append the new data to the data already read-in
-                        output.WriteLine("> " + e.Data);
-                        queue.Post(e.Data);
-                    }
-                );
-                process.Exited += new EventHandler
-                (
-                    delegate(object sender, EventArgs args)
-                    {
-                        // This is where you can add some code to be
-                        // executed before this program exits.
-                        queue.Complete();
-                    }
-                );
-
-                try
-                {
-                    process.Start();
-                }
-                catch (System.ComponentModel.Win32Exception)
-                {
-                    throw new Exception("Unable to run: " + command);
-                }
-
-                process.BeginOutputReadLine();
-            }
-
-            public void Close()
-            {
-                process.StandardInput.WriteLine("-gdb-exit");
-                process.StandardInput.Close();
-                if (!process.WaitForExit(5))
-                {
-                    process.CancelOutputRead();
-                    process.Close();
-                }
-                else
-                    process.CancelOutputRead();
-            }
-
-            public string Receive()
-            {
-                return queue.ReceiveAsync().Result;
-            }
-
-            public MICore.Results Expect(string text, int timeoutSec, int line)
-            {
-                if (timeoutSec < 0)
-                    timeoutSec = defaultTimeoutSec;
-
-                TimeSpan timeSpan = TimeSpan.FromSeconds(timeoutSec);
-
-                CancellationTokenSource ts = new CancellationTokenSource();
-
-                ts.CancelAfter(timeSpan);
-                CancellationToken token = ts.Token;
-                token.ThrowIfCancellationRequested();
-
-                try
-                {
-                    while (true)
-                    {
-                        Task<string> inputTask = queue.ReceiveAsync();
-                        inputTask.Wait(token);
-                        string result = inputTask.Result;
-                        if (result.StartsWith(text))
-                        {
-                            var parser = new MICore.MIResults();
-                            return parser.ParseCommandOutput(result);
-                        }
-                    }
-                }
-                catch (AggregateException e)
-                {
-                    foreach (var v in e.InnerExceptions)
-                        output.WriteLine(e.Message + " " + v.Message);
-                }
-                catch (OperationCanceledException)
-                {
-                }
-                finally
-                {
-                    ts.Dispose();
-                }
-                throw new Exception($"Expected '{text}' (at line {line}) in {timeSpan}");
-            }
-
-            public void Send(string s)
-            {
-                var bytes = Encoding.UTF8.GetBytes(s);
-                process.StandardInput.BaseStream.Write(bytes, 0, bytes.Length);
-                process.StandardInput.WriteLine();
-                output.WriteLine("< " + s);
-            }
-
-            public Process process;
-            private readonly ITestOutputHelper output;
-            private int defaultTimeoutSec { get; }
-            public BufferBlock<string> queue;
-        }
-
-        public class TestCaseGlobals
-        {
-            public readonly Dictionary<string, int> Lines;
-            private ProcessInfo processInfo;
-            public TestCaseGlobals(
-                ProcessInfo processInfo,
-                Dictionary<string, int> lines,
-                string testSource,
-                string testBin,
-                int defaultExpectTimeout,
-                ITestOutputHelper output)
-            {
-                this.processInfo = processInfo;
-                this.Lines = lines;
-                this.TestSource = testSource;
-                this.TestBin = testBin;
-                this.DefaultExpectTimeout = defaultExpectTimeout;
-                this.Output = output;
-            }
-            public int GetCurrentLine([CallerLineNumber] int line = 0) { return line; }
-
-            public void Send(string s) => processInfo.Send(s);
-            public MICore.Results Expect(string s, int timeoutSec = -1, [CallerLineNumber] int line = 0) => processInfo.Expect(s, timeoutSec, line);
-            public readonly string TestSource;
-            public readonly string TestBin;
-            public readonly int DefaultExpectTimeout;
-            public readonly ITestOutputHelper Output;
-        }
-
-        // Fill 'Tags' dictionary with tags lines
-        Dictionary<string, int> CollectTags(string srcName)
-        {
-            Dictionary<string, int> Tags = new Dictionary<string, int>();
-            int lineCounter = 0;
-            string[] separators = new string[] {"//"};
-            string pattern = @".*@([^@]+)@.*";
-            Regex reg = new Regex (pattern);
-
-            foreach (string line in File.ReadLines(srcName))
-            {
-                lineCounter++;
-
-                Match match = reg.Match(line);
-
-                if (!match.Success)
-                    continue;
-
-                string key = match.Groups[1].ToString().Trim();
-                if (Tags.ContainsKey(key))
-                    throw new Exception(String.Format("Tag '{0}' is present more than once in file '{1}'", key, srcName));
-                Tags[key] = lineCounter;
-            }
-
-            return Tags;
-        }
-
-        private class CommentCollector : CSharpSyntaxRewriter
-        {
-            private StringBuilder allComments = new StringBuilder();
-            private int lineCount = 0;
-            public override SyntaxTrivia VisitTrivia(SyntaxTrivia trivia)
-            {
-                if (!trivia.IsKind(SyntaxKind.SingleLineCommentTrivia) && !trivia.IsKind(SyntaxKind.MultiLineCommentTrivia))
-                    return trivia;
-
-                var lineSpan = trivia.GetLocation().GetLineSpan();
-
-                while (lineCount < lineSpan.StartLinePosition.Line)
-                {
-                    allComments.AppendLine();
-                    lineCount++;
-                }
-                string comment = trivia.ToString();
-                if (trivia.IsKind(SyntaxKind.SingleLineCommentTrivia))
-                    comment = comment.Substring(2);
-                else if (trivia.IsKind(SyntaxKind.MultiLineCommentTrivia))
-                    comment = comment.Substring(2, comment.Length - 4);
-
-                allComments.Append(comment);
-                lineCount = lineSpan.EndLinePosition.Line;
-
-                return trivia;
-            }
-            public string Text { get => allComments.ToString(); }
-        }
-
-        class TestData
-        {
-            public TestData(string dllPath, string srcFilePath)
-            {
-                this.dllPath = dllPath;
-                this.srcFilePath = srcFilePath;
-            }
-            public string srcFilePath { get; }
-            public string dllPath { get; }
-
-        }
-
-        private readonly ITestOutputHelper output;
-        private string debuggerCommand;
-        private Dictionary<string, TestData> allTests;
-
-        public static bool IsWindows {
-            get
-            {
-                return RuntimeInformation.IsOSPlatform(OSPlatform.Windows);
-            }
-        }
-
-        public TestRunner(ITestOutputHelper output)
-        {
-            this.output = output;
-
-            // Sneaky way to get assembly path, which works even if call
-            // current constructor with reflection
-            string codeBase = Assembly.GetExecutingAssembly().CodeBase;
-            UriBuilder uri = new UriBuilder(codeBase);
-            string path = Uri.UnescapeDataString(uri.Path);
-            var d = new DirectoryInfo(Path.GetDirectoryName(path));
-
-            var pipe = Environment.GetEnvironmentVariable("PIPE");
-            if (pipe != null)
-            {
-                this.debuggerCommand = pipe;
-            }
-            else
-            {
-                this.debuggerCommand = Path.Combine(d.Parent.Parent.Parent.Parent.Parent.FullName, "bin", "netcoredbg" + (IsWindows ? ".exe" : ""));
-            }
-
-            var timeout = Environment.GetEnvironmentVariable("TIMEOUT");
-            if (timeout == null || !Int32.TryParse(timeout, out expectTimeoutSec) || expectTimeoutSec < 0)
-                expectTimeoutSec = DefaultTimeoutSec;
-
-            var testDir = Environment.GetEnvironmentVariable("TESTDIR");
-
-            // Find all dlls
-            var baseDir = d.Parent.Parent.Parent.Parent;
-            var files = Directory.GetFiles(baseDir.FullName, "*.dll", SearchOption.AllDirectories);
-
-            allTests = new Dictionary<string, TestData>();
-
-            foreach (var dll in files)
-            {
-                string testName = dll.Substring(0, dll.Length - 4);
-                var configName = new FileInfo(testName + ".runtimeconfig.json");
-                if (configName.Exists)
-                {
-                    var csFiles = Directory.GetFiles(configName.Directory.Parent.Parent.Parent.FullName, "*.cs");
-
-                    string testDll = testDir != null ? Path.Combine(testDir, Path.GetFileName(dll)) : dll;
-
-                    allTests[Path.GetFileName(testName)] = new TestData(testDll, csFiles[0]);
-                }
-            }
-        }
-
-        private void ExecuteTest([CallerMemberName] string name = null)
-        {
-            var data = allTests[name];
-
-            var lines = CollectTags(data.srcFilePath);
-
-            var tree = CSharpSyntaxTree.ParseText(File.ReadAllText(data.srcFilePath))
-                                       .WithFilePath(data.srcFilePath);
-
-            var cc = new CommentCollector();
-            cc.Visit(tree.GetRoot());
-
-            output.WriteLine("------ Test script ------");
-            output.WriteLine(cc.Text);
-            output.WriteLine("-------------------------");
-
-            var script = CSharpScript.Create(
-                cc.Text,
-                ScriptOptions.Default.WithReferences(typeof(object).Assembly)
-                                     .WithReferences(typeof(Xunit.Assert).Assembly)
-                                     .WithReferences(typeof(MICore.MIResults).Assembly)
-                                     .WithImports(new string[]{"System", "Xunit", "MICore"}),
-                globalsType: typeof(TestCaseGlobals)
-            );
-            script.Compile();
-
-            ProcessInfo processInfo = new ProcessInfo(debuggerCommand, expectTimeoutSec, output);
-
-            try
-            {
-                // Globals, to use inside test case
-                TestCaseGlobals globals = new TestCaseGlobals(
-                    processInfo,
-                    lines,
-                    data.srcFilePath,
-                    data.dllPath,
-                    expectTimeoutSec,
-                    output
-                );
-
-                script.RunAsync(globals).Wait();
-            }
-            catch (Exception e)
-            {
-                throw e;
-            }
-            finally
-            {
-                // Finish process
-                processInfo.Close();
-            }
-        }
-    }
-}
diff --git a/tests/runner/runner.csproj b/tests/runner/runner.csproj
deleted file mode 100644 (file)
index 861857e..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <TargetFramework>netcoreapp2.0</TargetFramework>
-    <OutputType>Library</OutputType>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
-    <PackageReference Include="System.Threading.Tasks.Dataflow" Version="4.8.0" />
-    <PackageReference Include="xunit" Version="2.2.0" />
-    <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
-    <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Scripting" Version="2.4.0" />
-    <PackageReference Include="Microsoft.CodeAnalysis.Scripting" Version="2.4.0" />
-  </ItemGroup>
-
-</Project>
diff --git a/tests/tests.sln b/tests/tests.sln
deleted file mode 100644 (file)
index bbe66b7..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26124.0
-MinimumVisualStudioVersion = 15.0.26124.0
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "runner", "runner\runner.csproj", "{E042BA1C-E2FB-41DF-AA94-9FACCF22D358}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ValuesTest", "ValuesTest\ValuesTest.csproj", "{7A4F31DE-22C7-4662-A6D4-63D1DCDD6D6E}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleSteppingTest", "SimpleSteppingTest\SimpleSteppingTest.csproj", "{E0060C4B-2D50-4912-A2E6-29E897ED1767}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExceptionTest", "ExceptionTest\ExceptionTest.csproj", "{AA120201-343F-4A1D-BDA5-930F9B28DD9A}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BreakpointAddRemoveTest", "BreakpointAddRemoveTest\BreakpointAddRemoveTest.csproj", "{48403D8A-08D8-48FC-BF1B-F0239154AD85}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SetValuesTest", "SetValuesTest\SetValuesTest.csproj", "{9E6CD7E6-0B84-4088-9097-1839A14B49DB}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExpressionsTest", "ExpressionsTest\ExpressionsTest.csproj", "{3477E658-CB14-4D86-8909-F7448C17AC9A}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LambdaTest", "LambdaTest\LambdaTest.csproj", "{70F91400-AB4E-4A19-A137-9B5BF36C8543}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExceptionBreakpointTest", "ExceptionBreakpointTest\ExceptionBreakpointTest.csproj", "{361771B0-7948-412E-86ED-D41157F6DE6B}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExceptionBreakpointMultiThreadsTest", "ExceptionBreakpointMultiThreadsTest\ExceptionBreakpointMultiThreadsTest.csproj", "{31C7F5AD-ED22-4F02-82F5-084C48598AA9}"
-EndProject
-Global
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution
-               Debug|Any CPU = Debug|Any CPU
-               Debug|x64 = Debug|x64
-               Debug|x86 = Debug|x86
-               Release|Any CPU = Release|Any CPU
-               Release|x64 = Release|x64
-               Release|x86 = Release|x86
-       EndGlobalSection
-       GlobalSection(SolutionProperties) = preSolution
-               HideSolutionNode = FALSE
-       EndGlobalSection
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {E042BA1C-E2FB-41DF-AA94-9FACCF22D358}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E042BA1C-E2FB-41DF-AA94-9FACCF22D358}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E042BA1C-E2FB-41DF-AA94-9FACCF22D358}.Debug|x64.ActiveCfg = Debug|x64
-               {E042BA1C-E2FB-41DF-AA94-9FACCF22D358}.Debug|x64.Build.0 = Debug|x64
-               {E042BA1C-E2FB-41DF-AA94-9FACCF22D358}.Debug|x86.ActiveCfg = Debug|x86
-               {E042BA1C-E2FB-41DF-AA94-9FACCF22D358}.Debug|x86.Build.0 = Debug|x86
-               {E042BA1C-E2FB-41DF-AA94-9FACCF22D358}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E042BA1C-E2FB-41DF-AA94-9FACCF22D358}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E042BA1C-E2FB-41DF-AA94-9FACCF22D358}.Release|x64.ActiveCfg = Release|x64
-               {E042BA1C-E2FB-41DF-AA94-9FACCF22D358}.Release|x64.Build.0 = Release|x64
-               {E042BA1C-E2FB-41DF-AA94-9FACCF22D358}.Release|x86.ActiveCfg = Release|x86
-               {E042BA1C-E2FB-41DF-AA94-9FACCF22D358}.Release|x86.Build.0 = Release|x86
-               {7A4F31DE-22C7-4662-A6D4-63D1DCDD6D6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {7A4F31DE-22C7-4662-A6D4-63D1DCDD6D6E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7A4F31DE-22C7-4662-A6D4-63D1DCDD6D6E}.Debug|x64.ActiveCfg = Debug|x64
-               {7A4F31DE-22C7-4662-A6D4-63D1DCDD6D6E}.Debug|x64.Build.0 = Debug|x64
-               {7A4F31DE-22C7-4662-A6D4-63D1DCDD6D6E}.Debug|x86.ActiveCfg = Debug|x86
-               {7A4F31DE-22C7-4662-A6D4-63D1DCDD6D6E}.Debug|x86.Build.0 = Debug|x86
-               {7A4F31DE-22C7-4662-A6D4-63D1DCDD6D6E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7A4F31DE-22C7-4662-A6D4-63D1DCDD6D6E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {7A4F31DE-22C7-4662-A6D4-63D1DCDD6D6E}.Release|x64.ActiveCfg = Release|x64
-               {7A4F31DE-22C7-4662-A6D4-63D1DCDD6D6E}.Release|x64.Build.0 = Release|x64
-               {7A4F31DE-22C7-4662-A6D4-63D1DCDD6D6E}.Release|x86.ActiveCfg = Release|x86
-               {7A4F31DE-22C7-4662-A6D4-63D1DCDD6D6E}.Release|x86.Build.0 = Release|x86
-               {E0060C4B-2D50-4912-A2E6-29E897ED1767}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E0060C4B-2D50-4912-A2E6-29E897ED1767}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E0060C4B-2D50-4912-A2E6-29E897ED1767}.Debug|x64.ActiveCfg = Debug|x64
-               {E0060C4B-2D50-4912-A2E6-29E897ED1767}.Debug|x64.Build.0 = Debug|x64
-               {E0060C4B-2D50-4912-A2E6-29E897ED1767}.Debug|x86.ActiveCfg = Debug|x86
-               {E0060C4B-2D50-4912-A2E6-29E897ED1767}.Debug|x86.Build.0 = Debug|x86
-               {E0060C4B-2D50-4912-A2E6-29E897ED1767}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E0060C4B-2D50-4912-A2E6-29E897ED1767}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E0060C4B-2D50-4912-A2E6-29E897ED1767}.Release|x64.ActiveCfg = Release|x64
-               {E0060C4B-2D50-4912-A2E6-29E897ED1767}.Release|x64.Build.0 = Release|x64
-               {E0060C4B-2D50-4912-A2E6-29E897ED1767}.Release|x86.ActiveCfg = Release|x86
-               {E0060C4B-2D50-4912-A2E6-29E897ED1767}.Release|x86.Build.0 = Release|x86
-               {AA120201-343F-4A1D-BDA5-930F9B28DD9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {AA120201-343F-4A1D-BDA5-930F9B28DD9A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AA120201-343F-4A1D-BDA5-930F9B28DD9A}.Debug|x64.ActiveCfg = Debug|x64
-               {AA120201-343F-4A1D-BDA5-930F9B28DD9A}.Debug|x64.Build.0 = Debug|x64
-               {AA120201-343F-4A1D-BDA5-930F9B28DD9A}.Debug|x86.ActiveCfg = Debug|x86
-               {AA120201-343F-4A1D-BDA5-930F9B28DD9A}.Debug|x86.Build.0 = Debug|x86
-               {AA120201-343F-4A1D-BDA5-930F9B28DD9A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AA120201-343F-4A1D-BDA5-930F9B28DD9A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {AA120201-343F-4A1D-BDA5-930F9B28DD9A}.Release|x64.ActiveCfg = Release|x64
-               {AA120201-343F-4A1D-BDA5-930F9B28DD9A}.Release|x64.Build.0 = Release|x64
-               {AA120201-343F-4A1D-BDA5-930F9B28DD9A}.Release|x86.ActiveCfg = Release|x86
-               {AA120201-343F-4A1D-BDA5-930F9B28DD9A}.Release|x86.Build.0 = Release|x86
-               {48403D8A-08D8-48FC-BF1B-F0239154AD85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {48403D8A-08D8-48FC-BF1B-F0239154AD85}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {48403D8A-08D8-48FC-BF1B-F0239154AD85}.Debug|x64.ActiveCfg = Debug|x64
-               {48403D8A-08D8-48FC-BF1B-F0239154AD85}.Debug|x64.Build.0 = Debug|x64
-               {48403D8A-08D8-48FC-BF1B-F0239154AD85}.Debug|x86.ActiveCfg = Debug|x86
-               {48403D8A-08D8-48FC-BF1B-F0239154AD85}.Debug|x86.Build.0 = Debug|x86
-               {48403D8A-08D8-48FC-BF1B-F0239154AD85}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {48403D8A-08D8-48FC-BF1B-F0239154AD85}.Release|Any CPU.Build.0 = Release|Any CPU
-               {48403D8A-08D8-48FC-BF1B-F0239154AD85}.Release|x64.ActiveCfg = Release|x64
-               {48403D8A-08D8-48FC-BF1B-F0239154AD85}.Release|x64.Build.0 = Release|x64
-               {48403D8A-08D8-48FC-BF1B-F0239154AD85}.Release|x86.ActiveCfg = Release|x86
-               {48403D8A-08D8-48FC-BF1B-F0239154AD85}.Release|x86.Build.0 = Release|x86
-               {9E6CD7E6-0B84-4088-9097-1839A14B49DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {9E6CD7E6-0B84-4088-9097-1839A14B49DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {9E6CD7E6-0B84-4088-9097-1839A14B49DB}.Debug|x64.ActiveCfg = Debug|x64
-               {9E6CD7E6-0B84-4088-9097-1839A14B49DB}.Debug|x64.Build.0 = Debug|x64
-               {9E6CD7E6-0B84-4088-9097-1839A14B49DB}.Debug|x86.ActiveCfg = Debug|x86
-               {9E6CD7E6-0B84-4088-9097-1839A14B49DB}.Debug|x86.Build.0 = Debug|x86
-               {9E6CD7E6-0B84-4088-9097-1839A14B49DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {9E6CD7E6-0B84-4088-9097-1839A14B49DB}.Release|Any CPU.Build.0 = Release|Any CPU
-               {9E6CD7E6-0B84-4088-9097-1839A14B49DB}.Release|x64.ActiveCfg = Release|x64
-               {9E6CD7E6-0B84-4088-9097-1839A14B49DB}.Release|x64.Build.0 = Release|x64
-               {9E6CD7E6-0B84-4088-9097-1839A14B49DB}.Release|x86.ActiveCfg = Release|x86
-               {9E6CD7E6-0B84-4088-9097-1839A14B49DB}.Release|x86.Build.0 = Release|x86
-               {3477E658-CB14-4D86-8909-F7448C17AC9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {3477E658-CB14-4D86-8909-F7448C17AC9A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {3477E658-CB14-4D86-8909-F7448C17AC9A}.Debug|x64.ActiveCfg = Debug|x64
-               {3477E658-CB14-4D86-8909-F7448C17AC9A}.Debug|x64.Build.0 = Debug|x64
-               {3477E658-CB14-4D86-8909-F7448C17AC9A}.Debug|x86.ActiveCfg = Debug|x86
-               {3477E658-CB14-4D86-8909-F7448C17AC9A}.Debug|x86.Build.0 = Debug|x86
-               {3477E658-CB14-4D86-8909-F7448C17AC9A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {3477E658-CB14-4D86-8909-F7448C17AC9A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {3477E658-CB14-4D86-8909-F7448C17AC9A}.Release|x64.ActiveCfg = Release|x64
-               {3477E658-CB14-4D86-8909-F7448C17AC9A}.Release|x64.Build.0 = Release|x64
-               {3477E658-CB14-4D86-8909-F7448C17AC9A}.Release|x86.ActiveCfg = Release|x86
-               {3477E658-CB14-4D86-8909-F7448C17AC9A}.Release|x86.Build.0 = Release|x86
-               {70F91400-AB4E-4A19-A137-9B5BF36C8543}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {70F91400-AB4E-4A19-A137-9B5BF36C8543}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {70F91400-AB4E-4A19-A137-9B5BF36C8543}.Debug|x64.ActiveCfg = Debug|x64
-               {70F91400-AB4E-4A19-A137-9B5BF36C8543}.Debug|x64.Build.0 = Debug|x64
-               {70F91400-AB4E-4A19-A137-9B5BF36C8543}.Debug|x86.ActiveCfg = Debug|x86
-               {70F91400-AB4E-4A19-A137-9B5BF36C8543}.Debug|x86.Build.0 = Debug|x86
-               {70F91400-AB4E-4A19-A137-9B5BF36C8543}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {70F91400-AB4E-4A19-A137-9B5BF36C8543}.Release|Any CPU.Build.0 = Release|Any CPU
-               {70F91400-AB4E-4A19-A137-9B5BF36C8543}.Release|x64.ActiveCfg = Release|x64
-               {70F91400-AB4E-4A19-A137-9B5BF36C8543}.Release|x64.Build.0 = Release|x64
-               {70F91400-AB4E-4A19-A137-9B5BF36C8543}.Release|x86.ActiveCfg = Release|x86
-               {70F91400-AB4E-4A19-A137-9B5BF36C8543}.Release|x86.Build.0 = Release|x86
-               {361771B0-7948-412E-86ED-D41157F6DE6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {361771B0-7948-412E-86ED-D41157F6DE6B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {361771B0-7948-412E-86ED-D41157F6DE6B}.Debug|x64.ActiveCfg = Debug|x64
-               {361771B0-7948-412E-86ED-D41157F6DE6B}.Debug|x64.Build.0 = Debug|x64
-               {361771B0-7948-412E-86ED-D41157F6DE6B}.Debug|x86.ActiveCfg = Debug|x86
-               {361771B0-7948-412E-86ED-D41157F6DE6B}.Debug|x86.Build.0 = Debug|x86
-               {361771B0-7948-412E-86ED-D41157F6DE6B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {361771B0-7948-412E-86ED-D41157F6DE6B}.Release|Any CPU.Build.0 = Release|Any CPU
-               {361771B0-7948-412E-86ED-D41157F6DE6B}.Release|x64.ActiveCfg = Release|x64
-               {361771B0-7948-412E-86ED-D41157F6DE6B}.Release|x64.Build.0 = Release|x64
-               {361771B0-7948-412E-86ED-D41157F6DE6B}.Release|x86.ActiveCfg = Release|x86
-               {361771B0-7948-412E-86ED-D41157F6DE6B}.Release|x86.Build.0 = Release|x86
-               {31C7F5AD-ED22-4F02-82F5-084C48598AA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {31C7F5AD-ED22-4F02-82F5-084C48598AA9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {31C7F5AD-ED22-4F02-82F5-084C48598AA9}.Debug|x64.ActiveCfg = Debug|x64
-               {31C7F5AD-ED22-4F02-82F5-084C48598AA9}.Debug|x64.Build.0 = Debug|x64
-               {31C7F5AD-ED22-4F02-82F5-084C48598AA9}.Debug|x86.ActiveCfg = Debug|x86
-               {31C7F5AD-ED22-4F02-82F5-084C48598AA9}.Debug|x86.Build.0 = Debug|x86
-               {31C7F5AD-ED22-4F02-82F5-084C48598AA9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {31C7F5AD-ED22-4F02-82F5-084C48598AA9}.Release|Any CPU.Build.0 = Release|Any CPU
-               {31C7F5AD-ED22-4F02-82F5-084C48598AA9}.Release|x64.ActiveCfg = Release|x64
-               {31C7F5AD-ED22-4F02-82F5-084C48598AA9}.Release|x64.Build.0 = Release|x64
-               {31C7F5AD-ED22-4F02-82F5-084C48598AA9}.Release|x86.ActiveCfg = Release|x86
-               {31C7F5AD-ED22-4F02-82F5-084C48598AA9}.Release|x86.Build.0 = Release|x86
-       EndGlobalSection
-EndGlobal