Mercurial > pub > bltoolkit
diff UnitTests/CS/Mapping/ResultSetTest.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/Mapping/ResultSetTest.cs Thu Mar 27 21:46:09 2014 +0400 @@ -0,0 +1,170 @@ +using System; +using System.Collections; +using System.Data; +using BLToolkit.Data; +using BLToolkit.Mapping; + +using NUnit.Framework; + +namespace Mapping +{ + [TestFixture] + public class ResultSetTest + { + public class Master + { + [MapField("MasterID")] + public int ID; + + public ArrayList Slaves = new ArrayList(); + } + + public class Slave + { + [MapField("SlaveID")] + public int ID; + + public int MasterID; + } + + const string SqlResultSet = @" + SELECT 1 as MasterID + UNION SELECT 2 as MasterID + + SELECT 4 SlaveID, 1 as MasterID + UNION SELECT 5 SlaveID, 2 as MasterID + UNION SELECT 6 SlaveID, 2 as MasterID + UNION SELECT 7 SlaveID, 1 as MasterID"; + + [Test] + public void TestResultSet() + { + MapResultSet[] sets = new MapResultSet[2]; + + sets[0] = new MapResultSet(typeof(Master)); + sets[1] = new MapResultSet(typeof(Slave)); + + sets[0].AddRelation(sets[1], "MasterID", "MasterID", "Slaves"); + + using (DbManager db = new DbManager()) + { + db +#if ORACLE + .SetSpCommand("ResultSetTest") +#else + .SetCommand(SqlResultSet) +#endif + .ExecuteResultSet(sets); + } + + Assert.AreEqual(7, ((Slave)(((Master)sets[0].List[0]).Slaves[1])).ID); + } + + [Test] + [ExpectedException(typeof(MappingException))] + public void TestFailResultSet1() + { + MapResultSet[] sets = new MapResultSet[2]; + + sets[0] = new MapResultSet(typeof(Master)); + sets[1] = new MapResultSet(typeof(Slave)); + + sets[0].AddRelation(sets[1], "MasterID", "ID", "Slaves"); + + using (DbManager db = new DbManager()) + { + db +#if ORACLE + .SetSpCommand("ResultSetTest") +#else + .SetCommand(SqlResultSet) +#endif + .ExecuteResultSet(sets); + } + } + + [Test] + [ExpectedException(typeof(MappingException))] + public void TestFailResultSet2() + { + MapResultSet[] sets = new MapResultSet[2]; + + sets[0] = new MapResultSet(typeof(Master)); + sets[1] = new MapResultSet(typeof(Slave)); + + sets[0].AddRelation(sets[1], "Master", "MasterID", "Slaves"); + + using (DbManager db = new DbManager()) + { + db +#if ORACLE + .SetSpCommand("ResultSetTest") +#else + .SetCommand(SqlResultSet) +#endif + .ExecuteResultSet(sets); + } + } + + [Test] + [ExpectedException(typeof(MappingException))] + public void TestFailResultSet3() + { + MapResultSet[] sets = new MapResultSet[2]; + + sets[0] = new MapResultSet(typeof(Master)); + sets[1] = new MapResultSet(typeof(Slave)); + + sets[0].AddRelation(sets[1], "MasterID", "MasterID", "Slave"); + + using (DbManager db = new DbManager()) + { + db +#if ORACLE + .SetSpCommand("ResultSetTest") +#else + .SetCommand(SqlResultSet) +#endif + .ExecuteResultSet(sets); + } + } + + [Test] + public void TestNextResult() + { + using (DbManager db = new DbManager()) + { + MapResultSet[] sets = db +#if ORACLE + .SetSpCommand("ResultSetTest") +#else + .SetCommand(SqlResultSet) +#endif + .ExecuteResultSet(typeof(Master), + new MapNextResult(typeof(Slave), "MasterID", "MasterID", "Slaves")); + + Assert.AreEqual(7, ((Slave)(((Master)sets[0].List[0]).Slaves[1])).ID); + } + } + + [Test] + public void TestDataSet() + { + using (DbManager db = new DbManager()) + { + DataSet set = db +#if ORACLE + .SetSpCommand("ResultSetTest") +#else + .SetCommand(SqlResultSet) +#endif + .ExecuteDataSet(); + + Assert.IsNotNull(set); + Assert.AreEqual(2, set.Tables.Count); + } + + } + + } +}