Show More
@@ -1,80 +1,78 b'' | |||
|
1 | 1 | # -*- coding: utf-8 -*- |
|
2 | 2 | """Tests for CommandChainDispatcher.""" |
|
3 | 3 | |
|
4 | 4 | |
|
5 | 5 | #----------------------------------------------------------------------------- |
|
6 | 6 | # Imports |
|
7 | 7 | #----------------------------------------------------------------------------- |
|
8 | 8 | |
|
9 | import nose.tools as nt | |
|
10 | 9 | from IPython.core.error import TryNext |
|
11 | 10 | from IPython.core.hooks import CommandChainDispatcher |
|
12 | 11 | |
|
13 | 12 | #----------------------------------------------------------------------------- |
|
14 | 13 | # Local utilities |
|
15 | 14 | #----------------------------------------------------------------------------- |
|
16 | 15 | |
|
17 | 16 | # Define two classes, one which succeeds and one which raises TryNext. Each |
|
18 | 17 | # sets the attribute `called` to True when it is called. |
|
19 | 18 | class Okay(object): |
|
20 | 19 | def __init__(self, message): |
|
21 | 20 | self.message = message |
|
22 | 21 | self.called = False |
|
23 | 22 | def __call__(self): |
|
24 | 23 | self.called = True |
|
25 | 24 | return self.message |
|
26 | 25 | |
|
27 | 26 | class Fail(object): |
|
28 | 27 | def __init__(self, message): |
|
29 | 28 | self.message = message |
|
30 | 29 | self.called = False |
|
31 | 30 | def __call__(self): |
|
32 | 31 | self.called = True |
|
33 | 32 | raise TryNext(self.message) |
|
34 | 33 | |
|
35 | 34 | #----------------------------------------------------------------------------- |
|
36 | 35 | # Test functions |
|
37 | 36 | #----------------------------------------------------------------------------- |
|
38 | 37 | |
|
39 | 38 | def test_command_chain_dispatcher_ff(): |
|
40 | 39 | """Test two failing hooks""" |
|
41 |
fail1 = Fail( |
|
|
42 |
fail2 = Fail( |
|
|
43 | dp = CommandChainDispatcher([(0, fail1), | |
|
44 | (10, fail2)]) | |
|
40 | fail1 = Fail("fail1") | |
|
41 | fail2 = Fail("fail2") | |
|
42 | dp = CommandChainDispatcher([(0, fail1), (10, fail2)]) | |
|
45 | 43 | |
|
46 | 44 | try: |
|
47 | 45 | dp() |
|
48 | 46 | except TryNext as e: |
|
49 |
|
|
|
47 | assert str(e) == "fail2" | |
|
50 | 48 | else: |
|
51 | 49 | assert False, "Expected exception was not raised." |
|
52 | 50 | |
|
53 |
|
|
|
54 |
|
|
|
51 | assert fail1.called is True | |
|
52 | assert fail2.called is True | |
|
55 | 53 | |
|
56 | 54 | def test_command_chain_dispatcher_fofo(): |
|
57 | 55 | """Test a mixture of failing and succeeding hooks.""" |
|
58 |
fail1 = Fail( |
|
|
59 |
fail2 = Fail( |
|
|
60 |
okay1 = Okay( |
|
|
61 |
okay2 = Okay( |
|
|
56 | fail1 = Fail("fail1") | |
|
57 | fail2 = Fail("fail2") | |
|
58 | okay1 = Okay("okay1") | |
|
59 | okay2 = Okay("okay2") | |
|
62 | 60 | |
|
63 | 61 | dp = CommandChainDispatcher([(0, fail1), |
|
64 | 62 | # (5, okay1), # add this later |
|
65 | 63 | (10, fail2), |
|
66 | 64 | (15, okay2)]) |
|
67 | 65 | dp.add(okay1, 5) |
|
68 | 66 | |
|
69 |
|
|
|
67 | assert dp() == "okay1" | |
|
70 | 68 | |
|
71 |
|
|
|
72 |
|
|
|
73 |
|
|
|
74 |
|
|
|
69 | assert fail1.called is True | |
|
70 | assert okay1.called is True | |
|
71 | assert fail2.called is False | |
|
72 | assert okay2.called is False | |
|
75 | 73 | |
|
76 | 74 | def test_command_chain_dispatcher_eq_priority(): |
|
77 | 75 | okay1 = Okay(u'okay1') |
|
78 | 76 | okay2 = Okay(u'okay2') |
|
79 | 77 | dp = CommandChainDispatcher([(1, okay1)]) |
|
80 | 78 | dp.add(okay2, 1) |
General Comments 0
You need to be logged in to leave comments.
Login now