* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / System.Data / Test / ProviderTests / System.Data.SqlClient.jvm / SqlDataAdapter / SqlDataAdapter_RowUpdating.cs
1 using System;\r
2 using System.Data;\r
3 using System.Data.Common;\r
4 using System.Data.SqlClient;\r
5 \r
6 using MonoTests.System.Data.Utils;\r
7 \r
8 using NUnit.Framework;\r
9 \r
10 namespace MonoTests.System.Data.SqlClient\r
11 {\r
12         [TestFixture]\r
13         public class SqlDataAdapter_RowUpdating : ADONetTesterClass\r
14         {\r
15                 public static void Main()\r
16                 {\r
17                         SqlDataAdapter_RowUpdating tc = new SqlDataAdapter_RowUpdating();\r
18                         Exception exp = null;\r
19                         try\r
20                         {\r
21                                 tc.BeginTest("SqlDataAdapter_RowUpdating");\r
22                                 tc.run();\r
23                         }\r
24                         catch(Exception ex)\r
25                         {\r
26                                 exp = ex;\r
27                         }\r
28                         finally\r
29                         {\r
30                                 tc.EndTest(exp);\r
31                         }\r
32                 }\r
33 \r
34 \r
35                 //public TestClass():base(true){}\r
36 \r
37                 //Activate this constructor to log Failures to a log file\r
38                 //public TestClass(System.IO.TextWriter tw):base(tw, false){}\r
39 \r
40 \r
41                 //Activate this constructor to log All to a log file\r
42                 //public TestClass(System.IO.TextWriter tw):base(tw, true){}\r
43 \r
44                 //BY DEFAULT LOGGING IS DONE TO THE STANDARD OUTPUT ONLY FOR FAILURES\r
45 \r
46                 int EventCounter = 0;\r
47                 DataRow drInsert,drDelete,drUpdate;\r
48                 [Test] \r
49                 public void run()\r
50                 {\r
51                         if (ConnectedDataProvider.GetDbType() != DataBaseServer.SQLServer)\r
52                         {\r
53                                 Log("Test \"SqlDataAdapter_RowUpdated\" skipped: [Test applies only to sql server]");\r
54                                 return;\r
55                         }\r
56 \r
57                         Exception exp = null;\r
58 \r
59                         SqlDataAdapter  sqlDa = new SqlDataAdapter();\r
60                         SqlConnection con = new SqlConnection(ConnectedDataProvider.ConnectionStringSQLClient); \r
61 \r
62                         sqlDa.SelectCommand = new SqlCommand("",con);\r
63 \r
64                         base.SqlDataAdapter_BuildUpdateCommands(ref sqlDa);             \r
65                         // --------- get data from DB -----------------\r
66 \r
67                         DataSet ds = base.PrepareDBData_Update((DbDataAdapter)sqlDa,true);\r
68 \r
69 \r
70                         // add event handler\r
71                         sqlDa.RowUpdating+=new SqlRowUpdatingEventHandler(sqlDa_RowUpdating);\r
72                         \r
73                         \r
74                         \r
75                 \r
76                                 \r
77                         //insert ,delete, update\r
78                         drInsert = ds.Tables[0].NewRow();\r
79                         drInsert.ItemArray = new object[] {9991,"Ofer","Borshtein","Insert"};\r
80                         drDelete = ds.Tables[0].Rows.Find(9992);\r
81                         drUpdate = ds.Tables[0].Rows.Find(9993);\r
82                         \r
83                         ds.Tables[0].Rows.Add(drInsert);\r
84                         drDelete.Delete();\r
85                         drUpdate["Title"] = "Jack the ripper"; \r
86 \r
87                         //execute update to db, will raise events\r
88                         sqlDa.Update(ds);\r
89 \r
90                         try\r
91                         {\r
92                                 BeginCase("EventCounter ");\r
93                                 Compare(EventCounter ,3);\r
94                         }\r
95                         catch(Exception ex)     {exp = ex;}\r
96                         finally {EndCase(exp); exp = null;}\r
97                         \r
98                         sqlDa.RowUpdating-= new SqlRowUpdatingEventHandler(sqlDa_RowUpdating);\r
99                         \r
100                         //close connection\r
101                         if (  ((IDbDataAdapter)sqlDa).SelectCommand.Connection.State != ConnectionState.Closed )\r
102                                 ((IDbDataAdapter)sqlDa).SelectCommand.Connection.Close();\r
103                 }\r
104 \r
105 \r
106                 private void sqlDa_RowUpdating(object sender, SqlRowUpdatingEventArgs e)\r
107                 {\r
108                         Exception exp = null;\r
109                         switch (e.StatementType)\r
110                         {\r
111                                 case StatementType.Insert: \r
112                                         try\r
113                                         {\r
114                                                 BeginCase("RowInsert");\r
115                                                 Compare(drInsert ,e.Row );\r
116                                         }\r
117                                         catch(Exception ex)     {exp = ex;}\r
118                                         finally {EndCase(exp); exp = null;}\r
119                                         EventCounter++;\r
120                                         break;\r
121                                 case StatementType.Delete:\r
122                                         try\r
123                                         {\r
124                                                 BeginCase("RowDelete");\r
125                                                 Compare(drDelete ,e.Row );\r
126                                         }\r
127                                         catch(Exception ex)     {exp = ex;}\r
128                                         finally {EndCase(exp); exp = null;}\r
129                                         EventCounter++;\r
130                                         break;\r
131                                 case StatementType.Update:\r
132                                         try\r
133                                         {\r
134                                                 BeginCase("RowUpdate");\r
135                                                 Compare(drUpdate ,e.Row );\r
136                                         }\r
137                                         catch(Exception ex)     {exp = ex;}\r
138                                         finally {EndCase(exp); exp = null;}\r
139                                         EventCounter++;\r
140                                         break;\r
141                         }\r
142 \r
143                 }\r
144         }\r
145 }