2009-07-11 Michael Barker <mike@middlesoft.co.uk>
[mono.git] / mcs / class / System.Data.Linq / src / DbLinq / Test / Providers / ReadTests_ReferenceLoading.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Linq;\r
4 using System.Text;\r
5 using Test_NUnit;\r
6 using NUnit.Framework;\r
7 using Test_NUnit.Linq_101_Samples;\r
8 using System.Data.Linq;\r
9 \r
10 using nwind;\r
11 \r
12 // test ns \r
13 #if MYSQL\r
14     namespace Test_NUnit_MySql\r
15 #elif ORACLE && ODP\r
16     namespace Test_NUnit_OracleODP\r
17 #elif ORACLE\r
18     namespace Test_NUnit_Oracle\r
19 #elif POSTGRES\r
20     namespace Test_NUnit_PostgreSql\r
21 #elif SQLITE\r
22     namespace Test_NUnit_Sqlite\r
23 #elif INGRES\r
24     namespace Test_NUnit_Ingres\r
25 #elif MSSQL && L2SQL\r
26     namespace Test_NUnit_MsSql_Strict\r
27 #elif MSSQL\r
28     namespace Test_NUnit_MsSql\r
29 #elif FIREBIRD\r
30     namespace Test_NUnit_Firebird\r
31 #endif\r
32 {\r
33     [TestFixture]\r
34     public class ReadTests_ReferenceLoading : TestBase\r
35     {\r
36 \r
37         [Test]\r
38         public void ReferenceLoading01()\r
39         {\r
40             var db = CreateDB();\r
41             var order = db.Orders.First();\r
42             Assert.IsNotNull(order.Employee);\r
43         }\r
44 \r
45         [Test]\r
46         public void ReferenceLoading02()\r
47         {\r
48             var db = CreateDB();\r
49             var c = db.Customers.First();\r
50             Assert.IsNotNull(c.Orders.First().Employee);\r
51         }\r
52 \r
53         [Test]\r
54         public void ReferenceLoading03()\r
55         {\r
56             var db = CreateDB();\r
57             var employeeTerritory = db.EmployeeTerritories.First();\r
58             Assert.IsNotNull(employeeTerritory.Territory.Region.RegionID);\r
59         }\r
60 \r
61         [Test]\r
62         public void ReferenceLoading04()\r
63         {\r
64             var db = CreateDB();\r
65             var q = db.Employees.Select(e => new { e.Region });\r
66 \r
67             var list = q.ToList();\r
68             Assert.AreEqual(db.Employees.Count(), list.Count);\r
69         }\r
70 \r
71 #if !DEBUG && (SQLITE || (MSSQL && !MONO_STRICT))\r
72         [Explicit]\r
73 #endif\r
74         [Test]\r
75         public void ComplexProjection01()\r
76         {\r
77             var db = CreateDB();\r
78             var q = db.Employees.Select(e => e.Orders);\r
79 \r
80             var list = q.ToList();\r
81             Assert.AreEqual(db.Employees.Count(), list.Count);\r
82         }\r
83 \r
84 #if !DEBUG && (SQLITE || (MSSQL && !MONO_STRICT))\r
85         [Explicit]\r
86 #endif\r
87         [Test]\r
88         public void ComplexProjection02()\r
89         {\r
90             var db = CreateDB();\r
91             var q = db.Employees.Select(e => new { e.Orders });\r
92 \r
93             var list = q.ToList();\r
94             Assert.AreEqual(db.Employees.Count(), list.Count);\r
95         }\r
96 \r
97 \r
98 #if !DEBUG && (SQLITE || (MSSQL && !MONO_STRICT))\r
99         [Explicit]\r
100 #endif\r
101         [Test]\r
102         public void ComplexProjection03()\r
103         {\r
104             var db = CreateDB();\r
105             var q = db.Employees.Select(e => e.Orders.Select(o => o.OrderID));\r
106 \r
107             var list = q.ToList();\r
108             Assert.AreEqual(db.Employees.Count(), list.Count);\r
109         }\r
110 \r
111 \r
112 #if !DEBUG && (SQLITE || (MSSQL && !MONO_STRICT))\r
113         [Explicit]\r
114 #endif\r
115         [Test]\r
116         public void ComplexProjection04()\r
117         {\r
118             var db = CreateDB();\r
119             var q = db.Employees.Select(e => e.Orders.Select(o => o.OrderID));\r
120 \r
121             var list = q.ToList();\r
122             Assert.AreEqual(db.Employees.Count(), list.Count);\r
123         }\r
124 \r
125 #if !DEBUG && (SQLITE || (MSSQL && !MONO_STRICT))\r
126         [Explicit]\r
127 #endif\r
128         [Test]\r
129         public void ComplexProjection05()\r
130         {\r
131             var db = CreateDB();\r
132             var q = db.Orders.Select(o => o.Employee.EmployeeTerritories);\r
133 \r
134             var list = q.ToList();\r
135             Assert.AreEqual(db.Orders.Count(), list.Count);\r
136         }\r
137 \r
138 #if !DEBUG && (SQLITE || (MSSQL && !MONO_STRICT))\r
139         [Explicit]\r
140 #endif\r
141         [Test]\r
142         public void ComplexProjection06()\r
143         {\r
144             var db = CreateDB();\r
145             var q = db.Orders.Select(o => new { o.Employee, X = o.OrderDetails.Select(od => od.Product) });\r
146 \r
147             var list = q.ToList();\r
148             Assert.AreEqual(db.Orders.Count(), list.Count);\r
149         }\r
150 \r
151 #if !DEBUG && (SQLITE || (MSSQL && !MONO_STRICT))\r
152         [Explicit]\r
153 #endif\r
154         [Test]\r
155         public void ComplexProjection07()\r
156         {\r
157             var db = CreateDB();\r
158             var q = db.Employees.Select(e => e.Orders.Select(o=>o));\r
159 \r
160             var list = q.ToList();\r
161         }\r
162     }\r
163 }\r