chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
# ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
|
||||
# ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
|
||||
# ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
|
||||
# ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
|
||||
# ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
|
||||
# ┃ 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). ┃
|
||||
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
||||
|
||||
import perspective as psp
|
||||
|
||||
client = psp.Server().new_local_client()
|
||||
Table = client.table
|
||||
|
||||
|
||||
class TestDelete(object):
|
||||
# delete
|
||||
|
||||
def test_table_delete(self):
|
||||
data = [{"a": 1, "b": 2}, {"a": 3, "b": 4}]
|
||||
tbl = Table(data)
|
||||
tbl.delete()
|
||||
# don't segfault
|
||||
|
||||
def test_table_delete_callback(self, sentinel):
|
||||
s = sentinel(False)
|
||||
|
||||
def callback():
|
||||
s.set(True)
|
||||
|
||||
data = [{"a": 1, "b": 2}, {"a": 3, "b": 4}]
|
||||
tbl = Table(data)
|
||||
tbl.on_delete(callback)
|
||||
tbl.delete()
|
||||
assert s.get() is True
|
||||
|
||||
def test_table_delete_with_view(self, sentinel):
|
||||
s = sentinel(False)
|
||||
|
||||
def callback():
|
||||
s.set(True)
|
||||
|
||||
data = [{"a": 1, "b": 2}, {"a": 3, "b": 4}]
|
||||
tbl = Table(data)
|
||||
tbl.on_delete(callback)
|
||||
view = tbl.view()
|
||||
view.delete()
|
||||
tbl.delete()
|
||||
assert s.get() is True
|
||||
|
||||
def test_table_delete_multiple_callback(self, sentinel):
|
||||
s1 = sentinel(False)
|
||||
s2 = sentinel(False)
|
||||
|
||||
def callback1():
|
||||
s1.set(True)
|
||||
|
||||
def callback2():
|
||||
s2.set(True)
|
||||
|
||||
tbl = Table([{"a": 1}])
|
||||
tbl.on_delete(callback1)
|
||||
tbl.on_delete(callback2)
|
||||
|
||||
tbl.delete()
|
||||
|
||||
assert s1.get() is True
|
||||
assert s2.get() is True
|
||||
|
||||
def test_table_remove_delete_callback(self, sentinel):
|
||||
s = sentinel(False)
|
||||
|
||||
def callback():
|
||||
s.set(True)
|
||||
|
||||
tbl = Table([{"a": 1}])
|
||||
callback_id = tbl.on_delete(callback)
|
||||
tbl.remove_delete(callback_id)
|
||||
|
||||
tbl.delete()
|
||||
|
||||
assert s.get() is False
|
||||
|
||||
def test_view_delete_multiple_callback(self, sentinel):
|
||||
s1 = sentinel(False)
|
||||
s2 = sentinel(False)
|
||||
|
||||
def callback1():
|
||||
s1.set(True)
|
||||
|
||||
def callback2():
|
||||
s2.set(True)
|
||||
|
||||
tbl = Table([{"a": 1}])
|
||||
view = tbl.view()
|
||||
|
||||
view.on_delete(callback1)
|
||||
view.on_delete(callback2)
|
||||
|
||||
view.delete()
|
||||
tbl.delete()
|
||||
|
||||
assert s1.get() is True
|
||||
assert s2.get() is True
|
||||
|
||||
def test_view_remove_delete_callback(self, sentinel):
|
||||
s = sentinel(False)
|
||||
|
||||
def callback():
|
||||
s.set(True)
|
||||
|
||||
tbl = Table([{"a": 1}])
|
||||
view = tbl.view()
|
||||
|
||||
callback_id = view.on_delete(callback)
|
||||
view.remove_delete(callback_id)
|
||||
|
||||
view.delete()
|
||||
tbl.delete()
|
||||
|
||||
assert s.get() is False
|
||||
Reference in New Issue
Block a user