From 2147efa4a1f1b033caee3362c637dec00609bee0 Mon Sep 17 00:00:00 2001 From: mathieui Date: Fri, 29 Jun 2018 21:25:22 +0200 Subject: [PATCH] Add tests for the new tabs module --- test/test_tabs.py | 171 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 test/test_tabs.py 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 +