1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
import greentest
from gevent import core
class Test(greentest.TestCase):
__timeout__ = None
def test_types(self):
loop = core.loop()
lst = []
io = loop.timer(0.01)
# test that cannot pass non-callable thing to start()
self.assertRaises(TypeError, io.start, None)
self.assertRaises(TypeError, io.start, 5)
# test that cannot set 'callback' to non-callable thing later either
io.start(lambda *args: lst.append(args))
self.assertEqual(io.args, ())
try:
io.callback = False
raise AssertionError('"io.callback = False" must raise TypeError')
except TypeError:
pass
try:
io.callback = 5
raise AssertionError('"io.callback = 5" must raise TypeError')
except TypeError:
pass
# test that args can be changed later
io.args = (1, 2, 3)
# test that only tuple and None are accepted by 'args' attribute
try:
io.args = 5
raise AssertionError('"io.args = 5" must raise TypeError')
except TypeError:
pass
self.assertEqual(io.args, (1, 2, 3))
try:
io.args = [4, 5]
raise AssertionError('"io.args = [4, 5]" must raise TypeError')
except TypeError:
pass
self.assertEqual(io.args, (1, 2, 3))
# None also works, means empty tuple
io.args = None
start = core.time()
loop.run()
took = core.time() - start
self.assertEqual(lst, [()])
assert took < 1, took
io.start(reset, io, lst)
del io
loop.run()
self.assertEqual(lst, [(), 25])
def reset(watcher, lst):
watcher.args = None
watcher.callback = lambda: None
lst.append(25)
if __name__ == '__main__':
greentest.main()
|