diff UnitTests/CS/DataAccess/ScalarTest.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/DataAccess/ScalarTest.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,372 @@
+using System;
+using System.IO;
+using System.Xml;
+
+using NUnit.Framework;
+
+using BLToolkit.Data;
+using BLToolkit.DataAccess;
+using BLToolkit.Reflection;
+
+namespace DataAccess
+{
+	[TestFixture]
+	public class ScalarTest
+	{
+		public enum TestEnum
+		{
+			Null  = 0,
+			Value = 12345,
+		}
+
+		public abstract class TestAccessor : DataAccessor
+		{
+			[ActionName("Scalar_DataReader")]
+			public abstract int Scalar_Regression(DbManager db);
+			
+			[ScalarSource(ScalarSourceType.DataReader)]
+			public abstract int Scalar_DataReader(DbManager db);
+
+			[ActionName("Scalar_DataReader")]
+			[ScalarSource(ScalarSourceType.DataReader, 1)]
+			public abstract string Scalar_DataReader2(DbManager db);
+
+			[ActionName("Scalar_DataReader")]
+			[ScalarSource(ScalarSourceType.DataReader, "stringField")]
+			public abstract string Scalar_DataReader3(DbManager db);
+
+			[ActionName("Scalar_OutputParameter")]
+			public abstract void Scalar_OutputParameterRegression(
+				DbManager db, out int outputInt, out string outputString);
+
+			[ScalarSource(ScalarSourceType.OutputParameter)]
+			public abstract int Scalar_OutputParameter(DbManager db);
+
+			[ActionName("Scalar_OutputParameter")]
+			[ScalarSource(ScalarSourceType.OutputParameter, 1)]
+			public abstract string Scalar_OutputParameter2(DbManager db);
+
+			[ActionName("Scalar_OutputParameter")]
+			[ScalarSource(ScalarSourceType.OutputParameter, "outputString")]
+			public abstract string Scalar_OutputParameter3(DbManager db);
+
+			[ScalarSource(ScalarSourceType.ReturnValue)]
+			public abstract int Scalar_ReturnParameter(DbManager db);
+
+			[ActionName("Scalar_DataReader")]
+			[ScalarSource(ScalarSourceType.AffectedRows)]
+			public abstract int Scalar_AffectedRows(DbManager db);
+
+			[TestQuery(
+				SqlText    = "SELECT Stream_ FROM DataTypeTest WHERE DataTypeID = @id",
+				OracleText = "SELECT Stream_ FROM DataTypeTest WHERE DataTypeID = :id")]
+			public abstract Stream GetStream(DbManager db, int id);
+
+			[TestQuery(
+				SqlText    = "SELECT Xml_ FROM DataTypeTest WHERE DataTypeID = @id",
+				OracleText = "SELECT Xml_ FROM DataTypeTest WHERE DataTypeID = :id")]
+			public abstract XmlReader GetXml(DbManager db, int id);
+
+			[TestQuery(
+				SqlText    = "SELECT Xml_ FROM DataTypeTest WHERE DataTypeID = @id",
+				OracleText = "SELECT Xml_ FROM DataTypeTest WHERE DataTypeID = :id")]
+			public abstract XmlDocument GetXmlDoc(DbManager db, int id);
+
+			[SprocName("Scalar_DataReader")]
+			public abstract int    ScalarDestination1([Destination] out int id);
+
+			[SprocName("Scalar_DataReader")]
+			public abstract void   ScalarDestination2([Destination] out int id);
+
+			[SprocName("Scalar_DataReader")]
+			public abstract object ScalarDestination3([Destination] out int id);
+
+			[SprocName("Scalar_DataReader")]
+			public abstract int    ScalarDestination4([Destination] ref int id);
+
+			[SprocName("Scalar_DataReader")]
+			public abstract void   ScalarDestination5([Destination] ref int id);
+
+			[SprocName("Scalar_DataReader")]
+			public abstract object ScalarDestination6([Destination] ref int id);
+
+			[SprocName("Scalar_DataReader")]
+			public abstract int? ScalarNullableDestination([Destination] ref int? id);
+
+			[SprocName("Scalar_DataReader")]
+			public abstract TestEnum ScalarEnumDestination([Destination] ref TestEnum value);
+
+			[SprocName("Scalar_DataReader")]
+			public abstract TestEnum? ScalarNullableEnumDestination([Destination] ref TestEnum? value);
+
+			public static TestAccessor CreateInstance()
+			{
+				return (TestAccessor)CreateInstance(typeof(TestAccessor));
+			}
+		}
+
+		[Test]
+		public void RegressionTest()
+		{
+			using (DbManager db = new DbManager())
+			{
+				TestAccessor ta = TestAccessor.CreateInstance();
+
+				int expectedValue = 12345;
+				int actualValue = ta.Scalar_Regression(db);
+
+				Assert.AreEqual(expectedValue, actualValue);
+			}
+		}
+
+		[Test]
+		public void DataReaderTest()
+		{
+			using (DbManager db = new DbManager())
+			{
+				TestAccessor ta = TestAccessor.CreateInstance();
+
+				int expectedValue = 12345;
+				int actualValue = ta.Scalar_DataReader(db);
+
+				Assert.AreEqual(expectedValue, actualValue);
+			}
+		}
+
+		[Test]
+		public void DataReader2Test()
+		{
+			using (DbManager db = new DbManager())
+			{
+				TestAccessor ta = TestAccessor.CreateInstance();
+
+				string expectedValue = "54321";
+				string actualValue = ta.Scalar_DataReader2(db);
+
+				Assert.AreEqual(expectedValue, actualValue);
+			}
+		}
+
+		[Test]
+		public void DataReader3Test()
+		{
+			using (DbManager db = new DbManager())
+			{
+				TestAccessor ta = TestAccessor.CreateInstance();
+
+				string expectedValue = "54321";
+				string actualValue = ta.Scalar_DataReader3(db);
+
+				Assert.AreEqual(expectedValue, actualValue);
+			}
+		}
+
+#if !ACCESS && !SQLITE
+		[Test]
+		public void OutputParameterRegressionTest()
+		{
+			using (DbManager db = new DbManager())
+			{
+				TestAccessor ta = TestAccessor.CreateInstance();
+
+				int expectedIntValue = 12345;
+				int actualIntValue;
+				string expectedStringValue = "54321";
+				string actualStringValue;
+
+				ta.Scalar_OutputParameterRegression(db,
+					out actualIntValue, out actualStringValue);
+
+				Assert.AreEqual(expectedIntValue, actualIntValue);
+				Assert.AreEqual(expectedStringValue, actualStringValue);
+			}
+		}
+
+		[Test]
+		public void OutputParameterTest()
+		{
+			using (DbManager db = new DbManager())
+			{
+				TestAccessor ta = TestAccessor.CreateInstance();
+
+				int expectedValue = 12345;
+				int actualValue = ta.Scalar_OutputParameter(db);
+
+				Assert.AreEqual(expectedValue, actualValue);
+			}
+		}
+
+		[Test]
+		public void OutputParameter2Test()
+		{
+			using (DbManager db = new DbManager())
+			{
+				TestAccessor ta = TestAccessor.CreateInstance();
+
+				string expectedValue = "54321";
+				string actualValue = ta.Scalar_OutputParameter2(db);
+
+				Assert.AreEqual(expectedValue, actualValue);
+			}
+		}
+
+		[Test]
+		public void OutputParameter3Test()
+		{
+			using (DbManager db = new DbManager())
+			{
+				TestAccessor ta = TestAccessor.CreateInstance();
+
+				string expectedValue = "54321";
+				string actualValue = ta.Scalar_OutputParameter3(db);
+
+				Assert.AreEqual(expectedValue, actualValue);
+			}
+		}
+
+		[Test]
+		public void ReturnParameterTest()
+		{
+			using (DbManager db = new DbManager())
+			{
+				TestAccessor ta = TestAccessor.CreateInstance();
+
+				int expectedValue = 12345;
+				int actualValue = ta.Scalar_ReturnParameter(db);
+
+				Assert.AreEqual(expectedValue, actualValue);
+			}
+		}
+#endif
+
+		[Test]
+		public void AffectedRowsTest()
+		{
+			using (DbManager db = new DbManager())
+			{
+				TestAccessor ta = TestAccessor.CreateInstance();
+
+#if ACCESS
+				int expectedValue = 0;
+#else
+ 				int expectedValue = -1;
+#endif
+				int actualValue = ta.Scalar_AffectedRows(db);
+
+				Assert.AreEqual(expectedValue, actualValue);
+			}
+		}
+
+		[Test]
+		public void StreamTest()
+		{
+			using (DbManager db = new DbManager())
+			{
+				TestAccessor ta = TestAccessor.CreateInstance();
+
+				Stream s = ta.GetStream(db, 2);
+				Byte[] bytes = new byte[16];
+
+				Assert.IsNotNull(s);
+				Assert.AreEqual(s.Length, bytes.Length);
+
+				Assert.AreEqual(s.Read(bytes, 0, bytes.Length), bytes.Length);
+				TypeAccessor.WriteConsole(bytes);
+			}
+		}
+
+		[Test]
+		public void ScalarDestinationTest()
+		{
+			TestAccessor ta = TestAccessor.CreateInstance();
+
+			int id1;
+			int id2;
+
+			id1 = ta.ScalarDestination1(out id2);
+			Assert.AreEqual(id1, 12345);
+			Assert.AreEqual(id2, 12345);
+
+			ta.ScalarDestination2(out id2);
+			Assert.AreEqual(id2, 12345);
+
+			id1 = (int)ta.ScalarDestination3(out id2);
+			Assert.AreEqual(id1, 12345);
+			Assert.AreEqual(id2, 12345);
+
+			id2 = 0;
+			id1 = ta.ScalarDestination4(ref id2);
+			Assert.AreEqual(id1, 12345);
+			Assert.AreEqual(id2, 12345);
+
+			id2 = 0;
+			ta.ScalarDestination5(ref id2);
+			Assert.AreEqual(id2, 12345);
+
+			id2 = 0;
+			id1 = (int)ta.ScalarDestination6(ref id2);
+			Assert.AreEqual(id1, 12345);
+			Assert.AreEqual(id2, 12345);
+		}
+
+		[Test]
+		public void XmlTest()
+		{
+			using (DbManager db = new DbManager())
+			{
+				TestAccessor ta = TestAccessor.CreateInstance();
+
+				XmlReader xml = ta.GetXml(db, 2);
+				xml.MoveToContent();
+				Assert.IsTrue(xml.ReadToDescendant("element"));
+				Assert.AreEqual("strvalue", xml.GetAttribute("strattr"));
+			}
+		}
+
+		public void XmlDocTest()
+		{
+			using (DbManager db = new DbManager())
+			{
+				TestAccessor ta = TestAccessor.CreateInstance();
+
+				XmlDocument xmlDocument= ta.GetXmlDoc(db, 2);
+				Assert.IsNotNull(xmlDocument);
+				Assert.IsNotNull(xmlDocument.DocumentElement);
+				Assert.AreEqual("strvalue", xmlDocument.DocumentElement.GetAttribute("strattr"));
+			}
+		}
+
+		[Test]
+		public void ScalarNullableDestinationTest()
+		{
+			TestAccessor ta = TestAccessor.CreateInstance();
+
+			int? id1;
+			int? id2 = -1;
+			id1 = ta.ScalarNullableDestination(ref id2);
+			Assert.AreEqual(id1, id2);
+		}
+
+		[Test]
+		public void ScalarEnumDestinationTest()
+		{
+			TestAccessor ta = TestAccessor.CreateInstance();
+
+			TestEnum refVal = TestEnum.Null;
+			TestEnum outVal = ta.ScalarEnumDestination(ref refVal);
+			Assert.That(outVal, Is.EqualTo(TestEnum.Value));
+			Assert.That(refVal, Is.EqualTo(TestEnum.Value));
+		}
+
+		[Test]
+		public void ScalarNullableEnumDestinationTest()
+		{
+			TestAccessor ta = TestAccessor.CreateInstance();
+
+			TestEnum? refVal = null;
+			TestEnum? outVal = ta.ScalarNullableEnumDestination(ref refVal);
+			Assert.That(outVal, Is.EqualTo(TestEnum.Value));
+			Assert.That(refVal, Is.EqualTo(TestEnum.Value));
+		}
+	}
+}