39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
# coding: utf-8
|
|
|
|
from datetime import datetime
|
|
from pandas.io.msgpack import packb, unpackb
|
|
|
|
import pytest
|
|
import pandas.util.testing as tm
|
|
|
|
|
|
class DummyException(Exception):
|
|
pass
|
|
|
|
|
|
class TestExceptions(object):
|
|
|
|
def test_raise_on_find_unsupported_value(self):
|
|
msg = "can\'t serialize datetime"
|
|
with tm.assert_raises_regex(TypeError, msg):
|
|
packb(datetime.now())
|
|
|
|
def test_raise_from_object_hook(self):
|
|
def hook(_):
|
|
raise DummyException()
|
|
|
|
pytest.raises(DummyException, unpackb, packb({}), object_hook=hook)
|
|
pytest.raises(DummyException, unpackb, packb({'fizz': 'buzz'}),
|
|
object_hook=hook)
|
|
pytest.raises(DummyException, unpackb, packb({'fizz': 'buzz'}),
|
|
object_pairs_hook=hook)
|
|
pytest.raises(DummyException, unpackb,
|
|
packb({'fizz': {'buzz': 'spam'}}), object_hook=hook)
|
|
pytest.raises(DummyException, unpackb,
|
|
packb({'fizz': {'buzz': 'spam'}}),
|
|
object_pairs_hook=hook)
|
|
|
|
def test_invalid_value(self):
|
|
msg = "Unpack failed: error"
|
|
with tm.assert_raises_regex(ValueError, msg):
|
|
unpackb(b"\xd9\x97#DL_")
|