0
|
1 using System;
|
|
2 using System.Collections;
|
|
3 using System.Data;
|
|
4 using BLToolkit.Data;
|
|
5 using BLToolkit.Mapping;
|
|
6
|
|
7 using NUnit.Framework;
|
|
8
|
|
9 namespace Mapping
|
|
10 {
|
|
11 [TestFixture]
|
|
12 public class ResultSetTest
|
|
13 {
|
|
14 public class Master
|
|
15 {
|
|
16 [MapField("MasterID")]
|
|
17 public int ID;
|
|
18
|
|
19 public ArrayList Slaves = new ArrayList();
|
|
20 }
|
|
21
|
|
22 public class Slave
|
|
23 {
|
|
24 [MapField("SlaveID")]
|
|
25 public int ID;
|
|
26
|
|
27 public int MasterID;
|
|
28 }
|
|
29
|
|
30 const string SqlResultSet = @"
|
|
31 SELECT 1 as MasterID
|
|
32 UNION SELECT 2 as MasterID
|
|
33
|
|
34 SELECT 4 SlaveID, 1 as MasterID
|
|
35 UNION SELECT 5 SlaveID, 2 as MasterID
|
|
36 UNION SELECT 6 SlaveID, 2 as MasterID
|
|
37 UNION SELECT 7 SlaveID, 1 as MasterID";
|
|
38
|
|
39 [Test]
|
|
40 public void TestResultSet()
|
|
41 {
|
|
42 MapResultSet[] sets = new MapResultSet[2];
|
|
43
|
|
44 sets[0] = new MapResultSet(typeof(Master));
|
|
45 sets[1] = new MapResultSet(typeof(Slave));
|
|
46
|
|
47 sets[0].AddRelation(sets[1], "MasterID", "MasterID", "Slaves");
|
|
48
|
|
49 using (DbManager db = new DbManager())
|
|
50 {
|
|
51 db
|
|
52 #if ORACLE
|
|
53 .SetSpCommand("ResultSetTest")
|
|
54 #else
|
|
55 .SetCommand(SqlResultSet)
|
|
56 #endif
|
|
57 .ExecuteResultSet(sets);
|
|
58 }
|
|
59
|
|
60 Assert.AreEqual(7, ((Slave)(((Master)sets[0].List[0]).Slaves[1])).ID);
|
|
61 }
|
|
62
|
|
63 [Test]
|
|
64 [ExpectedException(typeof(MappingException))]
|
|
65 public void TestFailResultSet1()
|
|
66 {
|
|
67 MapResultSet[] sets = new MapResultSet[2];
|
|
68
|
|
69 sets[0] = new MapResultSet(typeof(Master));
|
|
70 sets[1] = new MapResultSet(typeof(Slave));
|
|
71
|
|
72 sets[0].AddRelation(sets[1], "MasterID", "ID", "Slaves");
|
|
73
|
|
74 using (DbManager db = new DbManager())
|
|
75 {
|
|
76 db
|
|
77 #if ORACLE
|
|
78 .SetSpCommand("ResultSetTest")
|
|
79 #else
|
|
80 .SetCommand(SqlResultSet)
|
|
81 #endif
|
|
82 .ExecuteResultSet(sets);
|
|
83 }
|
|
84 }
|
|
85
|
|
86 [Test]
|
|
87 [ExpectedException(typeof(MappingException))]
|
|
88 public void TestFailResultSet2()
|
|
89 {
|
|
90 MapResultSet[] sets = new MapResultSet[2];
|
|
91
|
|
92 sets[0] = new MapResultSet(typeof(Master));
|
|
93 sets[1] = new MapResultSet(typeof(Slave));
|
|
94
|
|
95 sets[0].AddRelation(sets[1], "Master", "MasterID", "Slaves");
|
|
96
|
|
97 using (DbManager db = new DbManager())
|
|
98 {
|
|
99 db
|
|
100 #if ORACLE
|
|
101 .SetSpCommand("ResultSetTest")
|
|
102 #else
|
|
103 .SetCommand(SqlResultSet)
|
|
104 #endif
|
|
105 .ExecuteResultSet(sets);
|
|
106 }
|
|
107 }
|
|
108
|
|
109 [Test]
|
|
110 [ExpectedException(typeof(MappingException))]
|
|
111 public void TestFailResultSet3()
|
|
112 {
|
|
113 MapResultSet[] sets = new MapResultSet[2];
|
|
114
|
|
115 sets[0] = new MapResultSet(typeof(Master));
|
|
116 sets[1] = new MapResultSet(typeof(Slave));
|
|
117
|
|
118 sets[0].AddRelation(sets[1], "MasterID", "MasterID", "Slave");
|
|
119
|
|
120 using (DbManager db = new DbManager())
|
|
121 {
|
|
122 db
|
|
123 #if ORACLE
|
|
124 .SetSpCommand("ResultSetTest")
|
|
125 #else
|
|
126 .SetCommand(SqlResultSet)
|
|
127 #endif
|
|
128 .ExecuteResultSet(sets);
|
|
129 }
|
|
130 }
|
|
131
|
|
132 [Test]
|
|
133 public void TestNextResult()
|
|
134 {
|
|
135 using (DbManager db = new DbManager())
|
|
136 {
|
|
137 MapResultSet[] sets = db
|
|
138 #if ORACLE
|
|
139 .SetSpCommand("ResultSetTest")
|
|
140 #else
|
|
141 .SetCommand(SqlResultSet)
|
|
142 #endif
|
|
143 .ExecuteResultSet(typeof(Master),
|
|
144 new MapNextResult(typeof(Slave), "MasterID", "MasterID", "Slaves"));
|
|
145
|
|
146 Assert.AreEqual(7, ((Slave)(((Master)sets[0].List[0]).Slaves[1])).ID);
|
|
147 }
|
|
148 }
|
|
149
|
|
150 [Test]
|
|
151 public void TestDataSet()
|
|
152 {
|
|
153 using (DbManager db = new DbManager())
|
|
154 {
|
|
155 DataSet set = db
|
|
156 #if ORACLE
|
|
157 .SetSpCommand("ResultSetTest")
|
|
158 #else
|
|
159 .SetCommand(SqlResultSet)
|
|
160 #endif
|
|
161 .ExecuteDataSet();
|
|
162
|
|
163 Assert.IsNotNull(set);
|
|
164 Assert.AreEqual(2, set.Tables.Count);
|
|
165 }
|
|
166
|
|
167 }
|
|
168
|
|
169 }
|
|
170 }
|