Skip to content

Commit a67830b

Browse files
committed
Tests using async code path (DNET-1012).
1 parent 68510aa commit a67830b

37 files changed

+2706
-3223
lines changed

Provider/src/FirebirdSql.Data.FirebirdClient.Tests/FbArrayTests.cs

Lines changed: 385 additions & 538 deletions
Large diffs are not rendered by default.

Provider/src/FirebirdSql.Data.FirebirdClient.Tests/FbBlobTests.cs

Lines changed: 44 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
//$Authors = Carlos Guzman Alvarez, Jiri Cincura (jiri@cincura.net)
1717

1818
using System.Security.Cryptography;
19+
using System.Threading.Tasks;
1920
using FirebirdSql.Data.TestsBase;
2021
using NUnit.Framework;
2122

@@ -25,104 +26,78 @@ namespace FirebirdSql.Data.FirebirdClient.Tests
2526
[TestFixtureSource(typeof(FbServerTypeTestFixtureSource), nameof(FbServerTypeTestFixtureSource.Embedded))]
2627
public class FbBlobTests : FbTestsBase
2728
{
28-
#region Constructors
29-
3029
public FbBlobTests(FbServerType serverType, bool compression, FbWireCrypt wireCrypt)
3130
: base(serverType, compression, wireCrypt)
3231
{ }
3332

34-
#endregion
35-
36-
#region Unit Tests
37-
3833
[Test]
39-
public void BinaryBlobTest()
34+
public async Task BinaryBlobTest()
4035
{
4136
var id_value = GetId();
42-
43-
var selectText = "SELECT blob_field FROM TEST WHERE int_field = " + id_value.ToString();
44-
var insertText = "INSERT INTO TEST (int_field, blob_field) values(@int_field, @blob_field)";
45-
46-
// Generate an array of temp data
4737
var insert_values = new byte[100000 * 4];
48-
var rng = new RNGCryptoServiceProvider();
49-
rng.GetBytes(insert_values);
50-
51-
// Execute insert command
52-
var transaction = Connection.BeginTransaction();
53-
54-
var insert = new FbCommand(insertText, Connection, transaction);
55-
insert.Parameters.Add("@int_field", FbDbType.Integer).Value = id_value;
56-
insert.Parameters.Add("@blob_field", FbDbType.Binary).Value = insert_values;
57-
insert.ExecuteNonQuery();
58-
59-
transaction.Commit();
60-
61-
// Check that inserted values are correct
62-
var select = new FbCommand(selectText, Connection);
63-
var select_values = (byte[])select.ExecuteScalar();
38+
using (var rng = new RNGCryptoServiceProvider())
39+
{
40+
rng.GetBytes(insert_values);
41+
}
6442

65-
for (var i = 0; i < insert_values.Length; i++)
43+
await using (var transaction = await Connection.BeginTransactionAsync())
6644
{
67-
if (insert_values[i] != select_values[i])
45+
await using (var insert = new FbCommand("INSERT INTO TEST (int_field, blob_field) values(@int_field, @blob_field)", Connection, transaction))
6846
{
69-
Assert.Fail("differences at index " + i.ToString());
47+
insert.Parameters.Add("@int_field", FbDbType.Integer).Value = id_value;
48+
insert.Parameters.Add("@blob_field", FbDbType.Binary).Value = insert_values;
49+
await insert.ExecuteNonQueryAsync();
7050
}
51+
await transaction.CommitAsync();
52+
}
53+
54+
await using (var select = new FbCommand($"SELECT blob_field FROM TEST WHERE int_field = {id_value}", Connection))
55+
{
56+
var select_values = (byte[])await select.ExecuteScalarAsync();
57+
CollectionAssert.AreEqual(insert_values, select_values);
7158
}
7259
}
7360

7461
[Test]
75-
public void ReaderGetBytes()
62+
public async Task ReaderGetBytes()
7663
{
7764
var id_value = GetId();
78-
79-
var selectText = "SELECT blob_field FROM TEST WHERE int_field = " + id_value.ToString();
80-
var insertText = "INSERT INTO TEST (int_field, blob_field) values(@int_field, @blob_field)";
81-
82-
// Generate an array of temp data
8365
var insert_values = new byte[100000 * 4];
84-
var rng = new RNGCryptoServiceProvider();
85-
rng.GetBytes(insert_values);
86-
87-
// Execute insert command
88-
var transaction = Connection.BeginTransaction();
89-
90-
var insert = new FbCommand(insertText, Connection, transaction);
91-
insert.Parameters.Add("@int_field", FbDbType.Integer).Value = id_value;
92-
insert.Parameters.Add("@blob_field", FbDbType.Binary).Value = insert_values;
93-
insert.ExecuteNonQuery();
94-
95-
transaction.Commit();
96-
97-
// Check that inserted values are correct
98-
var select = new FbCommand(selectText, Connection);
99-
100-
var select_values = new byte[100000 * 4];
66+
using (var rng = new RNGCryptoServiceProvider())
67+
{
68+
rng.GetBytes(insert_values);
69+
}
10170

102-
using (var reader = select.ExecuteReader())
71+
await using (var transaction = await Connection.BeginTransactionAsync())
10372
{
104-
var index = 0;
105-
var segmentSize = 1000;
106-
while (reader.Read())
73+
await using (var insert = new FbCommand("INSERT INTO TEST (int_field, blob_field) values(@int_field, @blob_field)", Connection, transaction))
10774
{
108-
while (index < 400000)
109-
{
110-
reader.GetBytes(0, index, select_values, index, segmentSize);
111-
112-
index += segmentSize;
113-
}
75+
insert.Parameters.Add("@int_field", FbDbType.Integer).Value = id_value;
76+
insert.Parameters.Add("@blob_field", FbDbType.Binary).Value = insert_values;
77+
await insert.ExecuteNonQueryAsync();
11478
}
79+
await transaction.CommitAsync();
11580
}
11681

117-
for (var i = 0; i < insert_values.Length; i++)
82+
await using (var select = new FbCommand($"SELECT blob_field FROM TEST WHERE int_field = {id_value}", Connection))
11883
{
119-
if (insert_values[i] != select_values[i])
84+
var select_values = new byte[100000 * 4];
85+
using (var reader = await select.ExecuteReaderAsync())
12086
{
121-
Assert.Fail("differences at index " + i.ToString());
87+
var index = 0;
88+
var segmentSize = 1000;
89+
while (await reader.ReadAsync())
90+
{
91+
while (index < 400000)
92+
{
93+
reader.GetBytes(0, index, select_values, index, segmentSize);
94+
95+
index += segmentSize;
96+
}
97+
}
12298
}
99+
CollectionAssert.AreEqual(insert_values, select_values);
123100
}
124101
}
125-
126-
#endregion
127102
}
128103
}

Provider/src/FirebirdSql.Data.FirebirdClient.Tests/FbBooleanSupportTests.cs

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
using System;
1919
using System.Collections.Generic;
20+
using System.Threading.Tasks;
2021
using FirebirdSql.Data.TestsBase;
2122
using NUnit.Framework;
2223

@@ -35,18 +36,18 @@ public FbBooleanSupportTests(FbServerType serverType, bool compression, FbWireCr
3536
}
3637

3738
[SetUp]
38-
public override void SetUp()
39+
public override async Task SetUp()
3940
{
40-
base.SetUp();
41+
await base.SetUp();
4142

42-
if (!EnsureVersion(new Version(3, 0, 0, 0)))
43+
if (!await EnsureVersion(new Version(3, 0, 0, 0)))
4344
return;
4445

4546
_shouldTearDown = true;
46-
using (var cmd = Connection.CreateCommand())
47+
await using (var cmd = Connection.CreateCommand())
4748
{
4849
cmd.CommandText = "CREATE TABLE withboolean (id INTEGER, bool BOOLEAN)";
49-
cmd.ExecuteNonQuery();
50+
await cmd.ExecuteNonQueryAsync();
5051
}
5152
var data = new Dictionary<int, string>()
5253
{
@@ -56,50 +57,50 @@ public override void SetUp()
5657
};
5758
foreach (var item in data)
5859
{
59-
using (var cmd = Connection.CreateCommand())
60+
await using (var cmd = Connection.CreateCommand())
6061
{
6162
cmd.CommandText = $"INSERT INTO withboolean (id, bool) VALUES ({item.Key}, {item.Value})";
62-
cmd.ExecuteNonQuery();
63+
await cmd.ExecuteNonQueryAsync();
6364
}
6465
}
6566
}
6667

6768
[TearDown]
68-
public override void TearDown()
69+
public override async Task TearDown()
6970
{
7071
if (_shouldTearDown)
7172
{
72-
using (var cmd = Connection.CreateCommand())
73+
await using (var cmd = Connection.CreateCommand())
7374
{
7475
cmd.CommandText = "DROP TABLE withboolean";
75-
cmd.ExecuteNonQuery();
76+
await cmd.ExecuteNonQueryAsync();
7677
}
7778
}
78-
base.TearDown();
79+
await base.TearDown();
7980
}
8081

8182
[Test]
82-
public void SimpleSelectTest()
83+
public async Task SimpleSelectTest()
8384
{
84-
using (var cmd = Connection.CreateCommand())
85+
await using (var cmd = Connection.CreateCommand())
8586
{
8687
cmd.CommandText = "SELECT id, bool FROM withboolean";
87-
using (var reader = cmd.ExecuteReader())
88+
await using (var reader = await cmd.ExecuteReaderAsync())
8889
{
89-
while (reader.Read())
90+
while (await reader.ReadAsync())
9091
{
9192
switch (reader.GetInt32(0))
9293
{
9394
case 0:
9495
Assert.IsFalse(reader.GetBoolean(1), "Column with value FALSE should have value false.");
95-
Assert.IsFalse(reader.IsDBNull(1), "Column with value FALSE should not be null.");
96+
Assert.IsFalse(await reader.IsDBNullAsync(1), "Column with value FALSE should not be null.");
9697
break;
9798
case 1:
9899
Assert.IsTrue(reader.GetBoolean(1), "Column with value TRUE should have value true.");
99-
Assert.IsFalse(reader.IsDBNull(1), "Column with value TRUE should not be null.");
100+
Assert.IsFalse(await reader.IsDBNullAsync(1), "Column with value TRUE should not be null.");
100101
break;
101102
case 2:
102-
Assert.IsTrue(reader.IsDBNull(1), "Column with value UNKNOWN should be null.");
103+
Assert.IsTrue(await reader.IsDBNullAsync(1), "Column with value UNKNOWN should be null.");
103104
break;
104105
default:
105106
Assert.Fail("Unexpected row in result set.");
@@ -111,14 +112,14 @@ public void SimpleSelectTest()
111112
}
112113

113114
[Test]
114-
public void SimpleSelectSchemaTableTest()
115+
public async Task SimpleSelectSchemaTableTest()
115116
{
116-
using (var cmd = Connection.CreateCommand())
117+
await using (var cmd = Connection.CreateCommand())
117118
{
118119
cmd.CommandText = "SELECT id, bool FROM withboolean";
119-
using (var reader = cmd.ExecuteReader())
120+
await using (var reader = await cmd.ExecuteReaderAsync())
120121
{
121-
var schema = reader.GetSchemaTable();
122+
var schema = await reader.GetSchemaTableAsync();
122123
Assert.AreEqual(typeof(bool), schema.Rows[1].ItemArray[5]);
123124
}
124125
}
@@ -127,33 +128,33 @@ public void SimpleSelectSchemaTableTest()
127128
[TestCase(false, 0)]
128129
[TestCase(true, 1)]
129130
[TestCase(null, 2)]
130-
public void SimpleSelectWithBoolConditionTest(bool? value, int id)
131+
public async Task SimpleSelectWithBoolConditionTest(bool? value, int id)
131132
{
132-
using (var cmd = Connection.CreateCommand())
133+
await using (var cmd = Connection.CreateCommand())
133134
{
134135
cmd.CommandText = $"SELECT id FROM withboolean WHERE bool IS NOT DISTINCT FROM @bool";
135136
cmd.Parameters.Add(new FbParameter("bool", value));
136-
Assert.AreEqual(id, cmd.ExecuteScalar());
137+
Assert.AreEqual(id, await cmd.ExecuteScalarAsync());
137138
}
138139
}
139140

140141
[TestCase(3, false)]
141142
[TestCase(4, true)]
142143
[TestCase(5, null)]
143-
public void ParametrizedInsertTest(int id, bool? value)
144+
public async Task ParametrizedInsertTest(int id, bool? value)
144145
{
145-
using (var cmd = Connection.CreateCommand())
146+
await using (var cmd = Connection.CreateCommand())
146147
{
147148
cmd.CommandText = "INSERT INTO withboolean (id, bool) VALUES (@id, @bool)";
148149
cmd.Parameters.Add("id", id);
149150
cmd.Parameters.Add("bool", value);
150-
Assert.DoesNotThrow(() => cmd.ExecuteNonQuery());
151+
Assert.DoesNotThrowAsync(() => cmd.ExecuteNonQueryAsync());
151152
}
152-
using (var cmd = Connection.CreateCommand())
153+
await using (var cmd = Connection.CreateCommand())
153154
{
154155
cmd.CommandText = $"SELECT bool FROM withboolean WHERE id = @id";
155156
cmd.Parameters.Add("id", id);
156-
Assert.AreEqual(value ?? (object)DBNull.Value, cmd.ExecuteScalar());
157+
Assert.AreEqual(value ?? (object)DBNull.Value, await cmd.ExecuteScalarAsync());
157158
}
158159
}
159160
}

0 commit comments

Comments
 (0)