Skip to content
This repository was archived by the owner on Dec 23, 2017. It is now read-only.

Commit 3fb1e21

Browse files
author
Ovan Crone
committed
Merge pull request #45 from psibernetic/MultipleResultRefactor
Multiple result refactor
2 parents e75b887 + 528109f commit 3fb1e21

File tree

135 files changed

+8311
-9772
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

135 files changed

+8311
-9772
lines changed

src/Susanoo.Core.Tests/Inserts/DBNullCheck.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
using System;
44
using System.Data;
5-
using System.Data.SqlClient;
6-
using System.Diagnostics;
75
using NUnit.Framework;
86
using Susanoo.Exceptions;
97

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using System.Diagnostics;
2+
using Susanoo.Deserialization;
3+
using Susanoo.Processing;
4+
using Susanoo.ResultSets;
5+
6+
namespace Susanoo.Tests
7+
{
8+
public class InterceptedSusanooBootstrapper : SusanooBootstrapper
9+
{
10+
public InterceptedSusanooBootstrapper()
11+
{
12+
Container.Register<ISingleResultSetCommandProcessorFactory>((container)
13+
=> new InterceptedSingleResultSetFactory(container.Resolve<IDeserializerResolver>()));
14+
}
15+
}
16+
17+
public class InterceptedSingleResultSetFactory
18+
: SingleResultSetCommandProcessorFactory
19+
{
20+
public InterceptedSingleResultSetFactory(IDeserializerResolver deserializerResolver)
21+
: base(deserializerResolver)
22+
{
23+
}
24+
25+
/// <summary>
26+
/// Builds the command processor.
27+
/// </summary>
28+
/// <typeparam name="TFilter">The type of the filter.</typeparam>
29+
/// <typeparam name="TResult">The type of the result.</typeparam>
30+
/// <param name="mappings">The mappings.</param>
31+
/// <param name="name">The name.</param>
32+
/// <returns>INoResultCommandProcessor&lt;TFilter, TResult&gt;.</returns>
33+
public override ISingleResultSetCommandProcessor<TFilter, TResult> BuildCommandProcessor<TFilter, TResult>(ICommandResultInfo<TFilter> mappings, string name = null)
34+
=> base.BuildCommandProcessor<TFilter, TResult>(mappings, name)
35+
.InterceptExceptions(ex => Debug.Print($"{ex.Info.CommandText}"));
36+
}
37+
}
38+

src/Susanoo.Core.Tests/Setup.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ public class Setup
1515
[SetUp]
1616
public void Configure()
1717
{
18+
CommandManager.Instance.Bootstrap(new InterceptedSusanooBootstrapper());
19+
1820
//By explicitly opening the connection, it becomes a shared connection.
1921
DatabaseManager.OpenConnection();
2022

Lines changed: 33 additions & 236 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
#region
22

3-
using System;
4-
using System.Collections.Generic;
53
using System.Data;
64
using System.Linq;
75
using NUnit.Framework;
@@ -22,215 +20,22 @@ public void IdenticalResults2Test()
2220

2321
var results = CommandManager.Instance.DefineCommand("SELECT * FROM #DataTypeTable;" +
2422
"SELECT * FROM #DataTypeTable;", CommandType.Text)
25-
.DefineResults<TypeTestModel, TypeTestModel>()
26-
.ForResultsOfType<TypeTestModel>(expression =>
23+
.DefineResults(typeof(TypeTestModel), typeof(TypeTestModel))
24+
.ForResults<TypeTestModel>(expression =>
2725
expression.ForProperty(o => o.BigInt, configuration =>
2826
configuration.UseAlias("")))
2927
.Realize("IdenticalResults2Test")
3028
.Execute(_databaseManager);
3129

32-
Assert.AreEqual(results.GetType(), typeof(Tuple<IEnumerable<TypeTestModel>, IEnumerable<TypeTestModel>>));
30+
var arrResults = results.Select(e => e.Cast<TypeTestModel>()).ToArray();
3331

34-
Assert.IsNotNull(results.Item1);
35-
Assert.IsNotNull(results.Item2);
32+
Assert.IsNotNull(arrResults[0]);
33+
Assert.IsNotNull(arrResults[1]);
3634

37-
Assert.AreEqual(results.Item1.Count(), 1);
38-
Assert.AreEqual(results.Item2.Count(), 1);
35+
Assert.AreEqual(arrResults[0].Count(), 1);
36+
Assert.AreEqual(arrResults[1].Count(), 1);
3937

40-
Assert.AreNotSame(results.Item1, results.Item2);
41-
}
42-
43-
[Test(Description = "Tests that results come through properly when the type is the same.")]
44-
public void IdenticalResults3Test()
45-
{
46-
47-
var results = CommandManager.Instance.DefineCommand("SELECT * FROM #DataTypeTable;" +
48-
"SELECT * FROM #DataTypeTable;" +
49-
"SELECT * FROM #DataTypeTable;", CommandType.Text)
50-
.DefineResults<TypeTestModel, TypeTestModel, TypeTestModel>()
51-
.Realize("IdenticalResults3Test")
52-
.Execute(_databaseManager);
53-
54-
Assert.AreEqual(results.GetType(), typeof(Tuple<
55-
IEnumerable<TypeTestModel>,
56-
IEnumerable<TypeTestModel>,
57-
IEnumerable<TypeTestModel>>));
58-
59-
Assert.IsNotNull(results.Item1);
60-
Assert.IsNotNull(results.Item2);
61-
Assert.IsNotNull(results.Item3);
62-
63-
Assert.AreEqual(results.Item1.Count(), 1);
64-
Assert.AreEqual(results.Item2.Count(), 1);
65-
Assert.AreEqual(results.Item3.Count(), 1);
66-
67-
Assert.AreNotSame(results.Item1, results.Item2);
68-
Assert.AreNotSame(results.Item2, results.Item3);
69-
70-
}
71-
72-
[Test(Description = "Tests that results come through properly when the type is the same.")]
73-
public void IdenticalResults4Test()
74-
{
75-
76-
var results = CommandManager.Instance.DefineCommand("SELECT * FROM #DataTypeTable;" +
77-
"SELECT * FROM #DataTypeTable;" +
78-
"SELECT * FROM #DataTypeTable;" +
79-
"SELECT * FROM #DataTypeTable;", CommandType.Text)
80-
.DefineResults<TypeTestModel, TypeTestModel, TypeTestModel, TypeTestModel>()
81-
.Realize("IdenticalResults4Test")
82-
.Execute(_databaseManager);
83-
84-
Assert.AreEqual(results.GetType(), typeof(Tuple<
85-
IEnumerable<TypeTestModel>,
86-
IEnumerable<TypeTestModel>,
87-
IEnumerable<TypeTestModel>,
88-
IEnumerable<TypeTestModel>>));
89-
90-
Assert.IsNotNull(results.Item1);
91-
Assert.IsNotNull(results.Item2);
92-
Assert.IsNotNull(results.Item3);
93-
Assert.IsNotNull(results.Item4);
94-
95-
Assert.AreEqual(results.Item1.Count(), 1);
96-
Assert.AreEqual(results.Item2.Count(), 1);
97-
Assert.AreEqual(results.Item3.Count(), 1);
98-
Assert.AreEqual(results.Item4.Count(), 1);
99-
100-
Assert.AreNotSame(results.Item1, results.Item2);
101-
Assert.AreNotSame(results.Item2, results.Item3);
102-
Assert.AreNotSame(results.Item3, results.Item4);
103-
}
104-
105-
[Test(Description = "Tests that results come through properly when the type is the same.")]
106-
public void IdenticalResults5Test()
107-
{
108-
109-
var results = CommandManager.Instance.DefineCommand("SELECT * FROM #DataTypeTable;" +
110-
"SELECT * FROM #DataTypeTable;" +
111-
"SELECT * FROM #DataTypeTable;" +
112-
"SELECT * FROM #DataTypeTable;" +
113-
"SELECT * FROM #DataTypeTable;", CommandType.Text)
114-
.DefineResults<TypeTestModel, TypeTestModel, TypeTestModel, TypeTestModel, TypeTestModel>
115-
()
116-
.Realize("IdenticalResults5Test")
117-
.Execute(_databaseManager);
118-
119-
Assert.AreEqual(results.GetType(), typeof(Tuple<
120-
IEnumerable<TypeTestModel>,
121-
IEnumerable<TypeTestModel>,
122-
IEnumerable<TypeTestModel>,
123-
IEnumerable<TypeTestModel>,
124-
IEnumerable<TypeTestModel>>));
125-
126-
Assert.IsNotNull(results.Item1);
127-
Assert.IsNotNull(results.Item2);
128-
Assert.IsNotNull(results.Item3);
129-
Assert.IsNotNull(results.Item4);
130-
Assert.IsNotNull(results.Item5);
131-
132-
Assert.AreEqual(results.Item1.Count(), 1);
133-
Assert.AreEqual(results.Item2.Count(), 1);
134-
Assert.AreEqual(results.Item3.Count(), 1);
135-
Assert.AreEqual(results.Item4.Count(), 1);
136-
Assert.AreEqual(results.Item5.Count(), 1);
137-
138-
Assert.AreNotSame(results.Item1, results.Item2);
139-
Assert.AreNotSame(results.Item2, results.Item3);
140-
Assert.AreNotSame(results.Item3, results.Item4);
141-
Assert.AreNotSame(results.Item4, results.Item5);
142-
}
143-
144-
[Test(Description = "Tests that results come through properly when the type is the same.")]
145-
public void IdenticalResults6Test()
146-
{
147-
148-
var results = CommandManager.Instance.DefineCommand("SELECT * FROM #DataTypeTable;" +
149-
"SELECT * FROM #DataTypeTable;" +
150-
"SELECT * FROM #DataTypeTable;" +
151-
"SELECT * FROM #DataTypeTable;" +
152-
"SELECT * FROM #DataTypeTable;" +
153-
"SELECT * FROM #DataTypeTable;", CommandType.Text)
154-
.DefineResults<TypeTestModel, TypeTestModel, TypeTestModel, TypeTestModel, TypeTestModel, TypeTestModel>
155-
()
156-
.Realize("IdenticalResults6Test")
157-
.Execute(_databaseManager);
158-
159-
Assert.AreEqual(results.GetType(), typeof(Tuple<
160-
IEnumerable<TypeTestModel>,
161-
IEnumerable<TypeTestModel>,
162-
IEnumerable<TypeTestModel>,
163-
IEnumerable<TypeTestModel>,
164-
IEnumerable<TypeTestModel>,
165-
IEnumerable<TypeTestModel>>));
166-
167-
Assert.IsNotNull(results.Item1);
168-
Assert.IsNotNull(results.Item2);
169-
Assert.IsNotNull(results.Item3);
170-
Assert.IsNotNull(results.Item4);
171-
Assert.IsNotNull(results.Item5);
172-
Assert.IsNotNull(results.Item6);
173-
174-
Assert.AreEqual(results.Item1.Count(), 1);
175-
Assert.AreEqual(results.Item2.Count(), 1);
176-
Assert.AreEqual(results.Item3.Count(), 1);
177-
Assert.AreEqual(results.Item4.Count(), 1);
178-
Assert.AreEqual(results.Item5.Count(), 1);
179-
Assert.AreEqual(results.Item6.Count(), 1);
180-
181-
Assert.AreNotSame(results.Item1, results.Item2);
182-
Assert.AreNotSame(results.Item2, results.Item3);
183-
Assert.AreNotSame(results.Item3, results.Item4);
184-
Assert.AreNotSame(results.Item4, results.Item5);
185-
Assert.AreNotSame(results.Item5, results.Item6);
186-
}
187-
188-
[Test(Description = "Tests that results come through properly when the type is the same.")]
189-
public void IdenticalResults7Test()
190-
{
191-
192-
var results = CommandManager.Instance.DefineCommand("SELECT * FROM #DataTypeTable;" +
193-
"SELECT * FROM #DataTypeTable;" +
194-
"SELECT * FROM #DataTypeTable;" +
195-
"SELECT * FROM #DataTypeTable;" +
196-
"SELECT * FROM #DataTypeTable;" +
197-
"SELECT * FROM #DataTypeTable;" +
198-
"SELECT * FROM #DataTypeTable;", CommandType.Text)
199-
.DefineResults<TypeTestModel, TypeTestModel, TypeTestModel, TypeTestModel, TypeTestModel, TypeTestModel, TypeTestModel>()
200-
.Realize("IdenticalResults7Test")
201-
.Execute(_databaseManager);
202-
203-
Assert.AreEqual(results.GetType(), typeof(Tuple<
204-
IEnumerable<TypeTestModel>,
205-
IEnumerable<TypeTestModel>,
206-
IEnumerable<TypeTestModel>,
207-
IEnumerable<TypeTestModel>,
208-
IEnumerable<TypeTestModel>,
209-
IEnumerable<TypeTestModel>,
210-
IEnumerable<TypeTestModel>>));
211-
212-
Assert.IsNotNull(results.Item1);
213-
Assert.IsNotNull(results.Item2);
214-
Assert.IsNotNull(results.Item3);
215-
Assert.IsNotNull(results.Item4);
216-
Assert.IsNotNull(results.Item5);
217-
Assert.IsNotNull(results.Item6);
218-
Assert.IsNotNull(results.Item7);
219-
220-
Assert.AreEqual(results.Item1.Count(), 1);
221-
Assert.AreEqual(results.Item2.Count(), 1);
222-
Assert.AreEqual(results.Item3.Count(), 1);
223-
Assert.AreEqual(results.Item4.Count(), 1);
224-
Assert.AreEqual(results.Item5.Count(), 1);
225-
Assert.AreEqual(results.Item6.Count(), 1);
226-
Assert.AreEqual(results.Item7.Count(), 1);
227-
228-
Assert.AreNotSame(results.Item1, results.Item2);
229-
Assert.AreNotSame(results.Item2, results.Item3);
230-
Assert.AreNotSame(results.Item3, results.Item4);
231-
Assert.AreNotSame(results.Item4, results.Item5);
232-
Assert.AreNotSame(results.Item5, results.Item6);
233-
Assert.AreNotSame(results.Item6, results.Item7);
38+
Assert.AreNotSame(arrResults[0], arrResults[1]);
23439
}
23540

23641
[Test(Description = "Tests that attempting to get less results than available works fine.")]
@@ -244,54 +49,46 @@ public void LessResultsThanAvailableTest()
24449
"SELECT * FROM #DataTypeTable;" +
24550
"SELECT * FROM #DataTypeTable;" +
24651
"SELECT * FROM #DataTypeTable;", CommandType.Text)
247-
.DefineResults<TypeTestModel, TypeTestModel>()
52+
.DefineResults(typeof(TypeTestModel), typeof(TypeTestModel))
24853
.Realize("LessResultsAreAvailableTest")
249-
.Execute(_databaseManager);
250-
251-
Assert.AreEqual(results.GetType(), typeof(Tuple<
252-
IEnumerable<TypeTestModel>,
253-
IEnumerable<TypeTestModel>>));
54+
.Execute(_databaseManager).ToArray();
25455

255-
Assert.IsNotNull(results.Item1);
256-
Assert.IsNotNull(results.Item2);
56+
Assert.IsNotNull(results[0]);
57+
Assert.IsNotNull(results[1]);
25758

258-
Assert.AreEqual(results.Item1.Count(), 1);
259-
Assert.AreEqual(results.Item2.Count(), 1);
59+
Assert.AreEqual(results[0].Count(), 1);
60+
Assert.AreEqual(results[1].Count(), 1);
26061

261-
Assert.AreNotSame(results.Item1, results.Item2);
62+
Assert.AreNotSame(results[0], results[1]);
26263
}
26364

26465
[Test(Description = "Tests that attempting to get more results than available provides null for the additional results.")]
26566
public void MoreResultsThanAvailableTest()
26667
{
267-
26868
var results = CommandManager.Instance.DefineCommand("SELECT * FROM #DataTypeTable;" +
26969
"SELECT * FROM #DataTypeTable;", CommandType.Text)
270-
.DefineResults<TypeTestModel, TypeTestModel, TypeTestModel, TypeTestModel, TypeTestModel, TypeTestModel, TypeTestModel>()
70+
.DefineResults(typeof(TypeTestModel),
71+
typeof(TypeTestModel),
72+
typeof(TypeTestModel),
73+
typeof(TypeTestModel),
74+
typeof(TypeTestModel),
75+
typeof(TypeTestModel),
76+
typeof(TypeTestModel))
27177
.Realize("MoreResultsAreAvailableTest")
272-
.Execute(_databaseManager);
273-
274-
Assert.AreEqual(results.GetType(), typeof(Tuple<
275-
IEnumerable<TypeTestModel>,
276-
IEnumerable<TypeTestModel>,
277-
IEnumerable<TypeTestModel>,
278-
IEnumerable<TypeTestModel>,
279-
IEnumerable<TypeTestModel>,
280-
IEnumerable<TypeTestModel>,
281-
IEnumerable<TypeTestModel>>));
78+
.Execute(_databaseManager).ToArray();
28279

283-
Assert.IsNotNull(results.Item1);
284-
Assert.IsNotNull(results.Item2);
285-
Assert.IsNull(results.Item3);
286-
Assert.IsNull(results.Item4);
287-
Assert.IsNull(results.Item5);
288-
Assert.IsNull(results.Item6);
289-
Assert.IsNull(results.Item7);
80+
Assert.IsNotNull(results[0]);
81+
Assert.IsNotNull(results[1]);
82+
Assert.IsNull(results[2]);
83+
Assert.IsNull(results[3]);
84+
Assert.IsNull(results[4]);
85+
Assert.IsNull(results[5]);
86+
Assert.IsNull(results[6]);
29087

291-
Assert.AreEqual(results.Item1.Count(), 1);
292-
Assert.AreEqual(results.Item2.Count(), 1);
88+
Assert.AreEqual(results[0].Count(), 1);
89+
Assert.AreEqual(results[0].Count(), 1);
29390

294-
Assert.AreNotSame(results.Item1, results.Item2);
91+
Assert.AreNotSame(results[0], results[1]);
29592
}
29693
}
29794
}

src/Susanoo.Core.Tests/Static/SingleResult/BuiltInTypes.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
11
using System;
2-
using System.Collections.Generic;
32
using System.Data;
43
using System.Linq;
5-
using System.Linq.Expressions;
6-
using System.Text;
7-
using System.Threading.Tasks;
84
using NUnit.Framework;
95
using Susanoo.Exceptions;
10-
using Susanoo.Processing;
116

127
namespace Susanoo.Tests.Static.SingleResult
138
{

src/Susanoo.Core.Tests/Static/SingleResult/KeyValuePairDeserializer.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
11
#region
22

3-
using System;
43
using System.Collections.Generic;
54
using System.Data;
6-
using System.Data.Common;
7-
using System.Data.SqlClient;
85
using System.Linq;
9-
using System.Runtime.Remoting.Messaging;
10-
using System.Text.RegularExpressions;
116
using NUnit.Framework;
127

138
#endregion

0 commit comments

Comments
 (0)