Skip to content

Commit

Permalink
Extend PostGisTest.WriteCoordinates
Browse files Browse the repository at this point in the history
Update packages esp. NUnit to v4.1
Update test project to Net6
  • Loading branch information
FObermaier committed Mar 14, 2024
1 parent 3e31e3f commit dad6311
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 32 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/dotnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ jobs:
- name: Get source
uses: actions/checkout@v2

- name: Setup .NET Core 3.1
- name: Setup .NET Core 6.0
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.1.406
dotnet-version: 6.0.26

- name: Build
run: dotnet build -c Release -v minimal -p:WarningLevel=3
Expand Down
4 changes: 2 additions & 2 deletions test/NetTopologySuite.IO.PostGis.Test/AbstractIOFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -211,13 +211,13 @@ public void PerformTest(Geometry gIn)
Geometry gParsed = null;
Assert.DoesNotThrow(() => gParsed = Read(b), "Threw exception during read:\n{0}", writer.WriteFormatted(gIn));

Assert.IsNotNull(gParsed, "Could not be parsed\n{0}", gIn);
Assert.That(gParsed, Is.Not.Null, $"Could not be parsed\n{gIn}");
CheckEquality(gIn, gParsed, writer);
}

protected virtual void CheckEquality(Geometry gIn, Geometry gParsed, WKTWriter writer)
{
Assert.IsTrue(gIn.EqualsExact(gParsed), "Instances are not equal\n{0}\n\n{1}", gIn, gParsed);
Assert.That(gIn.EqualsExact(gParsed), Is.True, $"Instances are not equal\n{gIn}\n\n{gParsed}");
}

protected abstract Geometry Read(byte[] b);
Expand Down
4 changes: 2 additions & 2 deletions test/NetTopologySuite.IO.PostGis.Test/Issue174.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ public void ensure_NetTopologySuite_IO_GeoJSON_assembly_is_strongly_named()

private void AssertStronglyNamedAssembly(Type typeFromAssemblyToCheck)
{
Assert.IsNotNull(typeFromAssemblyToCheck, "Cannot determine assembly from null");
Assert.That(typeFromAssemblyToCheck, Is.Not.Null, "Cannot determine assembly from null");
var assembly = typeFromAssemblyToCheck.Assembly;
StringAssert.DoesNotContain("PublicKeyToken=null", assembly.FullName, "Strongly named assembly should have a PublicKeyToken in fully qualified name");
Assert.That(assembly.FullName.Contains("PublicKeyToken=null"), Is.False, "Strongly named assembly should have a PublicKeyToken in fully qualified name");
}
}
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Npgsql" Version="5.0.2" />
<PackageReference Include="System.Configuration.ConfigurationManager" Version="5.0.0" />
<PackageReference Include="Npgsql" Version="8.0.2" />
<PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="$(SolutionDir)src\NetTopologySuite.IO.PostGis\NetTopologySuite.IO.PostGis.csproj" />
</ItemGroup>

<ItemGroup>
<PackageReference Update="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Update="nunit" Version="3.13.0" />
<PackageReference Update="NUnit3TestAdapter" Version="3.17.0" />
<PackageReference Update="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageReference Update="nunit" Version="4.1.0" />
<PackageReference Update="NUnit3TestAdapter" Version="4.5.0" />
</ItemGroup>

</Project>
66 changes: 46 additions & 20 deletions test/NetTopologySuite.IO.PostGis.Test/PostGisTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -155,40 +155,40 @@ private static void General(GeometryFactory geomFactory, string wkt, int srid)
geom.SRID = srid;
regeom.SRID = srid;

Assert.IsTrue(geom.EqualsExact(regeom));
Assert.AreEqual(parsed, reparsed);
Assert.That(geom.EqualsExact(regeom), Is.True);
Assert.That(reparsed, Is.EqualTo(parsed));

var pgr = new PostGisReader(geomFactory);
byte[] bytesB = new PostGisWriter(ByteOrder.BigEndian).Write(regeom);
var regeom2 = pgr.Read(bytesB);
Assert.IsTrue(geom.EqualsExact(regeom2));
Assert.That(geom.EqualsExact(regeom2), Is.True);

byte[] bytesL = new PostGisWriter(ByteOrder.LittleEndian).Write(regeom);
var regeom3 = pgr.Read(bytesL);
Assert.IsTrue(geom.EqualsExact(regeom3));
Assert.IsTrue(regeom2.EqualsExact(regeom3));
Assert.That(geom.EqualsExact(regeom3), Is.True);
Assert.That(regeom2.EqualsExact(regeom3), Is.True);

Assert.AreEqual(bytesB.Length, bytesL.Length);
Assert.That(bytesB.Length, Is.EqualTo(bytesL.Length));
}

[Test]
public void Point3D()
{
// Warm up assertions:
var point2D = new Point(1, 2);
Assert.IsTrue(double.IsNaN(point2D.Z));
Assert.That(double.IsNaN(point2D.Z), Is.True);

var point3D = new Point(1, 2, 3);
Assert.IsFalse(double.IsNaN(point3D.Z));
Assert.That(double.IsNaN(point3D.Z), Is.False);

// The real thing:
var source = new Point(123, 456, 789);
var pgWriter = new PostGisWriter { HandleOrdinates = Ordinates.XYZ };
byte[] bytes = pgWriter.Write(source);
var target = (Point)new PostGisReader().Read(bytes);
Assert.AreEqual(source.X, target.X);
Assert.AreEqual(source.Y, target.Y);
Assert.AreEqual(source.Z, target.Z);
Assert.That(source.X, Is.EqualTo(target.X));
Assert.That(source.Y, Is.EqualTo(target.Y));
Assert.That(source.Z, Is.EqualTo(target.Z));
}

[Test]
Expand All @@ -207,9 +207,9 @@ public void LineString3D()
var target = (LineString)new PostGisReader().Read(bytes);
for (int i = 0; i < size; i++)
{
Assert.AreEqual(source.Coordinates[i].X, target.Coordinates[i].X);
Assert.AreEqual(source.Coordinates[i].Y, target.Coordinates[i].Y);
Assert.AreEqual(source.Coordinates[i].Z, target.Coordinates[i].Z);
Assert.That(source.Coordinates[i].X, Is.EqualTo(target.Coordinates[i].X));
Assert.That(source.Coordinates[i].Y, Is.EqualTo(target.Coordinates[i].Y));
Assert.That(source.Coordinates[i].Z, Is.EqualTo(target.Coordinates[i].Z));
}
}

Expand All @@ -223,7 +223,7 @@ public void GeometryCollection_empty()

var target = (GeometryCollection)new PostGisReader().Read(bytes);

Assert.AreEqual(source.Count, target.Count);
Assert.That(source.Count, Is.EqualTo(target.Count));
}

[Test]
Expand All @@ -246,14 +246,40 @@ public void OrdinatesContainXY(Ordinates ordinates)

[Test, Combinatorial]
public void WriteCoordinates(
[Values(Ordinates.XY, Ordinates.XYZ, Ordinates.None)] Ordinates writerCoords,
[Values(Ordinates.XY, Ordinates.XYZ, Ordinates.None)] Ordinates readerCoords,
[Values(Ordinates.XY, Ordinates.XYZ)] Ordinates pointCoords)
[Values(Ordinates.XY, Ordinates.XYZ, Ordinates.XYM, Ordinates.XYZM, Ordinates.None)] Ordinates writerCoords,
[Values(Ordinates.XY, Ordinates.XYZ, Ordinates.XYM, Ordinates.XYZM, Ordinates.None)] Ordinates readerCoords,
[Values(Ordinates.XY, Ordinates.XYZ, Ordinates.XYM, Ordinates.XYZM)] Ordinates pointCoords)
{
var gf = NtsGeometryServices.Instance.CreateGeometryFactory();

var writer = new PostGisWriter { HandleOrdinates = writerCoords };
var reader = new PostGisReader { HandleOrdinates = readerCoords };
var reader = new PostGisReader(gf) { HandleOrdinates = readerCoords };

CoordinateSequence sequence;
switch (pointCoords)
{
case Ordinates.XY:
sequence = gf.CoordinateSequenceFactory.Create(1, 2, 0);
break;
case Ordinates.XYZ:
sequence = gf.CoordinateSequenceFactory.Create(1, 3, 0);
break;
case Ordinates.XYM:
sequence = gf.CoordinateSequenceFactory.Create(1, 3, 1);
break;
case Ordinates.XYZM:
sequence = gf.CoordinateSequenceFactory.Create(1, 4, 1);
break;
default:
throw new ArgumentOutOfRangeException(nameof(pointCoords));
}
sequence.SetX(0, 1);
sequence.SetY(0, 2);
if (sequence.HasZ) sequence.SetZ(0, 3);
if (sequence.HasM) sequence.SetZ(0, 4);

byte[] bytes = writer.Write(pointCoords == Ordinates.XYZ ? new Point(1, 1, 1) : new Point(1, 1));
var point = gf.CreatePoint(sequence);
byte[] bytes = writer.Write(point);
var output = (Point)reader.Read(bytes);

var expectedOutputCoords = pointCoords;
Expand Down

0 comments on commit dad6311

Please sign in to comment.