# Path: lib/cartopy/tests/crs/helpers.py
# def check_proj_params(name, crs, other_args):
#     expected = other_args | {f'proj={name}', 'no_defs'}
#     proj_params = set(crs.proj4_init.lstrip('+').split(' +'))
#     assert expected == proj_params


import numpy as np
import pytest
import cartopy.crs as ccrs
from numpy.testing import assert_almost_equal
from .helpers import check_proj_params
"""
Tests for the UTM coordinate system.

"""




@pytest.mark.parametrize('south', [False, True])
def test_default(south):
    zone = 1  # Limits are fixed, so don't bother checking other zones.
    utm = ccrs.UTM(zone, southern_hemisphere=south)
    other_args = {'ellps=WGS84', 'units=m', f'zone={zone}'}
    if south:
        other_args |= {'south'}
    check_proj_params('utm', utm, other_args)

    assert_almost_equal(np.array(utm.x_limits),
                        [-250000, 1250000])
    assert_almost_equal(np.array(utm.y_limits),
                        [-10000000,  25000000])


def test_ellipsoid_transform():
    # USGS Professional Paper 1395, pp 269 - 271
    globe = ccrs.Globe(ellipse='clrk66')
    utm = ccrs.UTM(zone=18, globe=globe)
    geodetic = utm.as_geodetic()

    other_args = {'ellps=clrk66', 'units=m', 'zone=18'}

# Path: lib/cartopy/tests/crs/helpers.py
# def check_proj_params(name, crs, other_args):
#     expected = other_args | {f'proj={name}', 'no_defs'}
#     proj_params = set(crs.proj4_init.lstrip('+').split(' +'))
#     assert expected == proj_params


# Path: lib/cartopy/tests/crs/test_utm.py
import numpy as np
import pytest
import cartopy.crs as ccrs
from numpy.testing import assert_almost_equal
from .helpers import check_proj_params

"""
Tests for the UTM coordinate system.

"""




@pytest.mark.parametrize('south', [False, True])
def test_default(south):
    zone = 1  # Limits are fixed, so don't bother checking other zones.
    utm = ccrs.UTM(zone, southern_hemisphere=south)
    other_args = {'ellps=WGS84', 'units=m', f'zone={zone}'}
    if south:
        other_args |= {'south'}
    check_proj_params('utm', utm, other_args)

    assert_almost_equal(np.array(utm.x_limits),
                        [-250000, 1250000])
    assert_almost_equal(np.array(utm.y_limits),
                        [-10000000,  25000000])


def test_ellipsoid_transform():
    # USGS Professional Paper 1395, pp 269 - 271
    globe = ccrs.Globe(ellipse='clrk66')
    utm = ccrs.UTM(zone=18, globe=globe)
    geodetic = utm.as_geodetic()

    other_args = {'ellps=clrk66', 'units=m', 'zone=18'}

    check_proj_params('utm', utm, other_args)