* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / System.Data / Test / System.Data.Tests.Mainsoft / System.Data / DataTable / DataTable_OnColumnChanged_D.cs
1 // Authors:
2 //   Rafael Mizrahi   <rafim@mainsoft.com>
3 //   Erez Lotan       <erezl@mainsoft.com>
4 //   Oren Gurfinkel   <oreng@mainsoft.com>
5 //   Ofer Borstein
6 // 
7 // Copyright (c) 2004 Mainsoft Co.
8 // 
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
16 // 
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 // 
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
28
29 using NUnit.Framework;
30
31
32 using System;
33 using System.Data;
34
35 using GHTUtils;
36 using GHTUtils.Base;
37
38 namespace tests.system_data_dll.System_Data
39 {
40 [TestFixture] public class DataTable_OnColumnChanged_D : GHTBase
41 {
42         [Test] public void Main()
43         {
44                 DataTable_OnColumnChanged_D tc = new DataTable_OnColumnChanged_D();
45                 Exception exp = null;
46                 try
47                 {
48                         tc.BeginTest("DataTable_OnColumnChanged_D");
49                         tc.run();
50                 }
51                 catch(Exception ex)
52                 {
53                         exp = ex;
54                 }
55                 finally
56                 {
57                         tc.EndTest(exp);
58                 }
59         }
60
61         //Activate This Construntor to log All To Standard output
62         //public TestClass():base(true){}
63
64         //Activate this constructor to log Failures to a log file
65         //public TestClass(System.IO.TextWriter tw):base(tw, false){}
66
67
68         //Activate this constructor to log All to a log file
69         //public TestClass(System.IO.TextWriter tw):base(tw, true){}
70
71         //BY DEFAULT LOGGING IS DONE TO THE STANDARD OUTPUT ONLY FOR FAILURES
72
73         private bool EventRaised ;
74         private bool EventValues ;
75         public void run()
76         {
77                 Exception exp = null;
78                 ProtectedTestClass dt = new ProtectedTestClass(); 
79
80                 EventRaised = false;
81                 dt.OnColumnChanged_Test();
82                 try
83                 {
84                         BeginCase("OnColumnChanged Event 1");
85                         Compare(EventRaised ,false );
86                 }
87                 catch(Exception ex)     {exp = ex;}
88                 finally {EndCase(exp); exp = null;}
89                 EventRaised = false;
90                 EventValues = false;
91                 dt.ColumnChanged += new DataColumnChangeEventHandler(OnColumnChanged_Handler);
92                 dt.OnColumnChanged_Test();
93                 try
94                 {
95                         BeginCase("OnColumnChanged Event 2");
96                         Compare(EventRaised ,true );
97                 }
98                 catch(Exception ex)     {exp = ex;}
99                 finally {EndCase(exp); exp = null;}
100                 try
101                 {
102                         BeginCase("OnColumnChanged Values");
103                         Compare(EventValues ,true );
104                 }
105                 catch(Exception ex)     {exp = ex;}
106                 finally {EndCase(exp); exp = null;}
107                 dt.ColumnChanged -= new DataColumnChangeEventHandler(OnColumnChanged_Handler);
108
109         }
110
111         private void OnColumnChanged_Handler(Object sender,DataColumnChangeEventArgs e)
112         {
113                 DataTable dt = (DataTable)sender;
114                 if ( (e.Column.Equals(dt.Columns["Value"])      )       &&
115                         (e.Row.Equals(dt.Rows[0])                               )       &&
116                         (e.ProposedValue.Equals("NewValue"))    )
117                 {
118                         EventValues = true;
119                 }
120                 else
121                 {
122                         EventValues = false;
123                 }
124                 EventRaised = true;
125         }
126
127         class ProtectedTestClass : DataTable
128         {
129                 public ProtectedTestClass() : base()
130                 {
131                         this.Columns.Add("Id",typeof(int));
132                         this.Columns.Add("Value",typeof(string));
133                         this.Rows.Add(new object[] {1,"one"});
134                         this.Rows.Add(new object[] {2,"two"});
135                         this.AcceptChanges();
136                 }
137                 public void OnColumnChanged_Test()
138                 {
139                         base.OnColumnChanged(new DataColumnChangeEventArgs(this.Rows[0],this.Columns["Value"],"NewValue")); 
140                 }
141         }
142
143
144 }
145 }