diff UnitTests/CS/Data/ExecuteScalarListTest.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/UnitTests/CS/Data/ExecuteScalarListTest.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,318 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Data.SqlTypes;
+using System.IO;
+using System.Xml;
+
+using NUnit.Framework;
+
+using BLToolkit.Data;
+
+namespace Data
+{
+	[TestFixture]
+	public class ExecuteScalarListTest
+	{
+		//[TestFixtureSetUp]
+		public void SetUp()
+		{
+			using (var db = new DbManager())
+			{
+				var query = "INSERT INTO Person(FirstName, LastName, Gender) SELECT FirstName, LastName, Gender FROM Person";
+
+				db.SetCommand(query).ExecuteNonQuery(); // 4
+				db.SetCommand(query).ExecuteNonQuery(); // 8
+				db.SetCommand(query).ExecuteNonQuery(); // 16
+				db.SetCommand(query).ExecuteNonQuery(); // 32
+				db.SetCommand(query).ExecuteNonQuery(); // 64
+				db.SetCommand(query).ExecuteNonQuery(); // 128
+				db.SetCommand(query).ExecuteNonQuery(); // 256
+				db.SetCommand(query).ExecuteNonQuery(); // 512
+				db.SetCommand(query).ExecuteNonQuery(); // 1024
+				db.SetCommand(query).ExecuteNonQuery(); // 2048
+				db.SetCommand(query).ExecuteNonQuery(); // 4096
+				db.SetCommand(query).ExecuteNonQuery(); // 8192
+				db.SetCommand(query).ExecuteNonQuery(); // 16384
+				db.SetCommand(query).ExecuteNonQuery(); // 32768
+				db.SetCommand(query).ExecuteNonQuery(); // 65536
+				db.SetCommand(query).ExecuteNonQuery(); // 128k
+				db.SetCommand(query).ExecuteNonQuery(); // 256k
+				db.SetCommand(query).ExecuteNonQuery(); // 512k
+				db.SetCommand(query).ExecuteNonQuery(); // 1m
+			}
+		}
+
+		//[TestFixtureTearDown]
+		public void TearDown()
+		{
+			using (var db = new DbManager())
+			{
+				db.SetCommand("DELETE FROM Person WHERE PersonID > 2").ExecuteNonQuery();
+			}
+		}
+
+		[Test]
+		public void ScalarListTest()
+		{
+			using (var db = new DbManager())
+			{
+				var array = db
+#if SQLITE || SQLCE || SQLCE
+					.SetCommand("SELECT * FROM Person")
+#else
+					.SetSpCommand("Person_SelectAll")
+#endif
+					.ExecuteScalarList(typeof(int));
+
+				Assert.IsNotNull(array);
+				Assert.IsTrue(array.Count > 0);
+			}
+		}
+
+		[Test]
+		public void ScalarListTest2()
+		{
+			using (var db = new DbManager())
+			{
+				var array = new ArrayList();
+
+				db.SetCommand("SELECT * FROM Person").ExecuteScalarList(array, typeof(int));
+
+				Assert.IsNotNull(array);
+				Assert.IsTrue(array.Count > 0);
+			}
+		}
+
+		[Test]
+		public void ScalarListTest3()
+		{
+			using (var db = new DbManager())
+			{
+				var array = db.SetCommand("SELECT * FROM Person").ExecuteScalarList(typeof(string),1);
+
+				Assert.IsNotNull(array);
+				Assert.IsTrue(array.Count > 0);
+			}
+		}
+
+		[Test]
+		public void ScalarListTest4()
+		{
+			using (var db = new DbManager())
+			{
+				var array = new ArrayList();
+
+				db.SetCommand("SELECT * FROM Person").ExecuteScalarList(array, typeof(string), "LastName");
+
+				Assert.IsNotNull(array);
+				Assert.IsTrue(array.Count > 0);
+			}
+		}
+
+		[Test]
+		public void GenericsScalarListTest()
+		{
+			var cmd = "SELECT PersonID FROM Person UNION ALL SELECT NULL";
+#if !MSSQL && !SQLCE
+			cmd += " FROM dual";
+#endif
+
+			using (var db = new DbManager())
+			{
+				var array = db.SetCommand(cmd).ExecuteScalarList<int?>();
+
+				Assert.IsNotNull(array);
+				Assert.IsTrue(array.Count > 0);
+				Assert.IsNull(array[array.Count - 1]);
+			}
+		}
+
+		[Test]
+		public void GenericsScalarListTest2()
+		{
+			var cmd = "SELECT PersonID FROM Person UNION ALL SELECT NULL";
+#if !MSSQL && !SQLCE
+			cmd += " FROM dual";
+#endif
+			using (var db = new DbManager())
+			{
+				var array = new List<int>();
+
+				db.SetCommand(cmd).ExecuteScalarList(array);
+
+				Assert.IsNotNull(array);
+				Assert.IsTrue(array.Count > 0);
+				Console.WriteLine("Records processed: {0}", array.Count);
+			}
+		}
+
+		[Test]
+		public void GenericsScalarListTest3()
+		{
+			using (var db = new DbManager())
+			{
+				var array = db.SetCommand("SELECT * FROM Person").ExecuteScalarList<string>(1);
+
+				Assert.IsNotNull(array);
+				Assert.IsTrue(array.Count > 0);
+			}
+		}
+
+		[Test]
+		public void GenericsScalarListTest4()
+		{
+			using (var db = new DbManager())
+			{
+				var array = new List<string>();
+
+				db.SetCommand("SELECT * FROM Person").ExecuteScalarList(array, "LastName");
+
+				Assert.IsNotNull(array);
+				Assert.IsTrue(array.Count > 0);
+			}
+		}
+
+		[Test]
+		public void GenericsScalarListTest5()
+		{
+			using (var db = new DbManager())
+			{
+				var cmd = "SELECT PersonID FROM Person UNION ALL SELECT NULL";
+#if !MSSQL && !SQLCE
+				cmd += " FROM dual";
+#endif
+				var array = db.SetCommand(cmd).ExecuteScalarList<uint?>();
+
+				Assert.IsNotNull(array);
+				Assert.IsTrue(array.Count > 0);
+				Assert.IsNull(array[array.Count - 1]);
+			}
+		}
+
+		[Test]
+		public void GenericsScalarListTest6()
+		{
+			using (var db = new DbManager())
+			{
+				var array = new List<uint>();
+
+				db.SetCommand("SELECT * FROM Person").ExecuteScalarList(array);
+
+				Assert.IsNotNull(array);
+				Assert.IsTrue(array.Count > 0);
+			}
+		}
+
+		private List<T> TestType<T>(DbManager db, string columnName) where T : class
+		{
+			var array = db
+				.SetCommand(string.Format("SELECT {0} FROM DataTypeTest ORDER BY DataTypeID", columnName))
+				.ExecuteScalarList<T>();
+
+			Assert.IsNotNull(array);
+			Assert.IsTrue   (array.Count > 1);
+			Assert.IsNotNull(array[1]);
+
+			return array;
+		}
+
+		private List<T?> TestNullableType<T>(DbManager db, string columnName) where T : struct
+		{
+			List<T?> array = db
+				.SetCommand(string.Format("SELECT {0} FROM DataTypeTest ORDER BY DataTypeID", columnName))
+				.ExecuteScalarList<T?>();
+
+			Assert.IsNotNull(array);
+			Assert.IsTrue   (array.Count > 1);
+			Assert.IsNull   (array[0]);
+			Assert.IsTrue   (array[1].HasValue);
+
+			return array;
+		}
+
+		private List<T?> TestINullableType<T>(DbManager db, string columnName) where T : struct, INullable
+		{
+			var array = db
+				.SetCommand(string.Format("SELECT {0} FROM DataTypeTest ORDER BY DataTypeID", columnName))
+				.ExecuteScalarList<T?>();
+
+			Assert.IsNotNull(array);
+			Assert.IsTrue(array.Count > 1);
+			Assert.IsTrue(array[0].HasValue);
+			Assert.IsTrue(array[0].Value.IsNull);
+			Assert.IsTrue(array[1].HasValue);
+
+			return array;
+		}
+
+		[Test]
+		public void GenericsScalarListDataTypesTest()
+		{
+			using (var db = new DbManager())
+			{
+				// Base types
+				//
+				TestNullableType<Boolean>   (db, "Boolean_");
+				TestNullableType<Byte>      (db, "Byte_");
+				TestNullableType<Char>      (db, "Char_");
+				TestNullableType<DateTime>  (db, "DateTime_");
+				TestNullableType<Decimal>   (db, "Decimal_");
+				TestNullableType<Double>    (db, "Double_");
+				TestNullableType<Guid>      (db, "Guid_");
+				TestNullableType<Int16>     (db, "Int16_");
+				TestNullableType<Int32>     (db, "Int32_");
+				TestNullableType<Int64>     (db, "Int64_");
+				TestNullableType<SByte>     (db, "SByte_");
+				TestNullableType<Single>    (db, "Single_");
+				TestType<String>            (db, "String_");
+				TestNullableType<UInt16>    (db, "UInt16_");
+				TestNullableType<UInt32>    (db, "UInt32_");
+				TestNullableType<UInt64>    (db, "UInt64_");
+
+#if !ORACLE
+				// Sql types
+				//
+				TestINullableType<SqlBinary>  (db, "Binary_");
+				TestINullableType<SqlBoolean> (db, "Boolean_");
+				TestINullableType<SqlByte>    (db, "Byte_");
+				TestType<SqlBytes>            (db, "Bytes_");
+				TestType<SqlChars>            (db, "String_");
+				TestINullableType<SqlDateTime>(db, "DateTime_");
+				TestINullableType<SqlDecimal> (db, "Decimal_");
+				TestINullableType<SqlDouble>  (db, "Double_");
+#if !ACCESS
+				TestINullableType<SqlGuid>    (db, "Bytes_");
+#endif
+				TestINullableType<SqlGuid>    (db, "Guid_");
+				TestINullableType<SqlInt16>   (db, "Int16_");
+				TestINullableType<SqlInt32>   (db, "Int32_");
+				TestINullableType<SqlInt64>   (db, "Int64_");
+				TestINullableType<SqlMoney>   (db, "Money_");
+				TestINullableType<SqlString>  (db, "String_");
+				TestINullableType<SqlSingle>  (db, "Single_");
+				TestType<SqlXml>              (db, "Xml_");
+#endif
+				// BLToolkit extension
+				var arrays  = TestType<Byte[]>(db, "Binary_");
+				Console.WriteLine("{0}", arrays[1][0]);
+
+				var streams = TestType<Stream>(db, "Bytes_");
+				Console.WriteLine("{0}", streams[1].ReadByte());
+
+				var symbols = TestType<Char[]>(db, "String_");
+				Assert.AreEqual(symbols[1][0], 's');
+
+				var xmlReaders = TestType<XmlReader>(db, "Xml_");
+				xmlReaders[1].MoveToContent();
+				Assert.IsTrue(xmlReaders[1].ReadToDescendant("element"));
+				Console.WriteLine("{0}", xmlReaders[1].GetAttribute("strattr"));
+
+				var xmlDocs = TestType<XmlDocument>(db, "Xml_");
+				Assert.IsNotNull(xmlDocs[1]);
+				Assert.IsNotNull(xmlDocs[1].DocumentElement);
+				Console.WriteLine("{0}", xmlDocs[1].DocumentElement.GetAttribute("strattr"));
+			}
+		}
+	}
+}