40 lines
1.2 KiB
Python
40 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_")
|