Skip to content

Commit 989d74e

Browse files
committed
Improved test code density with DataRow.
1 parent f87ab82 commit 989d74e

2 files changed

Lines changed: 47 additions & 163 deletions

File tree

SqlServerSimulator.Tests/InsertTests.cs

Lines changed: 7 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,18 @@ public class InsertTests
1313
);
1414

1515
[TestMethod]
16-
public void InsertWithoutColumnNames()
16+
[DataRow("create table t ( v int );insert t values ( 1 )", 1)]
17+
[DataRow("create table t ( v int );insert T values ( 1 )", 1)]
18+
[DataRow("create table t ( v int );insert t ( v ) values ( 1 )", 1)]
19+
[DataRow("create table t ( v int );insert t ( V ) values ( 1 )", 1)]
20+
public void Insert(string commandText, int expectedRecordsAffected)
1721
{
1822
var result = new Simulation()
1923
.CreateOpenConnection()
20-
.CreateCommand("create table t ( v int );insert t values ( 1 )")
24+
.CreateCommand(commandText)
2125
.ExecuteNonQuery();
2226

23-
Assert.AreEqual(1, result);
27+
Assert.AreEqual(expectedRecordsAffected, result);
2428
}
2529

2630
[TestMethod]
@@ -41,39 +45,6 @@ public void InsertParameterized()
4145
.ExecuteNonQuery()
4246
);
4347

44-
[TestMethod]
45-
public void InsertWithoutColumnNamesCaseInsensitive()
46-
{
47-
var result = new Simulation()
48-
.CreateOpenConnection()
49-
.CreateCommand("create table t ( v int );insert T values ( 1 )")
50-
.ExecuteNonQuery();
51-
52-
Assert.AreEqual(1, result);
53-
}
54-
55-
[TestMethod]
56-
public void InsertWithColumnNames()
57-
{
58-
var result = new Simulation()
59-
.CreateOpenConnection()
60-
.CreateCommand("create table t ( v int );insert t ( v ) values ( 1 )")
61-
.ExecuteNonQuery();
62-
63-
Assert.AreEqual(1, result);
64-
}
65-
66-
[TestMethod]
67-
public void InsertWithColumnNamesCaseInsensitive()
68-
{
69-
var result = new Simulation()
70-
.CreateOpenConnection()
71-
.CreateCommand("create table t ( v int );insert t ( V ) values ( 1 )")
72-
.ExecuteNonQuery();
73-
74-
Assert.AreEqual(1, result);
75-
}
76-
7748
[TestMethod]
7849
public void InsertRequiresValidColumnNames() => Assert.Throws<DbException>(() => new Simulation()
7950
.CreateOpenConnection()

SqlServerSimulator.Tests/SelectTests.cs

Lines changed: 40 additions & 127 deletions
Original file line numberDiff line numberDiff line change
@@ -24,38 +24,23 @@ public void Select1ViaExecuteReaderIndexer()
2424
public void Select1ViaExecuteReaderGetInt32()
2525
=> Assert.AreEqual(1, ScalarViaReaderTest("select 1").GetInt32(0));
2626

27-
private static void VersionTest(string commandText) =>
28-
Assert.AreEqual("SQL Server Simulator", new Simulation().ExecuteScalar(commandText));
29-
30-
[TestMethod]
31-
public void SelectVersion() => VersionTest("SELECT @@VERSION");
32-
33-
[TestMethod]
34-
public void SelectVersion_LowerCase() => VersionTest("select @@version");
35-
3627
[TestMethod]
37-
public void SelectVersion_MixedCase() => VersionTest("Select @@Version");
28+
[DataRow("SELECT @@VERSION")]
29+
[DataRow("select @@version")]
30+
[DataRow("Select @@Version")]
31+
public void SelectVersion(string commandText) => Assert.AreEqual("SQL Server Simulator", new Simulation().ExecuteScalar(commandText));
3832

3933
[TestMethod]
40-
public void SelectParameterValue()
34+
[DataRow("select @p0", "p0", 5)]
35+
[DataRow("select @p0", "@p0", 6)]
36+
public void SelectParameterValue(string commandText, string name, object value)
4137
{
4238
var result = new Simulation()
4339
.CreateOpenConnection()
44-
.CreateCommand("select @p0", ("@p0", 5))
40+
.CreateCommand(commandText, (name, value))
4541
.ExecuteScalar();
4642

47-
Assert.AreEqual(5, result);
48-
}
49-
50-
[TestMethod]
51-
public void SelectParameterValueWithAtInName()
52-
{
53-
var result = new Simulation()
54-
.CreateOpenConnection()
55-
.CreateCommand("select @p0", ("@p0", 6))
56-
.ExecuteScalar();
57-
58-
Assert.AreEqual(6, result);
43+
Assert.AreEqual(value, result);
5944
}
6045

6146
[TestMethod]
@@ -67,130 +52,58 @@ public void Select1Plus1()
6752
}
6853

6954
[TestMethod]
70-
public void SelectAliasedExpression()
71-
{
72-
using var reader = new Simulation().ExecuteReader("select 1 as c");
73-
74-
Assert.IsTrue(reader.Read());
75-
Assert.AreEqual("c", reader.GetName(0));
76-
Assert.AreEqual(1, reader.GetInt32(0));
77-
}
78-
79-
[TestMethod]
80-
public void SelectAliasedMathExpression()
55+
[DataRow("select 1 as c", "c", 1)]
56+
[DataRow("select 1 + 1 as c", "c", 2)]
57+
public void Expression(string commandText, string name, object value)
8158
{
82-
using var reader = new Simulation().ExecuteReader("select 1 + 1 as c");
59+
using var reader = new Simulation().ExecuteReader(commandText);
8360

8461
Assert.IsTrue(reader.Read());
85-
Assert.AreEqual("c", reader.GetName(0));
86-
Assert.AreEqual(2, reader.GetInt32(0));
62+
Assert.AreEqual(name, reader.GetName(0));
63+
Assert.AreEqual(value, reader[0]);
8764
}
8865

8966
[TestMethod]
90-
public void SelectExpressionFromSystemTable()
67+
[DataRow("select 1 from systypes", 34, 1, 1)]
68+
[DataRow("select 1 from systypes as s", 34, 1, 1)]
69+
[DataRow("select name from systypes", 34, 34, "image")]
70+
public void ExpressionFromTable(string commandText, int minimumRows, int uniqueRows, object value)
9171
{
92-
using var reader = new Simulation().ExecuteReader("select 1 from systypes");
72+
using var reader = new Simulation().ExecuteReader(commandText);
9373

9474
var results = reader
9575
.EnumerateRecords()
96-
.Take(34) // There might be more someday, but there won't be less.
97-
.Select(reader => reader.GetInt32(0))
76+
.Take(minimumRows) // There might be more someday, but there won't be less.
77+
.Select(reader => reader[0])
9878
.ToArray();
9979

100-
Assert.HasCount(34, results);
101-
Assert.HasCount(1, results.ToHashSet());
102-
Assert.AreEqual(1, results[0]);
80+
Assert.HasCount(minimumRows, results);
81+
Assert.HasCount(uniqueRows, results.ToHashSet());
82+
Assert.AreEqual(value, results[0]);
10383
}
10484

10585
[TestMethod]
106-
public void SelectExpressionFromAliasedSystemTable()
86+
[DataRow("select name as c from systypes", 34, 34, "c", "image")]
87+
[DataRow("select name as c from systypes as s", 34, 34, "c", "image")]
88+
[DataRow("select systypes.name from systypes", 34, 34, "name", "image")]
89+
[DataRow("select s.name from systypes as s", 34, 34, "name", "image")]
90+
public void NamedExpressionFromTable(string commandText, int minimumRows, int uniqueRows, string name, object value)
10791
{
108-
using var reader = new Simulation().ExecuteReader("select 1 from systypes as s");
92+
using var reader = new Simulation().ExecuteReader(commandText);
10993

11094
var results = reader
11195
.EnumerateRecords()
112-
.Take(34) // There might be more someday, but there won't be less.
113-
.Select(reader => reader.GetInt32(0))
96+
.Take(minimumRows) // There might be more someday, but there won't be less.
97+
.Select(reader =>
98+
{
99+
Assert.AreEqual(name, reader.GetName(0));
100+
return reader[0];
101+
})
114102
.ToArray();
115103

116-
Assert.HasCount(34, results);
117-
Assert.HasCount(1, results.ToHashSet());
118-
Assert.AreEqual(1, results[0]);
119-
}
120-
121-
[TestMethod]
122-
public void SelectColumnFromSystemTable()
123-
{
124-
using var reader = new Simulation().ExecuteReader("select name from systypes");
125-
126-
var results = reader
127-
.EnumerateRecords()
128-
.Take(34) // There might be more someday, but there won't be less.
129-
.Select(reader => reader.GetString(0))
130-
.ToHashSet();
131-
132-
Assert.HasCount(34, results);
133-
Assert.Contains("int", results);
134-
}
135-
136-
[TestMethod]
137-
public void SelectAliasedColumnFromSystemTable()
138-
{
139-
using var reader = new Simulation().ExecuteReader("select name as c from systypes");
140-
141-
var results = reader
142-
.EnumerateRecords()
143-
.Take(34) // There might be more someday, but there won't be less.
144-
.Select(reader => reader.GetName(0))
145-
.ToHashSet();
146-
147-
Assert.HasCount(1, results);
148-
Assert.Contains("c", results);
149-
}
150-
151-
[TestMethod]
152-
public void SelectAliasedColumnFromAliasedSystemTable()
153-
{
154-
using var reader = new Simulation().ExecuteReader("select name as c from systypes as s");
155-
156-
var results = reader
157-
.EnumerateRecords()
158-
.Take(34) // There might be more someday, but there won't be less.
159-
.Select(reader => reader.GetName(0))
160-
.ToHashSet();
161-
162-
Assert.HasCount(1, results);
163-
Assert.Contains("c", results);
164-
}
165-
166-
[TestMethod]
167-
public void SelectMultiPartColumnFromSystemTable()
168-
{
169-
using var reader = new Simulation().ExecuteReader("select systypes.name from systypes");
170-
171-
var results = reader
172-
.EnumerateRecords()
173-
.Take(34) // There might be more someday, but there won't be less.
174-
.Select(reader => reader.GetName(0))
175-
.ToHashSet();
176-
177-
Assert.HasCount(1, results);
178-
Assert.Contains("name", results);
179-
}
180-
181-
[TestMethod]
182-
public void SelectMultiPartColumnFromAliasedSystemTable()
183-
{
184-
using var reader = new Simulation().ExecuteReader("select s.name from systypes as s");
185-
186-
var results = reader
187-
.EnumerateRecords()
188-
.Take(34) // There might be more someday, but there won't be less.
189-
.Select(reader => reader.GetName(0))
190-
.ToHashSet();
191-
192-
Assert.HasCount(1, results);
193-
Assert.Contains("name", results);
104+
Assert.HasCount(minimumRows, results);
105+
Assert.HasCount(uniqueRows, results.ToHashSet());
106+
Assert.AreEqual(value, results[0]);
194107
}
195108

196109
[TestMethod]

0 commit comments

Comments
 (0)