66 lines
3.6 KiB
Python
66 lines
3.6 KiB
Python
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
# ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
|
|
# ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
|
|
# ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
|
|
# ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
|
|
# ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
|
|
# ┃ Copyright (c) 2017, the Perspective Authors. ┃
|
|
# ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
|
|
# ┃ This file is part of the Perspective library, distributed under the terms ┃
|
|
# ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
|
|
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
|
|
from pytest import raises
|
|
from perspective import PerspectiveError
|
|
|
|
import perspective as psp
|
|
|
|
client = psp.Server().new_local_client()
|
|
Table = client.table
|
|
|
|
|
|
class TestException(object):
|
|
def test_instantiation_exception_table(self):
|
|
from perspective import Table
|
|
with raises(TypeError) as ex:
|
|
Table()
|
|
assert "Do not call Table's constructor directly" in str(ex.value)
|
|
|
|
def test_instantiation_exception_view(self):
|
|
from perspective import View
|
|
with raises(TypeError) as ex:
|
|
View()
|
|
assert "Do not call View's constructor directly" in str(ex.value)
|
|
|
|
def test_exception_from_core(self):
|
|
tbl = Table({"a": [1, 2, 3]})
|
|
|
|
with raises(PerspectiveError) as ex:
|
|
# creating view with unknown column should throw
|
|
tbl.view(group_by=["b"])
|
|
|
|
assert str(ex.value) == "Abort(): Invalid column 'b' found in View group_by.\n"
|
|
|
|
def test_exception_from_core_catch_generic(self):
|
|
tbl = Table({"a": [1, 2, 3]})
|
|
# `PerspectiveCppError` should inherit from `Exception`
|
|
with raises(Exception) as ex:
|
|
tbl.view(group_by=["b"])
|
|
|
|
assert str(ex.value) == "Abort(): Invalid column 'b' found in View group_by.\n"
|
|
|
|
def test_exception_from_core_correct_types(self):
|
|
tbl = Table({"a": [1, 2, 3]})
|
|
|
|
# `PerspectiveError` should be raised from the Python layer
|
|
with raises(PerspectiveError) as ex:
|
|
tbl.view()
|
|
tbl.delete()
|
|
|
|
assert str(ex.value) == "Abort(): Cannot delete table with views"
|
|
|
|
with raises(PerspectiveError) as ex:
|
|
tbl.view(group_by=["b"])
|
|
|
|
assert str(ex.value) == "Abort(): Invalid column 'b' found in View group_by.\n"
|