Mercurial > pub > bltoolkit
diff UnitTests/CS/DataAccess/OutRefTest.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/OutRefTest.cs Thu Mar 27 21:46:09 2014 +0400 @@ -0,0 +1,155 @@ +using System; + +using NUnit.Framework; + +using BLToolkit.DataAccess; +using BLToolkit.TypeBuilder; + +namespace DataAccess +{ + [TestFixture] + public class OutRefTest + { + public class Entity + { + public int ID = 5; + public int outputID; + public int inputOutputID = 10; + public string str = "5"; + public string outputStr; + public string inputOutputStr = "10"; + } + + public abstract class TestAccessor : DataAccessor + { + public abstract void OutRefTest( + int @ID, out int @outputID, ref int @inputOutputID, + string @str, out string @outputStr, ref string @inputOutputStr); + + [SprocName("OutRefTest")] + public abstract void OutRefTest2( + [ParamNullValue(-1)] int ID, + [ParamNullValue(-2)] out int outputID, + [ParamNullValue(-3)] ref int inputOutputID, + [ParamNullValue("A")] string str, + [ParamNullValue("B")] out string outputStr, + [ParamNullValue("C")] ref string inputOutputStr); + + public abstract void OutRefTest(out int outputID, + [Direction.InputOutput("inputOutputID", "inputOutputStr"), Direction.Output("outputStr", "outputID")] Entity entity, + ref string inputOutputStr); + } + + [Test] + public void Test1() + { + int @outputID; + int @inputOutputID = 10; + string @outputStr; + string @inputOutputStr = "10"; + + ((TestAccessor)DataAccessor.CreateInstance(typeof(TestAccessor))) + .OutRefTest(5, out @outputID, ref @inputOutputID, + "5", out @outputStr, ref @inputOutputStr); + + Assert.AreEqual(5, @outputID); + Assert.AreEqual(15, @inputOutputID); + Assert.AreEqual("5", @outputStr); + Assert.AreEqual("510", @inputOutputStr); + } + + [Test] + public void Test2() + { + Entity e = new Entity(); + int @outputID; + string @inputOutputStr = "20"; + + ((TestAccessor)DataAccessor.CreateInstance(typeof(TestAccessor))) + .OutRefTest(out @outputID, e, ref @inputOutputStr); + + Assert.AreEqual(5, e.outputID); + Assert.AreEqual(5, @outputID); + Assert.AreEqual(15, e.inputOutputID); + Assert.AreEqual("5", e.outputStr); + Assert.AreEqual("510", e.inputOutputStr); + Assert.AreEqual("510", @inputOutputStr); + } + + [Test] + public void NullValueTest() + { + int @outputID; + int @inputOutputID = 10; + string @outputStr; + string @inputOutputStr = "C"; + + ((TestAccessor)DataAccessor.CreateInstance(typeof(TestAccessor))) + .OutRefTest2(-1, out @outputID, ref @inputOutputID, + "A", out @outputStr, ref @inputOutputStr); + + Assert.AreEqual(-2, @outputID); + Assert.AreEqual(-3, @inputOutputID); + Assert.AreEqual("B", @outputStr); + Assert.AreEqual("C", @inputOutputStr); + } + + public class NullableEntity + { + public int? ID = null; + public int? outputID; + public int? inputOutputID = 20; + public string str = null; + public string outputStr; + public string inputOutputStr = "40"; + } + + public abstract class TestNullableAccessor : DataAccessor + { + public abstract void OutRefTest( + int? @ID, out int? @outputID, ref int? @inputOutputID, + string @str, out string @outputStr, ref string @inputOutputStr); + + public abstract void OutRefTest( + out int? @outputID, + [Direction.InputOutput("inputOutputID", "inputOutputStr"), Direction.Output("outputStr", "outputID")] NullableEntity entity, + ref string @inputOutputStr); + + } + + [Test] + public void TestNullable1() + { + int? @outputID; + int? @inputOutputID = 10; + string @outputStr; + string @inputOutputStr = ""; + + DataAccessor.CreateInstance<TestNullableAccessor>() + .OutRefTest(null, out @outputID, ref @inputOutputID, + null, out @outputStr, ref @inputOutputStr); + + Assert.IsNull (@outputID); + Assert.IsNull (@inputOutputID); + Assert.IsEmpty(@outputStr); + Assert.IsEmpty(@inputOutputStr); + } + + [Test] + public void TestNullable2() + { + NullableEntity e = new NullableEntity(); + int? @outputID; + string @inputOutputStr = "20"; + e.str = "20"; + + DataAccessor.CreateInstance<TestNullableAccessor>() + .OutRefTest(out @outputID, e, ref @inputOutputStr); + + Assert.IsNull (@outputID); + Assert.AreEqual("20", e.outputStr); + Assert.IsNull (e.inputOutputID); + Assert.AreEqual("2040", @inputOutputStr); + } + } +}