2009-04-24 Marek Habersack <mhabersack@novell.com>
[mono.git] / mcs / class / System.Data.Linq / src / DbLinq / Test / Providers / Attach.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Linq;\r
4 using System.Text;\r
5 using NUnit.Framework;\r
6 using Test_NUnit;\r
7 using System.Data.Linq;\r
8 \r
9 using nwind;\r
10 \r
11 // test ns \r
12 #if MYSQL\r
13     namespace Test_NUnit_MySql\r
14 #elif ORACLE && ODP\r
15     namespace Test_NUnit_OracleODP\r
16 #elif ORACLE\r
17     namespace Test_NUnit_Oracle\r
18 #elif POSTGRES\r
19     namespace Test_NUnit_PostgreSql\r
20 #elif SQLITE\r
21     namespace Test_NUnit_Sqlite\r
22 #elif INGRES\r
23     namespace Test_NUnit_Ingres\r
24 #elif MSSQL && MONO_STRICT\r
25     namespace Test_NUnit_MsSql_Strict\r
26 #elif MSSQL\r
27     namespace Test_NUnit_MsSql\r
28 #elif FIREBIRD\r
29     namespace Test_NUnit_Firebird\r
30 #endif\r
31 {\r
32     [TestFixture]\r
33     public class Attach : TestBase\r
34     {\r
35         [Test]\r
36         public void Attach01()\r
37         {\r
38             var db1 = CreateDB();\r
39             var employee = new Employee();\r
40 \r
41             db1.Employees.Attach(employee);\r
42         }\r
43 \r
44         [Test]\r
45         [ExpectedException(typeof(NotSupportedException))]\r
46         public void Attach02()\r
47         {\r
48             var db1 = CreateDB();\r
49             var db2 = CreateDB();\r
50             var employee = new Employee();\r
51 \r
52             db1.Employees.Attach(employee);\r
53 \r
54             // You can't attach the same object to multiple databases.\r
55             db2.Employees.Attach(employee);\r
56         }\r
57 \r
58         [Test, ExpectedException(typeof(NotSupportedException))]\r
59         public void Attach03()\r
60         {\r
61             var db1 = CreateDB();\r
62             var db2 = CreateDB();\r
63             var employee = db1.Employees.First();\r
64             db2.Employees.Attach(employee);\r
65         }\r
66 \r
67         [Test]\r
68         public void AttachAll01()\r
69         {\r
70             var db1 = CreateDB();\r
71             var employees = new Employee[] { new Employee { EmployeeID = 20 }, new Employee { EmployeeID = 21 } };\r
72             db1.Employees.AttachAll(employees);\r
73         }\r
74 \r
75         [Test]\r
76         [ExpectedException(typeof(System.Data.Linq.DuplicateKeyException))]\r
77         public void AttachAll02()\r
78         {\r
79             var db1 = CreateDB();\r
80             var employees = new Employee[] { new Employee { EmployeeID = 20 }, new Employee { EmployeeID = 20 } };\r
81             db1.Employees.AttachAll(employees);\r
82         }\r
83 \r
84 \r
85         [Test]\r
86         [ExpectedException(typeof(System.Data.Linq.DuplicateKeyException))]\r
87         public void AttachAll03()\r
88         {\r
89             var db1 = CreateDB();\r
90             var employee1 = db1.Employees.First();\r
91             var employees = new Employee[] { new Employee { EmployeeID = employee1.EmployeeID } };\r
92             db1.Employees.AttachAll(employees);\r
93         }\r
94 \r
95         [Test]\r
96         [ExpectedException(typeof(ChangeConflictException))]\r
97         public void NotExistingAttatch()\r
98         {\r
99             Random rand = new Random();\r
100 \r
101             Northwind db = CreateDB();\r
102             var orderDetail = new OrderDetail { OrderID = 0, ProductID = 0 };\r
103             db.OrderDetails.Attach(orderDetail);\r
104 \r
105             float newDiscount = 15 + (float)rand.NextDouble();\r
106             orderDetail.Discount = newDiscount;\r
107             db.SubmitChanges();\r
108         }\r
109     }\r
110 }\r