/mcs/tests/eval-test.cs
C# | 85 lines | 66 code | 15 blank | 4 comment | 20 complexity | f2ba80179487a092de58f6fad8855ea8 MD5 | raw file
Possible License(s): LGPL-2.0, MPL-2.0-no-copyleft-exception, CC-BY-SA-3.0, GPL-2.0, LGPL-2.1
- using System;
- using Mono.CSharp;
- public class MyTest {
- static void Run (string id, string stmt)
- {
- if (!Evaluator.Run (stmt))
- Console.WriteLine ("Failed on test {0}", id);
- }
- static void Evaluate (string id, string expr, object expected)
- {
- try {
- object res = Evaluator.Evaluate (expr);
- if (res == null && expected == null)
- return;
- if (!expected.Equals (res)){
- Console.WriteLine ("Failed on test {2} Expecting {0}, got {1}", expected, res, id);
- throw new Exception ();
- }
- } catch {
- Console.WriteLine ("Failed on test {0}", id);
- throw;
- }
- }
-
- static void Main ()
- {
- Evaluator.Init (new string [0]); //new string [] { "-v", "-v" });
- //
- // This fails because of the grammar issue with the pointer type
- // Evaluate ("multiply", "1*2;", 2);
- //
- Run ("1", "System.Console.WriteLine (100);");
- Run ("Length", "var a = new int [] {1,2,3}; var b = a.Length;");
-
- Evaluate ("CompareString", "\"foo\" == \"bar\";", false);
- Evaluate ("CompareInt", "var a = 1; a+2;", 3);
- Evaluator.Run ("using System; using System.Linq;");
- Run ("LINQ-1", "var a = new int[]{1,2,3};\nfrom x in a select x;");
- Run ("LINQ-2", "var a = from f in System.IO.Directory.GetFiles (\"/tmp\") where f == \"passwd\" select f;");
- Evaluator.ReferenceAssembly (typeof (MyTest).Assembly);
- Evaluate ("assembly reference test", "typeof (MyTest) != null;", true);
- Run ("LINQ-3", "var first_scope = new int [] {1,2,3};");
- Run ("LINQ-4", "var second_scope = from x in first_scope select x;");
- string prefix = "";
- string [] res = Evaluator.GetCompletions ("ConsoleK", out prefix);
- if (res [0] != "ey" || res [1] != "eyInfo"){
- Console.WriteLine (res [0]);
- Console.WriteLine (res [1]);
- throw new Exception ("Expected two completions ConsoleKey and ConsoleKeyInfo");
- }
- res = Evaluator.GetCompletions ("Converte", out prefix);
- if (res [0] != "r<"){
- throw new Exception ("Expected one completion for Conveter<");
- }
- res = Evaluator.GetCompletions ("Sys", out prefix);
- if (res [0] != "tem"){
- throw new Exception ("Expected at least a conversion for System");
- }
- res = Evaluator.GetCompletions ("System.Int3", out prefix);
- if (res [0] != "2"){
- throw new Exception ("Expected completion to System.Int32");
- }
- res = Evaluator.GetCompletions ("new System.Text.StringBuilder () { Ca", out prefix);
- if (res [0] != "pacity"){
- throw new Exception ("Expected completion to Capacity");
- }
- res = Evaluator.GetCompletions ("new System.Text.StringBuilder () { ", out prefix);
- if (res.Length != 4){
- throw new Exception ("Epxected 4 completions (Capacity Chars Length MaxCapacity)");
- }
- }
-
- }