Skip to content

Commit a7574a0

Browse files
Merge branch 'FirebirdSQL:master' into master
2 parents 7b69cd2 + 59cfb1f commit a7574a0

File tree

23 files changed

+1062
-235
lines changed

23 files changed

+1062
-235
lines changed

src/EntityFramework.Firebird.Tests/EntityFramework.Firebird.Tests.csproj

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,20 @@
1111
<OutputType>Exe</OutputType>
1212
<StartupObject>FirebirdSql.Data.TestsBase.Program</StartupObject>
1313
</PropertyGroup>
14+
<ItemGroup>
15+
<Using Include="NUnit.Framework.Legacy.ClassicAssert" Alias="Assert" />
16+
<Using Include="NUnit.Framework.Legacy.CollectionAssert" Alias="CollectionAssert" />
17+
<Using Include="NUnit.Framework.Legacy.StringAssert" Alias="StringAssert" />
18+
</ItemGroup>
1419
<ItemGroup Condition="'$(TargetFramework)'=='net8.0'">
1520
<!-- left in repo as an example/documentation for .NET Framework -->
1621
<None Remove="app.config" />
1722
</ItemGroup>
1823
<ItemGroup>
19-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.3" />
20-
<PackageReference Include="NUnit" Version="3.13.3" />
21-
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
22-
<PackageReference Include="NUnitLite" Version="3.13.3" />
24+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
25+
<PackageReference Include="NUnit" Version="4.2.2" />
26+
<PackageReference Include="NUnit3TestAdapter" Version="4.6.0" />
27+
<PackageReference Include="NUnitLite" Version="4.2.2" />
2328
</ItemGroup>
2429
<ItemGroup>
2530
<ProjectReference Include="..\EntityFramework.Firebird\EntityFramework.Firebird.csproj" />
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
using System.IO;
2+
using System.Security.Cryptography;
3+
using System.Threading.Tasks;
4+
using FirebirdSql.Data.TestsBase;
5+
using NUnit.Framework;
6+
7+
namespace FirebirdSql.Data.FirebirdClient.Tests;
8+
9+
[TestFixtureSource(typeof(FbServerTypeTestFixtureSource), nameof(FbServerTypeTestFixtureSource.Default))]
10+
[TestFixtureSource(typeof(FbServerTypeTestFixtureSource), nameof(FbServerTypeTestFixtureSource.Embedded))]
11+
public class BlobStreamTests : FbTestsBase
12+
{
13+
public BlobStreamTests(FbServerType serverType, bool compression, FbWireCrypt wireCrypt)
14+
: base(serverType, compression, wireCrypt)
15+
{ }
16+
17+
[Test]
18+
public async Task FbBlobStreamReadTest()
19+
{
20+
var id_value = RandomNumberGenerator.GetInt32(int.MinValue, int.MaxValue);
21+
var insert_values = RandomNumberGenerator.GetBytes(100000 * 4);
22+
23+
await using (var transaction = await Connection.BeginTransactionAsync())
24+
{
25+
await using (var insert = new FbCommand("INSERT INTO TEST (int_field, blob_field) values(@int_field, @blob_field)", Connection, transaction))
26+
{
27+
insert.Parameters.Add("@int_field", FbDbType.Integer).Value = id_value;
28+
insert.Parameters.Add("@blob_field", FbDbType.Binary).Value = insert_values;
29+
await insert.ExecuteNonQueryAsync();
30+
}
31+
await transaction.CommitAsync();
32+
}
33+
34+
await using (var select = new FbCommand($"SELECT blob_field FROM TEST WHERE int_field = {id_value}", Connection))
35+
{
36+
await using var reader = await select.ExecuteReaderAsync();
37+
while (await reader.ReadAsync())
38+
{
39+
await using var output = new MemoryStream();
40+
await using (var stream = reader.GetStream(0))
41+
{
42+
await stream.CopyToAsync(output);
43+
}
44+
45+
var select_values = output.ToArray();
46+
CollectionAssert.AreEqual(insert_values, select_values);
47+
}
48+
}
49+
}
50+
51+
[Test]
52+
public async Task FbBlobStreamWriteTest()
53+
{
54+
var id_value = RandomNumberGenerator.GetInt32(int.MinValue, int.MaxValue);
55+
var insert_values = RandomNumberGenerator.GetBytes(100000 * 4);
56+
57+
await using (var transaction = await Connection.BeginTransactionAsync())
58+
{
59+
await using (var insert = new FbCommand("INSERT INTO TEST (int_field, blob_field) values(@int_field, @blob_field)", Connection, transaction))
60+
{
61+
insert.Parameters.Add("@int_field", FbDbType.Integer).Value = id_value;
62+
insert.Parameters.Add("@blob_field", FbDbType.Binary).Value = insert_values;
63+
await insert.ExecuteNonQueryAsync();
64+
}
65+
66+
await using (var select = new FbCommand($"SELECT blob_field FROM TEST WHERE int_field = {id_value}", Connection, transaction))
67+
{
68+
await using var reader = await select.ExecuteReaderAsync();
69+
while (await reader.ReadAsync())
70+
{
71+
await using var stream = reader.GetStream(0);
72+
await stream.WriteAsync(insert_values);
73+
74+
break;
75+
}
76+
}
77+
await transaction.CommitAsync();
78+
}
79+
80+
await using (var select = new FbCommand($"SELECT blob_field FROM TEST WHERE int_field = {id_value}", Connection))
81+
{
82+
var select_values = (byte[])await select.ExecuteScalarAsync();
83+
CollectionAssert.AreEqual(insert_values, select_values);
84+
}
85+
}
86+
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public async Task BinaryBlobTest()
4444
insert.Parameters.Add("@blob_field", FbDbType.Binary).Value = insert_values;
4545
await insert.ExecuteNonQueryAsync();
4646
}
47+
4748
await transaction.CommitAsync();
4849
}
4950

src/FirebirdSql.Data.FirebirdClient.Tests/FbDataReaderTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ public async Task ReadBinaryTest()
313313
{
314314
bytes[i] = (byte)random.Next(byte.MinValue, byte.MaxValue);
315315
}
316-
var binaryString = $"x'{BitConverter.ToString(bytes).Replace("-", string.Empty)}'";
316+
var binaryString = $"x'{Convert.ToHexString(bytes)}'";
317317

318318
await using (var command = new FbCommand($"select {binaryString} from TEST", Connection, transaction))
319319
{

src/FirebirdSql.Data.FirebirdClient.Tests/FbZonedDateTimeTypeTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@ public void EqualityFalse(FbZonedDateTime expected, FbZonedDateTime actual)
4747
Assert.AreNotEqual(expected, actual);
4848
}
4949

50+
[Test]
51+
public void ConvertToDateTimeShouldNotThrow()
52+
{
53+
var fbZonedDateTime = new FbZonedDateTime(new DateTime(2020, 12, 4, 10, 38, 0, DateTimeKind.Utc), "UTC");
54+
55+
Assert.DoesNotThrow(() => Convert.ChangeType(fbZonedDateTime, typeof(DateTime)));
56+
}
57+
5058
public void DateTimeShouldBeUtc()
5159
{
5260
Assert.Throws<ArgumentException>(() =>

src/FirebirdSql.Data.FirebirdClient.Tests/FbZonedTimeTypeTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,12 @@ public void EqualityFalse(FbZonedTime expected, FbZonedTime actual)
4646
{
4747
Assert.AreNotEqual(expected, actual);
4848
}
49+
50+
[Test]
51+
public void ConvertToTimeSpanShouldNotThrow()
52+
{
53+
var fbZonedTime = new FbZonedTime(TimeSpan.FromMinutes(142), "UTC");
54+
55+
Assert.DoesNotThrow(() => Convert.ChangeType(fbZonedTime, typeof(TimeSpan)));
56+
}
4957
}

src/FirebirdSql.Data.FirebirdClient.Tests/FirebirdSql.Data.FirebirdClient.Tests.csproj

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,15 @@
1212
<StartupObject>FirebirdSql.Data.TestsBase.Program</StartupObject>
1313
</PropertyGroup>
1414
<ItemGroup>
15-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.3" />
16-
<PackageReference Include="NUnit" Version="3.13.3" />
17-
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
18-
<PackageReference Include="NUnitLite" Version="3.13.3" />
15+
<Using Include="NUnit.Framework.Legacy.ClassicAssert" Alias="Assert" />
16+
<Using Include="NUnit.Framework.Legacy.CollectionAssert" Alias="CollectionAssert" />
17+
<Using Include="NUnit.Framework.Legacy.StringAssert" Alias="StringAssert" />
18+
</ItemGroup>
19+
<ItemGroup>
20+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
21+
<PackageReference Include="NUnit" Version="4.2.2" />
22+
<PackageReference Include="NUnit3TestAdapter" Version="4.6.0" />
23+
<PackageReference Include="NUnitLite" Version="4.2.2" />
1924
</ItemGroup>
2025
<ItemGroup>
2126
<ProjectReference Include="..\FirebirdSql.Data.FirebirdClient\FirebirdSql.Data.FirebirdClient.csproj" />

0 commit comments

Comments
 (0)