[tor-commits] [nyx/master] Group menu tests by class

atagar at torproject.org atagar at torproject.org
Sat Aug 27 18:23:50 UTC 2016


commit eae46c6ce9c30155777f59be51a2a53c02673ea5
Author: Damian Johnson <atagar at 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)





More information about the tor-commits mailing list