Skip to content

Commit 916e108

Browse files
committed
Added axiomatic support for passing null sproc params
Added support or null parameters to stored procedures. My local SqlCe install doesn't seem to be working, so not tested with SqlCe...
1 parent 48b39a6 commit 916e108

3 files changed

Lines changed: 685 additions & 652 deletions

File tree

Lines changed: 170 additions & 148 deletions
Original file line numberDiff line numberDiff line change
@@ -1,148 +1,170 @@
1-
using System.Diagnostics;
2-
using NUnit.Framework;
3-
4-
namespace Simple.Data.SqlTest
5-
{
6-
using System.Data;
7-
8-
[TestFixture]
9-
public class ProcedureTest
10-
{
11-
[TestFixtureSetUp]
12-
public void Setup()
13-
{
14-
DatabaseHelper.Reset();
15-
}
16-
17-
[Test]
18-
public void GetCustomersTest()
19-
{
20-
var db = DatabaseHelper.Open();
21-
var results = db.GetCustomers();
22-
var actual = results.First();
23-
Assert.AreEqual(1, actual.CustomerId);
24-
}
25-
26-
[Test]
27-
public void GetCustomerCountTest()
28-
{
29-
var db = DatabaseHelper.Open();
30-
var results = db.GetCustomerCount();
31-
Assert.AreEqual(1, results.ReturnValue);
32-
}
33-
34-
[Test]
35-
public void FindGetCustomerCountAndInvokeTest()
36-
{
37-
var db = DatabaseHelper.Open();
38-
var getCustomerCount = db.GetCustomerCount;
39-
var results = getCustomerCount();
40-
Assert.AreEqual(1, results.ReturnValue);
41-
}
42-
43-
[Test]
44-
public void FindGetCustomerCountUsingIndexerAndInvokeTest()
45-
{
46-
var db = DatabaseHelper.Open();
47-
var getCustomerCount = db["GetCustomerCount"];
48-
var results = getCustomerCount();
49-
Assert.AreEqual(1, results.ReturnValue);
50-
}
51-
52-
[Test]
53-
public void SchemaUnqualifiedProcedureResolutionTest()
54-
{
55-
var db = DatabaseHelper.Open();
56-
var actual = db.SchemaProc().FirstOrDefault();
57-
Assert.IsNotNull(actual);
58-
Assert.AreEqual("dbo.SchemaProc", actual.Actual);
59-
}
60-
61-
[Test]
62-
public void SchemaQualifiedProcedureResolutionTest()
63-
{
64-
var db = DatabaseHelper.Open();
65-
var actual = db.test.SchemaProc().FirstOrDefault();
66-
Assert.IsNotNull(actual);
67-
Assert.AreEqual("test.SchemaProc", actual.Actual);
68-
}
69-
70-
[Test]
71-
public void GetCustomerCountAsOutputTest()
72-
{
73-
var db = DatabaseHelper.Open();
74-
var actual = db.GetCustomerCountAsOutput();
75-
Assert.AreEqual(42, actual.OutputValues["Count"]);
76-
}
77-
78-
#if DEBUG // Trace is only written for DEBUG build
79-
[Test]
80-
public void GetCustomerCountSecondCallExecutesNonQueryTest()
81-
{
82-
var listener = new TestTraceListener();
83-
Trace.Listeners.Add(listener);
84-
var db = DatabaseHelper.Open();
85-
db.GetCustomerCount();
86-
Assert.IsFalse(listener.Output.Contains("ExecuteNonQuery"));
87-
db.GetCustomerCount();
88-
Assert.IsTrue(listener.Output.Contains("ExecuteNonQuery"));
89-
Trace.Listeners.Remove(listener);
90-
}
91-
#endif
92-
93-
[Test]
94-
public void GetCustomerAndOrdersTest()
95-
{
96-
var db = DatabaseHelper.Open();
97-
var results = db.GetCustomerAndOrders(1);
98-
var customer = results.FirstOrDefault();
99-
Assert.IsNotNull(customer);
100-
Assert.AreEqual(1, customer.CustomerId);
101-
Assert.IsTrue(results.NextResult());
102-
var order = results.FirstOrDefault();
103-
Assert.IsNotNull(order);
104-
Assert.AreEqual(1, order.OrderId);
105-
}
106-
107-
[Test]
108-
public void GetCustomerAndOrdersStillWorksAfterZeroRecordCallTest()
109-
{
110-
var db = DatabaseHelper.Open();
111-
db.GetCustomerAndOrders(1000);
112-
var results = db.GetCustomerAndOrders(1);
113-
var customer = results.FirstOrDefault();
114-
Assert.IsNotNull(customer);
115-
Assert.AreEqual(1, customer.CustomerId);
116-
Assert.IsTrue(results.NextResult());
117-
var order = results.FirstOrDefault();
118-
Assert.IsNotNull(order);
119-
Assert.AreEqual(1, order.OrderId);
120-
}
121-
122-
[Test]
123-
public void ScalarFunctionIsCalledCorrectly()
124-
{
125-
var db = DatabaseHelper.Open();
126-
var results = db.VarcharAndReturnInt("The answer to everything");
127-
Assert.AreEqual(42, results.ReturnValue);
128-
}
129-
130-
[Test]
131-
public void CallProcedureWithDataTable()
132-
{
133-
var db = DatabaseHelper.Open();
134-
var dataTable = new DataTable();
135-
dataTable.Columns.Add("Value");
136-
dataTable.Rows.Add("One");
137-
dataTable.Rows.Add("Two");
138-
dataTable.Rows.Add("Three");
139-
140-
var actual = db.ReturnStrings(dataTable).ToScalarList<string>();
141-
142-
Assert.AreEqual(3, actual.Count);
143-
Assert.Contains("One", actual);
144-
Assert.Contains("Two", actual);
145-
Assert.Contains("Three", actual);
146-
}
147-
}
148-
}
1+
using System.Diagnostics;
2+
using NUnit.Framework;
3+
4+
namespace Simple.Data.SqlTest
5+
{
6+
using System.Data;
7+
8+
[TestFixture]
9+
public class ProcedureTest
10+
{
11+
[TestFixtureSetUp]
12+
public void Setup()
13+
{
14+
DatabaseHelper.Reset();
15+
}
16+
17+
[Test]
18+
public void GetCustomersTest()
19+
{
20+
var db = DatabaseHelper.Open();
21+
var results = db.GetCustomers();
22+
var actual = results.First();
23+
Assert.AreEqual(1, actual.CustomerId);
24+
}
25+
26+
[Test]
27+
public void GetCustomerCountTest()
28+
{
29+
var db = DatabaseHelper.Open();
30+
var results = db.GetCustomerCount();
31+
Assert.AreEqual(1, results.ReturnValue);
32+
}
33+
34+
[Test]
35+
public void FindGetCustomerCountAndInvokeTest()
36+
{
37+
var db = DatabaseHelper.Open();
38+
var getCustomerCount = db.GetCustomerCount;
39+
var results = getCustomerCount();
40+
Assert.AreEqual(1, results.ReturnValue);
41+
}
42+
43+
[Test]
44+
public void FindGetCustomerCountUsingIndexerAndInvokeTest()
45+
{
46+
var db = DatabaseHelper.Open();
47+
var getCustomerCount = db["GetCustomerCount"];
48+
var results = getCustomerCount();
49+
Assert.AreEqual(1, results.ReturnValue);
50+
}
51+
52+
[Test]
53+
public void SchemaUnqualifiedProcedureResolutionTest()
54+
{
55+
var db = DatabaseHelper.Open();
56+
var actual = db.SchemaProc().FirstOrDefault();
57+
Assert.IsNotNull(actual);
58+
Assert.AreEqual("dbo.SchemaProc", actual.Actual);
59+
}
60+
61+
[Test]
62+
public void SchemaQualifiedProcedureResolutionTest()
63+
{
64+
var db = DatabaseHelper.Open();
65+
var actual = db.test.SchemaProc().FirstOrDefault();
66+
Assert.IsNotNull(actual);
67+
Assert.AreEqual("test.SchemaProc", actual.Actual);
68+
}
69+
70+
[Test]
71+
public void GetCustomerCountAsOutputTest()
72+
{
73+
var db = DatabaseHelper.Open();
74+
var actual = db.GetCustomerCountAsOutput();
75+
Assert.AreEqual(42, actual.OutputValues["Count"]);
76+
}
77+
78+
#if DEBUG // Trace is only written for DEBUG build
79+
[Test]
80+
public void GetCustomerCountSecondCallExecutesNonQueryTest()
81+
{
82+
var listener = new TestTraceListener();
83+
Trace.Listeners.Add(listener);
84+
var db = DatabaseHelper.Open();
85+
db.GetCustomerCount();
86+
Assert.IsFalse(listener.Output.Contains("ExecuteNonQuery"));
87+
db.GetCustomerCount();
88+
Assert.IsTrue(listener.Output.Contains("ExecuteNonQuery"));
89+
Trace.Listeners.Remove(listener);
90+
}
91+
#endif
92+
93+
[Test]
94+
public void GetCustomerAndOrdersTest()
95+
{
96+
var db = DatabaseHelper.Open();
97+
var results = db.GetCustomerAndOrders(1);
98+
var customer = results.FirstOrDefault();
99+
Assert.IsNotNull(customer);
100+
Assert.AreEqual(1, customer.CustomerId);
101+
Assert.IsTrue(results.NextResult());
102+
var order = results.FirstOrDefault();
103+
Assert.IsNotNull(order);
104+
Assert.AreEqual(1, order.OrderId);
105+
}
106+
107+
[Test]
108+
public void AddCustomerTest()
109+
{
110+
var db = DatabaseHelper.Open();
111+
Customer customer;
112+
customer = db.AddCustomer("Peter", "Address").FirstOrDefault();
113+
Assert.IsNotNull(customer);
114+
customer = db.Customers.FindByCustomerId(customer.CustomerId);
115+
Assert.IsNotNull(customer);
116+
}
117+
118+
[Test]
119+
public void AddCustomerNullAddressTest()
120+
{
121+
var db = DatabaseHelper.Open();
122+
Customer customer;
123+
customer = db.AddCustomer("Peter", null).FirstOrDefault();
124+
Assert.IsNotNull(customer);
125+
customer = db.Customers.FindByCustomerId(customer.CustomerId);
126+
Assert.IsNotNull(customer);
127+
}
128+
129+
[Test]
130+
public void GetCustomerAndOrdersStillWorksAfterZeroRecordCallTest()
131+
{
132+
var db = DatabaseHelper.Open();
133+
db.GetCustomerAndOrders(1000);
134+
var results = db.GetCustomerAndOrders(1);
135+
var customer = results.FirstOrDefault();
136+
Assert.IsNotNull(customer);
137+
Assert.AreEqual(1, customer.CustomerId);
138+
Assert.IsTrue(results.NextResult());
139+
var order = results.FirstOrDefault();
140+
Assert.IsNotNull(order);
141+
Assert.AreEqual(1, order.OrderId);
142+
}
143+
144+
[Test]
145+
public void ScalarFunctionIsCalledCorrectly()
146+
{
147+
var db = DatabaseHelper.Open();
148+
var results = db.VarcharAndReturnInt("The answer to everything");
149+
Assert.AreEqual(42, results.ReturnValue);
150+
}
151+
152+
[Test]
153+
public void CallProcedureWithDataTable()
154+
{
155+
var db = DatabaseHelper.Open();
156+
var dataTable = new DataTable();
157+
dataTable.Columns.Add("Value");
158+
dataTable.Rows.Add("One");
159+
dataTable.Rows.Add("Two");
160+
dataTable.Rows.Add("Three");
161+
162+
var actual = db.ReturnStrings(dataTable).ToScalarList<string>();
163+
164+
Assert.AreEqual(3, actual.Count);
165+
Assert.Contains("One", actual);
166+
Assert.Contains("Two", actual);
167+
Assert.Contains("Three", actual);
168+
}
169+
}
170+
}

0 commit comments

Comments
 (0)