Merge pull request #4212 from BrzVlad/fix-ephemeron-leak
[mono.git] / mcs / class / System.Data / Test / System.Data.Common / DbProviderFactoriesConfigurationHandlerTest.cs
1 //
2 // System.Data.Common.DbProviderFactoriesConfigurationHandlerTest.cs
3 //
4 // Author:
5 //   Sureshkumar T (tsureshkumar@novell.com)
6 //
7 //
8 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
9 //
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
17 // 
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
20 // 
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 //
29
30 #if !MOBILE && !MONOMAC
31
32 using System.IO;
33 using System.Xml;
34 using System.Globalization;
35 using System.Configuration;
36
37 using System.Data;
38 using System.Data.Common;
39
40 using NUnit.Framework;
41
42 namespace MonoTests.System.Data.Common 
43 {
44         [TestFixture]
45         public class DbProviderFactoriesConfigurationHandlerTest
46         {
47                 const string configSection = "system.data_test";
48
49                 [Test]
50                 public void GetConfigTest ()
51                 {
52                         object o = ConfigurationSettings.GetConfig (configSection);
53                         DataSet ds = o as DataSet;
54                         Assert.IsNotNull (ds, "#A1");
55                         Assert.AreEqual ("system.data", ds.DataSetName, "#A2");
56                         Assert.AreEqual (1, ds.Tables.Count, "#A3");
57
58                         DataTable dt = ds.Tables [0];
59                         Assert.AreEqual ("DbProviderFactories", dt.TableName, "#B1");
60                         Assert.AreEqual (4, dt.Columns.Count, "#B2");
61                         Assert.IsNotNull (dt.Columns ["Name"], "#B3");
62                         Assert.IsNotNull (dt.Columns ["Description"], "#B4");
63                         Assert.IsNotNull (dt.Columns ["InvariantName"], "#B5");
64                         Assert.IsNotNull (dt.Columns ["AssemblyQualifiedName"], "#B6");
65
66                         DataColumn [] pk = dt.PrimaryKey;
67                         Assert.AreEqual (1, pk.Length, "#C1");
68                         Assert.AreEqual ("InvariantName", pk [0].ColumnName, "#C2");
69                 }
70
71                 [Test]
72                 public void PopulateTest ()
73                 {
74                         object o = ConfigurationSettings.GetConfig (configSection);
75                         DataSet ds = o as DataSet;
76                         DataTable dt = ds.Tables [0];
77                         Assert.AreEqual (2, dt.Rows.Count, "#A1");
78
79                         DataRow r = dt.Rows.Find ("ProviderTest.InvariantName");
80                         Assert.AreEqual ("ProviderTest.Name", r ["Name"].ToString (), "#B2");
81                         Assert.AreEqual ("ProviderTest.Description", r ["Description"].ToString (), "#B3");
82                         Assert.AreEqual ("ProviderTest.InvariantName", r ["InvariantName"].ToString (), "#B4");
83                         Assert.AreEqual ("ProviderTest.AssemblyQualifiedName", r ["AssemblyQualifiedName"].ToString (), "#B5");
84
85                         r = dt.Rows.Find ("ProviderTest4.InvariantName");
86                         Assert.AreEqual ("ProviderTest4.Name", r ["Name"].ToString (), "#A2");
87                         Assert.AreEqual ("ProviderTest4.Description", r ["Description"].ToString (), "#A3");
88                         Assert.AreEqual ("ProviderTest4.InvariantName", r ["InvariantName"].ToString (), "#A4");
89                         Assert.AreEqual ("ProviderTest4.AssemblyQualifiedName", r ["AssemblyQualifiedName"].ToString (), "#A5");
90                 }
91
92                 [Test]
93                 [Category ("NotWorking")]
94                 public void PopulateTest_Machine ()
95                 {
96                         object o = ConfigurationSettings.GetConfig ("system.data");
97                         DataSet ds = o as DataSet;
98                         DataTable dt = ds.Tables ["DbProviderFactories"];
99                         Assert.IsNotNull (dt, "#B1");
100                         Assert.IsTrue (dt.Rows.Count > 1, "#B2");
101                         DataRow r = dt.Rows.Find ("ProviderTest2.InvariantName");
102                         Assert.AreEqual ("ProviderTest2.Name", r ["Name"].ToString (), "#B3");
103                         Assert.AreEqual ("ProviderTest2.Description", r ["Description"].ToString (), "#B4");
104                         Assert.AreEqual ("ProviderTest2.InvariantName", r ["InvariantName"].ToString (), "#B5");
105                         Assert.AreEqual ("ProviderTest2.AssemblyQualifiedName", r ["AssemblyQualifiedName"].ToString (), "#B6");
106                 }
107
108                 [Test]
109                 public void PopulateFactoriesTest () // bug #80894
110                 {
111                         DataTable dt = DbProviderFactories.GetFactoryClasses ();
112                 }
113         }
114 }
115
116 #endif