def test_try_fix_geometry_polygon_self_intersect():
    # Create ring
    ring = ogr.Geometry(ogr.wkbLinearRing)
    ring.AddPoint_2D(1, 1)
    ring.AddPoint_2D(1, -1)
    ring.AddPoint_2D(-1, 1)
    ring.AddPoint_2D(-1, -1)
    ring.AddPoint_2D(1, 1)

    # Create polygon
    poly = ogr.Geometry(ogr.wkbPolygon)
    poly.AddGeometry(ring)

    out_geom, valid = try_fix_geometry(poly)
    assert valid is True
def test_try_fix_geometry_polygon_sliver_not_valid():
    # Create ring
    wkt = "POLYGON ((0 0 0, 1000 0 0, 1000 0.001 0))"
    poly = ogr.CreateGeometryFromWkt(wkt)
    out_geom, valid = try_fix_geometry(poly)
    assert valid is False
def test_try_fix_geometry_none():
    line = None
    geom, valid = try_fix_geometry(line)
    assert valid is False
def test_try_fix_geometry_unvalid_line():
    line = ogr.Geometry(ogr.wkbLineString)
    line.AddPoint(1116651.439379124, 637392.6969887456)
    geom, valid = try_fix_geometry(line)
    assert valid is False
def test_try_fix_geometry_valid():
    geom = ogr.Geometry(ogr.wkbLineString)
    geom.AddPoint(1116651.439379124, 637392.6969887456)
    geom.AddPoint(1188804.0108498496, 652655.7409537067)
    out_geom, valid = try_fix_geometry(geom)
    assert valid is True