annotate UnitTests/CS/Data/ExecuteScalarListTest.cs @ 4:f757da6161a1

!bug 100 + 2h fixed gregression
author cin
date Sun, 24 Aug 2014 17:57:42 +0400
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Collections;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.Collections.Generic;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using System.Data.SqlTypes;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using System.IO;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using System.Xml;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 using BLToolkit.Data;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 namespace Data
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 public class ExecuteScalarListTest
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 //[TestFixtureSetUp]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 public void SetUp()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 using (var db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 var query = "INSERT INTO Person(FirstName, LastName, Gender) SELECT FirstName, LastName, Gender FROM Person";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 db.SetCommand(query).ExecuteNonQuery(); // 4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 db.SetCommand(query).ExecuteNonQuery(); // 8
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 db.SetCommand(query).ExecuteNonQuery(); // 16
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 db.SetCommand(query).ExecuteNonQuery(); // 32
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 db.SetCommand(query).ExecuteNonQuery(); // 64
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 db.SetCommand(query).ExecuteNonQuery(); // 128
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 db.SetCommand(query).ExecuteNonQuery(); // 256
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 db.SetCommand(query).ExecuteNonQuery(); // 512
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 db.SetCommand(query).ExecuteNonQuery(); // 1024
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 db.SetCommand(query).ExecuteNonQuery(); // 2048
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 db.SetCommand(query).ExecuteNonQuery(); // 4096
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 db.SetCommand(query).ExecuteNonQuery(); // 8192
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 db.SetCommand(query).ExecuteNonQuery(); // 16384
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 db.SetCommand(query).ExecuteNonQuery(); // 32768
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 db.SetCommand(query).ExecuteNonQuery(); // 65536
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 db.SetCommand(query).ExecuteNonQuery(); // 128k
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 db.SetCommand(query).ExecuteNonQuery(); // 256k
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 db.SetCommand(query).ExecuteNonQuery(); // 512k
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 db.SetCommand(query).ExecuteNonQuery(); // 1m
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 //[TestFixtureTearDown]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 public void TearDown()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 using (var db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 db.SetCommand("DELETE FROM Person WHERE PersonID > 2").ExecuteNonQuery();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 public void ScalarListTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 using (var db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 var array = db
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 #if SQLITE || SQLCE || SQLCE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 .SetCommand("SELECT * FROM Person")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 #else
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 .SetSpCommand("Person_SelectAll")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 .ExecuteScalarList(typeof(int));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 Assert.IsNotNull(array);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 Assert.IsTrue(array.Count > 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 public void ScalarListTest2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 using (var db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 var array = new ArrayList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 db.SetCommand("SELECT * FROM Person").ExecuteScalarList(array, typeof(int));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 Assert.IsNotNull(array);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 Assert.IsTrue(array.Count > 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 public void ScalarListTest3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 using (var db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 var array = db.SetCommand("SELECT * FROM Person").ExecuteScalarList(typeof(string),1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 Assert.IsNotNull(array);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 Assert.IsTrue(array.Count > 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 public void ScalarListTest4()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 using (var db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 var array = new ArrayList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 db.SetCommand("SELECT * FROM Person").ExecuteScalarList(array, typeof(string), "LastName");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 Assert.IsNotNull(array);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 Assert.IsTrue(array.Count > 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 public void GenericsScalarListTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 var cmd = "SELECT PersonID FROM Person UNION ALL SELECT NULL";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 #if !MSSQL && !SQLCE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 cmd += " FROM dual";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 using (var db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 var array = db.SetCommand(cmd).ExecuteScalarList<int?>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 Assert.IsNotNull(array);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 Assert.IsTrue(array.Count > 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 Assert.IsNull(array[array.Count - 1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 public void GenericsScalarListTest2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 var cmd = "SELECT PersonID FROM Person UNION ALL SELECT NULL";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135 #if !MSSQL && !SQLCE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 cmd += " FROM dual";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 using (var db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 var array = new List<int>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 db.SetCommand(cmd).ExecuteScalarList(array);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 Assert.IsNotNull(array);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145 Assert.IsTrue(array.Count > 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 Console.WriteLine("Records processed: {0}", array.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151 public void GenericsScalarListTest3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 using (var db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 var array = db.SetCommand("SELECT * FROM Person").ExecuteScalarList<string>(1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 Assert.IsNotNull(array);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 Assert.IsTrue(array.Count > 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 public void GenericsScalarListTest4()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165 using (var db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167 var array = new List<string>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169 db.SetCommand("SELECT * FROM Person").ExecuteScalarList(array, "LastName");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171 Assert.IsNotNull(array);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 Assert.IsTrue(array.Count > 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177 public void GenericsScalarListTest5()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179 using (var db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181 var cmd = "SELECT PersonID FROM Person UNION ALL SELECT NULL";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182 #if !MSSQL && !SQLCE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183 cmd += " FROM dual";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
184 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
185 var array = db.SetCommand(cmd).ExecuteScalarList<uint?>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
186
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
187 Assert.IsNotNull(array);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
188 Assert.IsTrue(array.Count > 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
189 Assert.IsNull(array[array.Count - 1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
190 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
191 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
192
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
193 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
194 public void GenericsScalarListTest6()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
195 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
196 using (var db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
197 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
198 var array = new List<uint>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
199
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
200 db.SetCommand("SELECT * FROM Person").ExecuteScalarList(array);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
201
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
202 Assert.IsNotNull(array);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
203 Assert.IsTrue(array.Count > 0);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
204 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
205 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
206
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
207 private List<T> TestType<T>(DbManager db, string columnName) where T : class
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
208 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
209 var array = db
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
210 .SetCommand(string.Format("SELECT {0} FROM DataTypeTest ORDER BY DataTypeID", columnName))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
211 .ExecuteScalarList<T>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
212
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
213 Assert.IsNotNull(array);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
214 Assert.IsTrue (array.Count > 1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
215 Assert.IsNotNull(array[1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
216
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
217 return array;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
218 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
219
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
220 private List<T?> TestNullableType<T>(DbManager db, string columnName) where T : struct
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
221 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
222 List<T?> array = db
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
223 .SetCommand(string.Format("SELECT {0} FROM DataTypeTest ORDER BY DataTypeID", columnName))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
224 .ExecuteScalarList<T?>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
225
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
226 Assert.IsNotNull(array);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
227 Assert.IsTrue (array.Count > 1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
228 Assert.IsNull (array[0]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
229 Assert.IsTrue (array[1].HasValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
230
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
231 return array;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
232 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
233
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
234 private List<T?> TestINullableType<T>(DbManager db, string columnName) where T : struct, INullable
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
235 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
236 var array = db
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
237 .SetCommand(string.Format("SELECT {0} FROM DataTypeTest ORDER BY DataTypeID", columnName))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
238 .ExecuteScalarList<T?>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
239
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
240 Assert.IsNotNull(array);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
241 Assert.IsTrue(array.Count > 1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
242 Assert.IsTrue(array[0].HasValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
243 Assert.IsTrue(array[0].Value.IsNull);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
244 Assert.IsTrue(array[1].HasValue);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
245
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
246 return array;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
247 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
248
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
249 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
250 public void GenericsScalarListDataTypesTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
251 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
252 using (var db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
253 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
254 // Base types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
255 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
256 TestNullableType<Boolean> (db, "Boolean_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
257 TestNullableType<Byte> (db, "Byte_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
258 TestNullableType<Char> (db, "Char_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
259 TestNullableType<DateTime> (db, "DateTime_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
260 TestNullableType<Decimal> (db, "Decimal_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
261 TestNullableType<Double> (db, "Double_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
262 TestNullableType<Guid> (db, "Guid_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
263 TestNullableType<Int16> (db, "Int16_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
264 TestNullableType<Int32> (db, "Int32_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
265 TestNullableType<Int64> (db, "Int64_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
266 TestNullableType<SByte> (db, "SByte_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
267 TestNullableType<Single> (db, "Single_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
268 TestType<String> (db, "String_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
269 TestNullableType<UInt16> (db, "UInt16_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
270 TestNullableType<UInt32> (db, "UInt32_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
271 TestNullableType<UInt64> (db, "UInt64_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
272
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
273 #if !ORACLE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
274 // Sql types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
275 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
276 TestINullableType<SqlBinary> (db, "Binary_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
277 TestINullableType<SqlBoolean> (db, "Boolean_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
278 TestINullableType<SqlByte> (db, "Byte_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
279 TestType<SqlBytes> (db, "Bytes_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
280 TestType<SqlChars> (db, "String_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
281 TestINullableType<SqlDateTime>(db, "DateTime_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
282 TestINullableType<SqlDecimal> (db, "Decimal_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
283 TestINullableType<SqlDouble> (db, "Double_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
284 #if !ACCESS
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
285 TestINullableType<SqlGuid> (db, "Bytes_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
286 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
287 TestINullableType<SqlGuid> (db, "Guid_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
288 TestINullableType<SqlInt16> (db, "Int16_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
289 TestINullableType<SqlInt32> (db, "Int32_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
290 TestINullableType<SqlInt64> (db, "Int64_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
291 TestINullableType<SqlMoney> (db, "Money_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
292 TestINullableType<SqlString> (db, "String_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
293 TestINullableType<SqlSingle> (db, "Single_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
294 TestType<SqlXml> (db, "Xml_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
295 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
296 // BLToolkit extension
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
297 var arrays = TestType<Byte[]>(db, "Binary_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
298 Console.WriteLine("{0}", arrays[1][0]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
299
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
300 var streams = TestType<Stream>(db, "Bytes_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
301 Console.WriteLine("{0}", streams[1].ReadByte());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
302
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
303 var symbols = TestType<Char[]>(db, "String_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
304 Assert.AreEqual(symbols[1][0], 's');
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
305
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
306 var xmlReaders = TestType<XmlReader>(db, "Xml_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
307 xmlReaders[1].MoveToContent();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
308 Assert.IsTrue(xmlReaders[1].ReadToDescendant("element"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
309 Console.WriteLine("{0}", xmlReaders[1].GetAttribute("strattr"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
310
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
311 var xmlDocs = TestType<XmlDocument>(db, "Xml_");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
312 Assert.IsNotNull(xmlDocs[1]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
313 Assert.IsNotNull(xmlDocs[1].DocumentElement);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
314 Console.WriteLine("{0}", xmlDocs[1].DocumentElement.GetAttribute("strattr"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
315 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
316 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
317 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
318 }