import pickle

from yarl import URL


# serialize


def test_pickle():
    u1 = URL('test')
    hash(u1)
    v = pickle.dumps(u1)
    u2 = pickle.loads(v)
    assert u1._cache
    assert not u2._cache
    assert hash(u1) == hash(u2)


def test_default_style_state():
    u = URL('test')
    hash(u)
    u.__setstate__((None, {
        '_val': 'test',
        '_strict': False,
        '_cache': {'hash': 1},
    }))
    assert not u._cache
    assert u._val == 'test'
    assert u._strict is False
