from yarl import URL


# comparison and hashing


def test_ne_str():
    url = URL('http://example.com/')
    assert url != 'http://example.com/'


def test_eq():
    url = URL('http://example.com/')
    assert url == URL('http://example.com/')


def test_hash():
    assert hash(URL('http://example.com/')) == hash(URL('http://example.com/'))


def test_hash_double_call():
    url = URL('http://example.com/')
    assert hash(url) == hash(url)


def test_le_less():
    url1 = URL('http://example1.com/')
    url2 = URL('http://example2.com/')

    assert url1 <= url2


def test_le_eq():
    url1 = URL('http://example.com/')
    url2 = URL('http://example.com/')

    assert url1 <= url2


def test_le_not_implemented():
    url = URL('http://example1.com/')

    assert url.__le__(123) is NotImplemented


def test_lt():
    url1 = URL('http://example1.com/')
    url2 = URL('http://example2.com/')

    assert url1 < url2


def test_lt_not_implemented():
    url = URL('http://example1.com/')

    assert url.__lt__(123) is NotImplemented


def test_ge_more():
    url1 = URL('http://example1.com/')
    url2 = URL('http://example2.com/')

    assert url2 >= url1


def test_ge_eq():
    url1 = URL('http://example.com/')
    url2 = URL('http://example.com/')

    assert url2 >= url1


def test_ge_not_implemented():
    url = URL('http://example1.com/')

    assert url.__ge__(123) is NotImplemented


def test_gt():
    url1 = URL('http://example1.com/')
    url2 = URL('http://example2.com/')

    assert url2 > url1


def test_gt_not_implemented():
    url = URL('http://example1.com/')

    assert url.__gt__(123) is NotImplemented
