In .:
[mono.git] / mcs / class / System.Data / Test / System.Data / RowNotInTableExceptionTest.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 using System;
31 using System.Data;
32 using MonoTests.System.Data.Utils;
33
34 namespace MonoTests_System.Data
35 {
36         [TestFixture] public class RowNotInTableExceptionTest
37         {
38                 [Test]
39                 public void Generate()
40                 {
41                         DataSet ds = new DataSet();
42                         ds.Tables.Add(DataProvider.CreateParentDataTable());
43                         ds.Tables.Add(DataProvider.CreateChildDataTable());
44                         ds.Relations.Add(new DataRelation("myRelation",ds.Tables[0].Columns[0],ds.Tables[1].Columns[0]));
45
46                         DataRow drParent = ds.Tables[0].Rows[0];
47                         DataRow drChild = ds.Tables[1].Rows[0];
48                         drParent.Delete();
49                         drChild.Delete();
50                         ds.AcceptChanges();
51
52                         // RowNotInTableException - AcceptChanges
53                         try
54                         {
55                                 drParent.AcceptChanges();
56                                 Assert.Fail("RNT1: AcceptChanges failed to raise (RowNotInTableException.");
57                         }
58                         catch (RowNotInTableException) {}
59                         catch (AssertionException) { throw; }
60                         catch (Exception exc)
61                         {
62                                 Assert.Fail("RNT2: AcceptChanges wrong exception type. Got: " + exc);
63                         }
64
65                         // RowNotInTableException - GetChildRows
66                         try
67                         {
68                                 drParent.GetChildRows("myRelation");
69                                 Assert.Fail("RNT1: GetChildRows failed to raise (RowNotInTableException.");
70                         }
71                         catch (RowNotInTableException) {}
72                         catch (AssertionException) { throw; }
73                         catch (Exception exc)
74                         {
75                                 Assert.Fail("RNT2: GetChildRows wrong exception type. Got: " + exc);
76                         }
77
78                         // RowNotInTableException - ItemArray
79                         object[] o = null;
80                         try
81                         {
82                                 o = drParent.ItemArray ;
83                                 Assert.Fail("RNT1: ItemArray failed to raise (RowNotInTableException.");
84                         }
85                         catch (RowNotInTableException) {}
86                         catch (AssertionException) { throw; }
87                         catch (Exception exc)
88                         {
89                                 Assert.Fail("RNT2: ItemArray wrong exception type. Got: " + exc);
90                         }
91
92                         // **********   don't throw exception (should be according to MSDN)     ***********************
93                         //              // RowNotInTableException - GetParentRow
94                         //              try
95                         //              {
96                         //                      DataRow dr = null;
97                         //                      dr = drChild.GetParentRow("myRelation"); 
98                         //                      Assert.Fail("RNT1: GetParentRow failed to raise (RowNotInTableException.");
99                         //              }
100                         //              catch (RowNotInTableException) {}
101                         //              catch (AssertionException) { throw; }
102                         //              catch (Exception exc)
103                         //              {
104                         //                      Assert.Fail("RNT2: GetParentRow wrong exception type. Got: " + exc);
105                         //              }
106
107                         // RowNotInTableException - GetParentRows
108                         DataRow[] dr = null;
109                         try
110                         {
111                                 dr = drChild.GetParentRows("myRelation"); 
112                                 Assert.Fail("RNT1: GetParentRows failed to raise (RowNotInTableException.");
113                         }
114                         catch (RowNotInTableException) {}
115                         catch (AssertionException) { throw; }
116                         catch (Exception exc)
117                         {
118                                 Assert.Fail("RNT2: GetParentRows wrong exception type. Got: " + exc);
119                         }
120
121                         // RowNotInTableException - RejectChanges
122                         try
123                         {
124                                 drParent.RejectChanges();
125                                 Assert.Fail("RNT1: RejectChanges failed to raise (RowNotInTableException.");
126                         }
127                         catch (RowNotInTableException) {}
128                         catch (AssertionException) { throw; }
129                         catch (Exception exc)
130                         {
131                                 Assert.Fail("RNT2: RejectChanges wrong exception type. Got: " + exc);
132                         }
133
134                         // RowNotInTableException - SetParentRow
135                         try
136                         {
137                                 drChild.SetParentRow(ds.Tables[0].Rows[1]);
138                                 Assert.Fail("RNT1: SetParentRow failed to raise (RowNotInTableException.");
139                         }
140                         catch (RowNotInTableException) {}
141                         catch (AssertionException) { throw; }
142                         catch (Exception exc)
143                         {
144                                 Assert.Fail("RNT2: SetParentRow wrong exception type. Got: " + exc);
145                         }
146                 }
147         }
148 }