Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mcs / tests / gtest-etree-27.cs
1 using System;
2 using System.Linq.Expressions;
3 using System.Collections.Generic;
4
5 public class Node
6 {
7         Node parent;
8
9         public Node ()
10         {
11                 Values = new List<int> ();
12         }
13
14         public string Name { get; set; }
15
16         public Node Parent {
17                 get {
18                         return parent ?? new Node ();
19                 }
20                 set {
21                         parent = value;
22                 }
23         }
24
25         public List<int> Values { get; set; }
26
27         public static int Main ()
28         {
29                 Expression<Func<Node>> e = () => new Node () { Parent = { Name = "Parent" } };
30                 var mie = (MemberInitExpression) e.Body;
31                 if (mie.Bindings[0].BindingType != MemberBindingType.MemberBinding)
32                         return 1;
33
34                 e.Compile () ();
35
36                 e = () => new Node () { Values = { 1, 2, 3 } };
37                 mie = (MemberInitExpression) e.Body;
38                 if (mie.Bindings[0].BindingType != MemberBindingType.ListBinding)
39                         return 2;
40
41                 e.Compile () ();
42
43                 e = () => new Node () { Parent = null };
44                 mie = (MemberInitExpression) e.Body;
45                 if (mie.Bindings[0].BindingType != MemberBindingType.Assignment)
46                         return 3;
47
48                 e.Compile () ();
49
50                 e = () => new Node () { Values = { } };
51                 mie = (MemberInitExpression) e.Body;
52                 if (mie.Bindings[0].BindingType != MemberBindingType.MemberBinding)
53                         return 4;
54
55                 e.Compile () ();
56
57                 e = () => new Node() { Parent = { Name = "Parent" }, Values = { 4, 5, 7, 8 } };
58                 mie = (MemberInitExpression) e.Body;
59                 if (mie.Bindings[0].BindingType != MemberBindingType.MemberBinding)
60                         return 5;
61                 
62                 if (mie.Bindings[1].BindingType != MemberBindingType.ListBinding)
63                         return 6;
64
65                 e.Compile () ();
66                 Console.WriteLine ("ok");
67                 return 0;
68         }
69 }