[nyx/master] Group menu tests by class

commit eae46c6ce9c30155777f59be51a2a53c02673ea5 Author: Damian Johnson <atagar@torproject.org> Date: Tue Aug 23 13:06:38 2016 -0700 Group menu tests by class On reflection there's no reason we can only have one TestFoo class in a module. Good way of grouping tests by individual classes - I should really improve this all throughout nyx's and stem's tests... Also adding coverage for select(). --- test/menu.py | 86 +++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 65 insertions(+), 21 deletions(-) diff --git a/test/menu.py b/test/menu.py index 4b03a40..683b220 100644 --- a/test/menu.py +++ b/test/menu.py @@ -6,11 +6,27 @@ import unittest from nyx.menu import MenuItem, Submenu, RadioMenuItem, RadioGroup + +class Container(object): + value = False + + def __nonzero__(self): + return self.value + + +def action(*args): + IS_CALLED.value = True + + NO_OP = lambda: None +IS_CALLED = Container() + +class TestMenuItem(unittest.TestCase): + def setUp(self): + IS_CALLED.value = False -class TestMenu(unittest.TestCase): - def test_menu_item_parameters(self): + def test_parameters(self): menu_item = MenuItem('Test Item', NO_OP) self.assertEqual('', menu_item.prefix) @@ -22,7 +38,37 @@ class TestMenu(unittest.TestCase): self.assertEqual(None, menu_item.parent) self.assertEqual(menu_item, menu_item.submenu) - def test_submenu_parameters(self): + def test_selection(self): + menu_item = MenuItem('Test Item', action) + + self.assertFalse(IS_CALLED) + menu_item.select() + self.assertTrue(IS_CALLED) + + def test_menu_item_hierarchy(self): + root_submenu = Submenu('Root Submenu') + middle_submenu = Submenu('Middle Submenu') + + root_submenu.add(MenuItem('Middle Item 1', NO_OP)) + root_submenu.add(MenuItem('Middle Item 2', NO_OP)) + root_submenu.add(middle_submenu) + + bottom_item = MenuItem('Bottom Item', NO_OP) + middle_submenu.add(bottom_item) + + self.assertEqual(middle_submenu, bottom_item.parent) + self.assertEqual(middle_submenu, bottom_item.submenu) + self.assertEqual(bottom_item, bottom_item.next) + self.assertEqual(bottom_item, bottom_item.prev) + + self.assertEqual(root_submenu, middle_submenu.parent) + self.assertEqual(middle_submenu, middle_submenu.submenu) + self.assertEqual('Middle Item 1', middle_submenu.next.label) + self.assertEqual('Middle Item 2', middle_submenu.prev.label) + + +class TestSubmenu(unittest.TestCase): + def test_parameters(self): menu_item = Submenu('Test Item') self.assertEqual('', menu_item.prefix) @@ -34,7 +80,12 @@ class TestMenu(unittest.TestCase): self.assertEqual(None, menu_item.parent) self.assertEqual(menu_item, menu_item.submenu) - def test_radio_menu_item_parameters(self): + +class TestRadioMenuItem(unittest.TestCase): + def setUp(self): + IS_CALLED.value = False + + def test_parameters(self): group = RadioGroup(NO_OP, 'selected_item') menu_item = RadioMenuItem('Test Item', group, 'selected_item') @@ -47,23 +98,16 @@ class TestMenu(unittest.TestCase): self.assertEqual(None, menu_item.parent) self.assertEqual(menu_item, menu_item.submenu) - def test_menu_item_hierarchy(self): - root_submenu = Submenu('Root Submenu') - middle_submenu = Submenu('Middle Submenu') - - root_submenu.add(MenuItem('Middle Item 1', NO_OP)) - root_submenu.add(MenuItem('Middle Item 2', NO_OP)) - root_submenu.add(middle_submenu) + def test_selection(self): + group = RadioGroup(action, 'other_item') + menu_item = RadioMenuItem('Test Item', group, 'selected_item') - bottom_item = MenuItem('Bottom Item', NO_OP) - middle_submenu.add(bottom_item) + menu_item.select() + self.assertTrue(IS_CALLED) - self.assertEqual(middle_submenu, bottom_item.parent) - self.assertEqual(middle_submenu, bottom_item.submenu) - self.assertEqual(bottom_item, bottom_item.next) - self.assertEqual(bottom_item, bottom_item.prev) + def test_when_already_selected(self): + group = RadioGroup(action, 'selected_item') + menu_item = RadioMenuItem('Test Item', group, 'selected_item') - self.assertEqual(root_submenu, middle_submenu.parent) - self.assertEqual(middle_submenu, middle_submenu.submenu) - self.assertEqual('Middle Item 1', middle_submenu.next.label) - self.assertEqual('Middle Item 2', middle_submenu.prev.label) + menu_item.select() + self.assertFalse(IS_CALLED)
participants (1)
-
atagar@torproject.org