# Licensed under a 3-clause BSD style license - see LICENSE.rst
"""
A set of tests for the util.py module
"""
import pytest

from astropy.io.votable import util


def test_range_list():
    assert util.coerce_range_list_param((5,)) == ("5.0", 1)


def test_range_list2():
    assert util.coerce_range_list_param((5e-7, 8e-7)) == ("5e-07,8e-07", 2)


def test_range_list3():
    assert util.coerce_range_list_param((5e-7, 8e-7, "FOO")) == (
        "5e-07,8e-07;FOO", 3)


def test_range_list4a():
    with pytest.raises(ValueError):
        util.coerce_range_list_param(
            (5e-7, (None, 8e-7), (4, None), (4, 5), "J", "FOO"))


def test_range_list4():
    assert (util.coerce_range_list_param(
        (5e-7, (None, 8e-7), (4, None), (4, 5), "J", "FOO"), numeric=False) ==
            ("5e-07,/8e-07,4/,4/5,J;FOO", 6))


def test_range_list5():
    with pytest.raises(ValueError):
        util.coerce_range_list_param(('FOO', ))


def test_range_list6():
    with pytest.raises(ValueError):
        print(util.coerce_range_list_param((5, 'FOO'), util.stc_reference_frames))


def test_range_list7():
    assert util.coerce_range_list_param(("J",), numeric=False) == ("J", 1)


def test_range_list8():
    for s in ["5.0",
              "5e-07,8e-07",
              "5e-07,8e-07;FOO",
              "5e-07,/8e-07,4.0/,4.0/5.0;FOO",
              "J"]:
        assert util.coerce_range_list_param(s, numeric=False)[0] == s


def test_range_list9a():
    with pytest.raises(ValueError):
        util.coerce_range_list_param("52,-27.8;FOO", util.stc_reference_frames)


def test_range_list9():
    assert util.coerce_range_list_param(
        "52,-27.8;GALACTIC", util.stc_reference_frames)
