diff UnitTests/CS/Data/OutputParameter.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/OutputParameter.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,53 @@
+using System;
+using System.Data;
+
+using BLToolkit.Data;
+using BLToolkit.Data.DataProvider;
+using BLToolkit.DataAccess;
+
+using NUnit.Framework;
+
+namespace Data
+{
+	[TestFixture]
+	public class OutputParameter
+	{
+		[Test]
+		public void DirectTest()
+		{
+			using (DbManager db = new DbManager())
+			{
+				string paramName = (string) db.DataProvider.Convert("name",      ConvertType.NameToQueryParameter);
+				string fieldName = (string) db.DataProvider.Convert("FirstName", ConvertType.NameToQueryField);
+
+				db.SetCommand(string.Format("SELECT {0} = {1} FROM Person WHERE PersonID = 1", paramName, fieldName)
+						, db.OutputParameter(paramName, DbType.String, 50))
+					.ExecuteNonQuery();
+				Assert.AreEqual("John", db.Parameter(paramName).Value);
+			}
+		}
+
+		public abstract class TestAccessor : DataAccessor
+		{
+			[SqlQuery("SELECT {0} = {1} FROM Person WHERE PersonID = 1")]
+			public abstract void SelectJohn([ParamSize(50), ParamDbType(DbType.String)] out string name, [Format] string paramName, [Format] string FieldName);
+		}
+
+		[Test]
+		public void AccessorTest()
+		{
+			using (DbManager db = new DbManager())
+			{
+				string paramName = (string)db.DataProvider.Convert("name",      ConvertType.NameToQueryParameter);
+				string fieldName = (string)db.DataProvider.Convert("FirstName", ConvertType.NameToQueryField);
+
+				TestAccessor ta = (TestAccessor)TestAccessor.CreateInstance(typeof(TestAccessor), db);
+
+				string actual;
+				ta.SelectJohn(out actual, paramName, fieldName);
+
+				Assert.AreEqual("John", actual);
+			}
+		}
+	}
+}