public void TestMultiPolygonEqualsHashCode() { var multiPolygon1 = new MultiPolygon( new[] { new PolygonCoordinates( new[] { new LinearRing( new[] { new Position(20, 20), new Position(20, 21), new Position(21, 21), new Position(21, 20), new Position(22, 20) }) }) }, new GeometryParams { AdditionalProperties = new Dictionary <string, object> { { "a", "b" } }, BoundingBox = new BoundingBox(new Position(0, 0), new Position(40, 40)), Crs = Crs.Named("SomeCrs") }); var multiPolygon2 = new MultiPolygon( new[] { new PolygonCoordinates( new[] { new LinearRing( new[] { new Position(20, 20), new Position(20, 21), new Position(21, 21), new Position(21, 20), new Position(22, 20) }) }) }, new GeometryParams { AdditionalProperties = new Dictionary <string, object> { { "a", "b" } }, BoundingBox = new BoundingBox(new Position(0, 0), new Position(40, 40)), Crs = Crs.Named("SomeCrs") }); var polygon3 = new MultiPolygon( new[] { new PolygonCoordinates( new[] { new LinearRing( new[] { new Position(20, 21), new Position(20, 21), new Position(21, 21), new Position(21, 20), new Position(22, 20) }) }) }, new GeometryParams { AdditionalProperties = new Dictionary <string, object> { { "a", "b" } }, BoundingBox = new BoundingBox(new Position(0, 0), new Position(40, 40)), Crs = Crs.Named("SomeCrs") }); var polygon4 = new MultiPolygon( new[] { new PolygonCoordinates( new[] { new LinearRing( new[] { new Position(20, 20), new Position(20, 21), new Position(21, 21), new Position(21, 20), new Position(22, 20) }) }) }, new GeometryParams { AdditionalProperties = new Dictionary <string, object> { { "b", "c" } }, BoundingBox = new BoundingBox(new Position(0, 0), new Position(40, 40)), Crs = Crs.Named("SomeCrs") }); var polygon5 = new MultiPolygon( new[] { new PolygonCoordinates( new[] { new LinearRing( new[] { new Position(20, 20), new Position(20, 21), new Position(21, 21), new Position(21, 20), new Position(22, 20) }) }) }, new GeometryParams { AdditionalProperties = new Dictionary <string, object> { { "a", "b" } }, BoundingBox = new BoundingBox(new Position(0, 0), new Position(40, 41)), Crs = Crs.Named("SomeCrs") }); var polygon6 = new MultiPolygon( new[] { new PolygonCoordinates( new[] { new LinearRing( new[] { new Position(20, 20), new Position(20, 21), new Position(21, 21), new Position(21, 20), new Position(22, 20) }) }) }, new GeometryParams { AdditionalProperties = new Dictionary <string, object> { { "a", "b" } }, BoundingBox = new BoundingBox(new Position(0, 0), new Position(40, 40)), Crs = Crs.Named("SomeCrs1") }); Assert.AreEqual(multiPolygon1, multiPolygon2); Assert.AreEqual(multiPolygon1.GetHashCode(), multiPolygon2.GetHashCode()); Assert.AreNotEqual(multiPolygon1, polygon3); Assert.AreNotEqual(multiPolygon1.GetHashCode(), polygon3.GetHashCode()); Assert.AreNotEqual(multiPolygon1, polygon4); Assert.AreNotEqual(multiPolygon1.GetHashCode(), polygon4.GetHashCode()); Assert.AreNotEqual(multiPolygon1, polygon5); Assert.AreNotEqual(multiPolygon1.GetHashCode(), polygon5.GetHashCode()); Assert.AreNotEqual(multiPolygon1, polygon6); Assert.AreNotEqual(multiPolygon1.GetHashCode(), polygon6.GetHashCode()); }