Skip to content

Commit d44a5fe

Browse files
fix, feat: * Floating-point numeric with dot
+ Use TestContainers
1 parent d1ed74d commit d44a5fe

File tree

6 files changed

+50
-44
lines changed

6 files changed

+50
-44
lines changed

Src/PostgreSQLTests/GlobalSetUp.cs

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,34 @@
1-
using Microsoft.Extensions.Configuration;
21
using Npgsql;
32
using NUnit.Framework;
43
using System.Data.Common;
5-
using System.IO;
64
using System.Threading.Tasks;
5+
using Testcontainers.PostgreSql;
76

87
namespace Tests
98
{
109
[SetUpFixture]
1110
public class GlobalSetUp
1211
{
13-
private IConfiguration _configuration;
14-
1512
public static NpgsqlDataSource NpgsqlDataSource;
1613

1714
public static NpgsqlConnection GetConnection => NpgsqlDataSource.CreateConnection();
1815

1916
public static DbConnection GetDbConnection => NpgsqlDataSource.CreateConnection();
2017

18+
private PostgreSqlContainer _postgre;
19+
2120
[OneTimeSetUp]
2221
public async Task OneTimeSetUp()
2322
{
24-
var builder = new ConfigurationBuilder()
25-
.SetBasePath(Directory.GetCurrentDirectory())
26-
.AddJsonFile("appsettings.json", optional: false);
27-
_configuration = builder.Build();
23+
_postgre =
24+
new PostgreSqlBuilder()
25+
.WithImage("postgres:16.0")
26+
.WithPassword("dhgvbh73j")
27+
.Build();
2828

29-
var dataSourceBuilder = new NpgsqlDataSourceBuilder(_configuration.GetConnectionString("SqlConnection"));
30-
NpgsqlDataSource = dataSourceBuilder.Build();
29+
await _postgre.StartAsync();
3130

32-
await using (var masterConnection = new NpgsqlConnection(_configuration.GetConnectionString("MasterConnection")))
31+
await using (var masterConnection = new NpgsqlConnection(_postgre.GetConnectionString()))
3332
{
3433
await masterConnection.OpenAsync();
3534
await using var command = masterConnection.CreateCommand();
@@ -53,22 +52,37 @@ public async Task OneTimeSetUp()
5352
createCmd.ExecuteNonQuery();
5453
}
5554
}
55+
56+
var builder = new NpgsqlConnectionStringBuilder(_postgre.GetConnectionString());
57+
builder.Database = "gedaqtests";
58+
var dataSourceBuilder = new NpgsqlDataSourceBuilder(builder.ConnectionString);
59+
60+
NpgsqlDataSource = dataSourceBuilder.Build();
5661
}
5762

5863
[OneTimeTearDown]
5964
public async Task OneTimeTearDown()
6065
{
61-
await using (var masterConnection = new NpgsqlConnection(_configuration.GetConnectionString("MasterConnection")))
66+
var dataSource = NpgsqlDataSource;
67+
if (dataSource != null)
6268
{
63-
await masterConnection.OpenAsync();
64-
await using var command = masterConnection.CreateCommand();
65-
command.CommandText = $@"
69+
await NpgsqlDataSource.DisposeAsync();
70+
}
71+
72+
if (_postgre != null)
73+
{
74+
await using (var masterConnection = new NpgsqlConnection(_postgre.GetConnectionString()))
75+
{
76+
await masterConnection.OpenAsync();
77+
await using var command = masterConnection.CreateCommand();
78+
command.CommandText = $@"
6679
DROP DATABASE gedaqtests WITH (FORCE);
6780
";
68-
await command.ExecuteNonQueryAsync();
69-
}
81+
await command.ExecuteNonQueryAsync();
82+
}
7083

71-
await NpgsqlDataSource.DisposeAsync();
84+
await _postgre.DisposeAsync();
85+
}
7286
}
7387
}
7488
}

Src/PostgreSQLTests/PostgreSQLTests.csproj

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,11 @@
2020
</PackageReference>
2121
<PackageReference Include="System.Linq.Async" Version="6.0.1" />
2222
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
23+
<PackageReference Include="Testcontainers.PostgreSql" Version="3.10.0" />
2324
</ItemGroup>
2425
<ItemGroup>
2526
<ProjectReference Include="..\Gedaq\Gedaq.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="True" />
2627
</ItemGroup>
27-
<ItemGroup>
28-
<None Update="appsettings.json">
29-
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
30-
</None>
31-
</ItemGroup>
3228
<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
3329
<Exec Command="powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File &quot;$(ProjectDir)prebuild.ps1&quot; &quot;$(SolutionDir)Src\TestsGenerator\bin\$(ConfigurationName)\net8.0&quot; &quot;PostgreSQL&quot; &quot;$(SolutionDir)Src\PostgreSQLTests&quot;" />
3430
</Target>

Src/PostgreSQLTests/appsettings.json

Lines changed: 0 additions & 6 deletions
This file was deleted.

Src/TestsGenerator/TypeValueHelpers/NpgsqlCircleValueHelper.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
using System;
2-
using TestsGenerator.Enums;
1+
using TestsGenerator.Enums;
32

43
namespace TestsGenerator.TypeValueHelpers
54
{
65
internal class NpgsqlCircleValueHelper : ValueHelper
76
{
87
private readonly NpgsqlPointValueHelper _pointValueHelper = new(EnumerableType.SingleType);
8+
private readonly DoubleValueHelper _doubleValueHelper = new(EnumerableType.SingleType);
99

1010
public NpgsqlCircleValueHelper(EnumerableType enumerableType) : base(enumerableType)
1111
{
@@ -18,8 +18,8 @@ public override ValueHelper NewInstance()
1818

1919
public override string NewSingleValue()
2020
{
21-
var radius = Random.Shared.NextDouble();
22-
return $"new NpgsqlTypes.NpgsqlCircle(center: {_pointValueHelper.NewSingleValue()}, radius: {radius}d)";
21+
var radius = _doubleValueHelper.NewSingleValue();
22+
return $"new NpgsqlTypes.NpgsqlCircle(center: {_pointValueHelper.NewSingleValue()}, radius: {radius})";
2323
}
2424
}
2525
}
Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
using System;
2-
using TestsGenerator.Enums;
1+
using TestsGenerator.Enums;
32

43
namespace TestsGenerator.TypeValueHelpers
54
{
65
internal class NpgsqlLineValueHelper : ValueHelper
76
{
7+
private readonly DoubleValueHelper _doubleValueHelper = new(EnumerableType.SingleType);
8+
89
public NpgsqlLineValueHelper(EnumerableType enumerableType) : base(enumerableType)
910
{
1011
}
@@ -16,11 +17,11 @@ public override ValueHelper NewInstance()
1617

1718
public override string NewSingleValue()
1819
{
19-
var a = Random.Shared.NextDouble();
20-
var b = Random.Shared.NextDouble();
21-
var c = Random.Shared.NextDouble();
20+
var a = _doubleValueHelper.NewSingleValue();
21+
var b = _doubleValueHelper.NewSingleValue();
22+
var c = _doubleValueHelper.NewSingleValue();
2223

23-
return $"new NpgsqlTypes.NpgsqlLine(a: {a}d, b: {b}d, c: {c}d)";
24+
return $"new NpgsqlTypes.NpgsqlLine(a: {a}, b: {b}, c: {c})";
2425
}
2526
}
2627
}
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
using System;
2-
using TestsGenerator.Enums;
1+
using TestsGenerator.Enums;
32

43
namespace TestsGenerator.TypeValueHelpers
54
{
65
internal class NpgsqlPointValueHelper : ValueHelper
76
{
7+
private readonly DoubleValueHelper _doubleValueHelper = new(EnumerableType.SingleType);
8+
89
public NpgsqlPointValueHelper(EnumerableType enumerableType) : base(enumerableType)
910
{
1011
}
@@ -16,10 +17,10 @@ public override ValueHelper NewInstance()
1617

1718
public override string NewSingleValue()
1819
{
19-
var x = Random.Shared.NextDouble();
20-
var y = Random.Shared.NextDouble();
20+
var x = _doubleValueHelper.NewSingleValue();
21+
var y = _doubleValueHelper.NewSingleValue();
2122

22-
return $"new NpgsqlTypes.NpgsqlPoint(x: {x}d, y: {y}d)";
23+
return $"new NpgsqlTypes.NpgsqlPoint(x: {x}, y: {y})";
2324
}
2425
}
2526
}

0 commit comments

Comments
 (0)