summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2013-11-07 09:20:46 -0800
committerGuido van Rossum <guido@python.org>2013-11-07 09:20:46 -0800
commitaed036c1a70aa5ec8081e2888afe321d615b61a4 (patch)
tree048f1d84c99e80bbc2706be053a478f213ccf1b3 /tests
parent08dba3d62661ae36d45c943c171f003bd9004638 (diff)
downloadtrollius-aed036c1a70aa5ec8081e2888afe321d615b61a4.tar.gz
Improved tests for selectors.py by Arnaud Faure.
Diffstat (limited to 'tests')
-rw-r--r--tests/test_selectors.py67
1 files changed, 66 insertions, 1 deletions
diff --git a/tests/test_selectors.py b/tests/test_selectors.py
index db5b3ec..7801289 100644
--- a/tests/test_selectors.py
+++ b/tests/test_selectors.py
@@ -13,8 +13,54 @@ class FakeSelector(selectors.BaseSelector):
raise NotImplementedError
-class BaseSelectorTests(unittest.TestCase):
+class _SelectorMappingTests(unittest.TestCase):
+
+ def test_len(self):
+ s = FakeSelector()
+ map = selectors._SelectorMapping(s)
+ self.assertTrue(map.__len__() == 0)
+
+ f = unittest.mock.Mock()
+ f.fileno.return_value = 10
+ s.register(f, selectors.EVENT_READ, None)
+ self.assertTrue(len(map) == 1)
+
+ def test_getitem(self):
+ s = FakeSelector()
+ map = selectors._SelectorMapping(s)
+ f = unittest.mock.Mock()
+ f.fileno.return_value = 10
+ s.register(f, selectors.EVENT_READ, None)
+ attended = selectors.SelectorKey(f, 10, selectors.EVENT_READ, None)
+ self.assertEqual(attended, map.__getitem__(f))
+
+ def test_getitem_key_error(self):
+ s = FakeSelector()
+ map = selectors._SelectorMapping(s)
+ self.assertTrue(len(map) == 0)
+ f = unittest.mock.Mock()
+ f.fileno.return_value = 10
+ s.register(f, selectors.EVENT_READ, None)
+ self.assertRaises(KeyError, map.__getitem__, 5)
+
+ def test_iter(self):
+ s = FakeSelector()
+ map = selectors._SelectorMapping(s)
+ self.assertTrue(len(map) == 0)
+ f = unittest.mock.Mock()
+ f.fileno.return_value = 5
+ s.register(f, selectors.EVENT_READ, None)
+ counter = 0
+ for fileno in map.__iter__():
+ self.assertEqual(5, fileno)
+ counter += 1
+ for idx in map:
+ self.assertEqual(f, map[idx].fileobj)
+ self.assertEqual(1, counter)
+
+
+class BaseSelectorTests(unittest.TestCase):
def test_fileobj_to_fd(self):
self.assertEqual(10, selectors._fileobj_to_fd(10))
@@ -25,6 +71,9 @@ class BaseSelectorTests(unittest.TestCase):
f.fileno.side_effect = AttributeError
self.assertRaises(ValueError, selectors._fileobj_to_fd, f)
+ f.fileno.return_value = -1
+ self.assertRaises(ValueError, selectors._fileobj_to_fd, f)
+
def test_selector_key_repr(self):
key = selectors.SelectorKey(10, 10, selectors.EVENT_READ, None)
self.assertEqual(
@@ -103,6 +152,22 @@ class BaseSelectorTests(unittest.TestCase):
selectors.SelectorKey(fobj, 10, selectors.EVENT_READ, d2),
s.get_key(fobj))
+ def test_modify_data_use_a_shortcut(self):
+ fobj = unittest.mock.Mock()
+ fobj.fileno.return_value = 10
+
+ d1 = object()
+ d2 = object()
+
+ s = FakeSelector()
+ key = s.register(fobj, selectors.EVENT_READ, d1)
+
+ s.unregister = unittest.mock.Mock()
+ s.register = unittest.mock.Mock()
+ key2 = s.modify(fobj, selectors.EVENT_READ, d2)
+ self.assertFalse(s.unregister.called)
+ self.assertFalse(s.register.called)
+
def test_modify_same(self):
fobj = unittest.mock.Mock()
fobj.fileno.return_value = 10