summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/test_tabs.py171
1 files changed, 171 insertions, 0 deletions
diff --git a/test/test_tabs.py b/test/test_tabs.py
new file mode 100644
index 00000000..6db4c2cc
--- /dev/null
+++ b/test/test_tabs.py
@@ -0,0 +1,171 @@
+"""
+Tests for the Tabs list module
+"""
+
+from poezio.core.tabs import Tabs
+from poezio.tabs import GapTab
+
+class DummyTab:
+ count = 0
+
+ def __init__(self):
+ self.name = 'dummy%s' % self.count
+ DummyTab.count += 1
+
+ @staticmethod
+ def reset():
+ DummyTab.count = 0
+
+def test_append():
+ DummyTab.reset()
+ tabs = Tabs()
+ dummy = DummyTab()
+ tabs.append(dummy)
+ assert tabs[0] is dummy
+ assert tabs[0].nb == 0
+ assert tabs['dummy0'] is dummy
+ assert tabs.by_class(DummyTab) == [dummy]
+
+ dummy2 = DummyTab()
+ tabs.append(dummy2)
+ assert tabs[1] is dummy2
+ assert tabs[1].nb == 1
+ assert tabs['dummy1'] is dummy2
+ assert tabs.by_class(DummyTab) == [dummy, dummy2]
+
+def test_delete():
+ DummyTab.reset()
+ tabs = Tabs()
+ dummy = DummyTab()
+ dummy2 = DummyTab()
+ tabs.append(dummy)
+ tabs.append(dummy2)
+
+ tabs.delete(dummy)
+ assert tabs[0] is dummy2
+ assert tabs.by_class(DummyTab) == [dummy2]
+ assert tabs['dummy0'] is None
+ assert dummy2.nb == 0
+
+
+def test_delete_restore_previous():
+ DummyTab.reset()
+ tabs = Tabs()
+ dummy = DummyTab()
+ dummy2 = DummyTab()
+ dummy3 = DummyTab()
+ dummy4 = DummyTab()
+ tabs.append(dummy)
+ tabs.append(dummy2)
+ tabs.append(dummy3)
+ tabs.append(dummy4)
+
+ tabs.set_current_tab(dummy4)
+ tabs.set_current_tab(dummy2)
+ tabs.delete(dummy2)
+ assert tabs.current_tab is dummy4
+ assert tabs.current_index == 2
+ assert dummy.nb == 0
+ assert dummy3.nb == 1
+ assert dummy4.nb == 2
+
+def test_delete_other_tab():
+ DummyTab.reset()
+ tabs = Tabs()
+ dummy = DummyTab()
+ dummy2 = DummyTab()
+ dummy3 = DummyTab()
+ dummy4 = DummyTab()
+ tabs.append(dummy)
+ tabs.append(dummy2)
+ tabs.append(dummy3)
+ tabs.append(dummy4)
+
+ tabs.set_current_tab(dummy4)
+ tabs.delete(dummy2)
+ assert tabs.current_tab is dummy4
+ assert tabs.current_index == 2
+ assert dummy.nb == 0
+ assert dummy3.nb == 1
+ assert dummy4.nb == 2
+
+def test_insert_and_gaps():
+ DummyTab.reset()
+ tabs = Tabs()
+ dummy = DummyTab()
+ dummy2 = DummyTab()
+ dummy3 = DummyTab()
+ tabs.append(dummy)
+ tabs.append(dummy2)
+ tabs.append(dummy3)
+
+ tabs.insert_tab(2, 1)
+ assert tabs[1] is dummy3
+ assert tabs[2] is dummy2
+
+ tabs.insert_tab(1, 100, gaps=True)
+ assert isinstance(tabs[1], GapTab)
+ assert tabs[3] is dummy3
+ assert tabs[3].nb == 3
+
+ tabs.update_gaps(enable_gaps=False)
+ assert tabs[1] is dummy2
+ assert tabs[1].nb == 1
+
+def test_replace_tabs():
+ DummyTab.reset()
+ tabs = Tabs()
+ dummy = DummyTab()
+ dummy2 = DummyTab()
+ dummy3 = DummyTab()
+ tabs.append(dummy)
+ tabs.append(dummy2)
+ tabs.append(dummy3)
+
+ tabs.replace_tabs([dummy3, dummy2, dummy])
+ assert tabs[0] is dummy3
+ assert tabs[2] is dummy
+ assert tabs[2].nb == 2
+
+def test_prev_next():
+ DummyTab.reset()
+ tabs = Tabs()
+ dummy = DummyTab()
+ dummy2 = DummyTab()
+ dummy3 = DummyTab()
+ tabs.append(dummy)
+ tabs.append(dummy2)
+ tabs.append(dummy3)
+
+ for idx in range(6):
+ assert tabs.current_index == idx % 3
+ tabs.next()
+
+ for idx in range(6):
+ assert (3 - idx) % 3 == tabs.current_index
+ tabs.prev()
+
+ tabs.insert_tab(1, 999, gaps=True)
+
+ assert tabs.current_index == 0
+ tabs.next()
+ assert tabs.current_index == 2
+ tabs.prev()
+ assert tabs.current_index == 0
+
+def test_set_current():
+ DummyTab.reset()
+ tabs = Tabs()
+ dummy = DummyTab()
+ dummy2 = DummyTab()
+ dummy3 = DummyTab()
+ tabs.append(dummy)
+ tabs.append(dummy2)
+ tabs.append(dummy3)
+
+ assert tabs.current_tab is dummy
+ tabs.set_current_index(2)
+ assert tabs.current_tab is dummy3
+ tabs.set_current_tab(dummy2)
+ assert tabs.current_tab is dummy2
+