Merge branch 'master' of github.com:mono/mono
[mono.git] / mcs / class / Mono.CSharp / Test / Evaluator / TypesTest.cs
1 using System;
2 using NUnit.Framework;
3 using Mono.CSharp;
4 using System.Collections;
5
6 namespace MonoTests.EvaluatorTest
7 {
8         [TestFixture]
9         public class TypesTest : EvaluatorFixture
10         {
11                 [Test]
12                 public void SimpleTypeStaticMethod ()
13                 {
14                         object res;
15                         Evaluator.Run ("class Y { public static int Test () { return 5; }}");
16                         res = Evaluator.Evaluate ("Y.Test ();");
17                         Assert.AreEqual (5, res, "#1");
18                 }
19
20                 [Test]
21                 public void SameTypeNameRedefinition ()
22                 {
23                         Evaluator.Run ("class X { }");
24                         Evaluator.Run ("class X { public static void Foo () { throw new System.ApplicationException (); } }");
25                         Evaluator.Run ("class X {}");
26                         Evaluator.Run ("class X { public static string Foo () { return \"Test\"; } }");
27                         object res = Evaluator.Evaluate ("X.Foo ();");
28                         Assert.AreEqual ("Test", res, "#1");
29                         Evaluator.Run ("class X { public static int Foo () { return 5; } }");
30                         res = Evaluator.Evaluate ("X.Foo ();");
31                         Assert.AreEqual (5, res, "#2");
32                 }
33
34                 [Test]
35                 public void SimpleConstructor ()
36                 {
37                         Evaluator.Run ("class Y2 { public int Value; public Y2 (){ Value = 99; } }");
38                         Evaluator.Run ("var a = new Y2 ();");
39                         object res = Evaluator.Evaluate ("a.Value;");
40                         Assert.AreEqual (99, res);
41                 }
42
43                 [Test]
44                 public void TypeOfType ()
45                 {
46                         Evaluator.Run ("struct Z { }");
47                         object res = Evaluator.Evaluate ("typeof (Z);");
48                         Assert.AreEqual ("Z", res.ToString ());
49                 }
50
51                 [Test]
52                 public void UsingAfterType ()
53                 {
54                         Evaluator.Run ("struct Z { }");
55                         Evaluator.Run ("using System;");
56                         Evaluator.Run ("struct Z { }");
57                 }
58
59                 [Test]
60                 public void GG ()
61                 {
62                         Evaluator.Run ("public class D { int x; public int X { get { return x; } set { x = value;} } };");
63                         Evaluator.Run ("public class C { public int Speed{get;set;}};");
64                 }
65         }
66 }