public void TestSTIsValid() { using (var db = new PostGisTestDataConnection(TestDatabaseConnectionString)) { const string Wkt1 = "LINESTRING(0 0, 1 1)"; db.TestGeometries .Value(g => g.Id, 1) .Value(g => g.Geometry, () => GeometryInput.STGeomFromText(Wkt1)) .Insert(); const string Wkt2 = "POLYGON((0 0, 1 1, 1 2, 1 1, 0 0))"; db.TestGeometries.Value(g => g.Id, 2) .Value(g => g.Geometry, () => GeometryInput.STGeomFromText(Wkt2)) .Insert(); db.TestGeometries.Value(g => g.Id, 3) .Value(g => g.Geometry, () => null) .Insert(); Assert.IsTrue(db.TestGeometries.Where(g => g.Id == 1).Select(g => g.Geometry.STIsValid()).Single()); Assert.IsFalse(db.TestGeometries.Where(g => g.Id == 2).Select(g => g.Geometry.STIsValid()).Single()); Assert.IsNull(db.TestGeometries.Where(g => g.Id == 3).Select(g => g.Geometry.STIsValid()).Single()); Assert.IsTrue(db.Select(() => GeometryValidation.STIsValid(Wkt1))); Assert.IsFalse(db.Select(() => GeometryValidation.STIsValid(Wkt2))); Assert.IsNull(db.Select(() => GeometryValidation.STIsValid((string)null))); Assert.IsTrue(db.Select(() => GeometryValidation.STIsValid(Wkt1, 1))); Assert.IsFalse(db.Select(() => GeometryValidation.STIsValid(Wkt2, 1))); Assert.IsNull(db.Select(() => GeometryValidation.STIsValid((string)null, 1))); } }
public void TestSTIsValidDetail() { using (var db = new PostGisTestDataConnection(TestDatabaseConnectionString)) { db.Connection.RegisterPostGisCompositeTypes(); // or PostGisCompositeTypeMapper.RegisterPostGisCompositeTypesGlobally(); const string Wkt1 = "LINESTRING(0 0, 1 1)"; db.TestGeometries .Value(g => g.Id, 1) .Value(g => g.Geometry, () => GeometryInput.STGeomFromText(Wkt1)) .Insert(); const string Wkt2 = "POLYGON((0 0, 1 1, 1 2, 1 1, 0 0))"; db.TestGeometries .Value(g => g.Id, 2) .Value(g => g.Geometry, () => GeometryInput.STGeomFromText(Wkt2)) .Insert(); db.TestGeometries.Value(g => g.Id, 3).Value(g => g.Geometry, () => null).Insert(); var d1 = db.TestGeometries .Where(g => g.Id == 1) .Select(g => g.Geometry.STIsValidDetail()) .Single(); Assert.IsTrue(d1.IsValid); Assert.IsNull(d1.Reason); Assert.IsNull(d1.Location); var d2 = db.TestGeometries .Where(g => g.Id == 2) .Select(g => g.Geometry.STIsValidDetail()) .Single(); Assert.IsFalse(d2.IsValid); Assert.AreEqual("Self-intersection", d2.Reason); Assert.AreEqual("Point", d2.Location.GeometryType); Assert.IsNull( db.TestGeometries .Where(g => g.Id == 3) .Select(g => g.Geometry.STIsValidDetail()) .Single()); var d1s = db.Select(() => GeometryValidation.STIsValidDetail(Wkt1)); Assert.IsTrue(d1s.IsValid); Assert.IsNull(d1s.Reason); Assert.IsNull(d1s.Location); var d2s = db.Select(() => GeometryValidation.STIsValidDetail(Wkt2)); Assert.IsFalse(d2s.IsValid); Assert.AreEqual("Self-intersection", d2s.Reason); Assert.AreEqual("Point", d2s.Location.GeometryType); } }