@@ -31,7 +31,8 @@ def test_run_vizrank(self):
3131 # run through all states
3232 task .is_interruption_requested .return_value = False
3333 states = [(0 , 1 ), (0 , 2 ), (0 , 3 ), (1 , 2 ), (1 , 3 ), (2 , 3 )]
34- res = run_vizrank (compute_score , chain (states ), scores , task )
34+ res = run_vizrank (compute_score , lambda initial : chain (states ),
35+ None , scores , 0 , 6 , task )
3536
3637 next_state = self .assertQueueEqual (
3738 res .queue , [0 , 0 , 0 , 3 , 2 , 5 ], compute_score ,
@@ -40,28 +41,33 @@ def test_run_vizrank(self):
4041 res_scores = sorted ([compute_score (x ) for x in states ])
4142 self .assertListEqual (res .scores , res_scores )
4243 self .assertIsNot (scores , res .scores )
43- self .assertEqual (task .set_partial_result .call_count , 6 )
44+ self .assertEqual (task .set_partial_result .call_count , 2 )
45+ self .assertEqual (task .set_progress_value .call_count , 7 )
4446
4547 def test_run_vizrank_interrupt (self ):
4648 scores , task = [], Mock ()
4749 # interrupt calculation in third iteration
4850 task .is_interruption_requested .side_effect = lambda : \
4951 True if task .is_interruption_requested .call_count > 2 else False
5052 states = [(0 , 1 ), (0 , 2 ), (0 , 3 ), (1 , 2 ), (1 , 3 ), (2 , 3 )]
51- res = run_vizrank (compute_score , chain (states ), scores , task )
53+ res = run_vizrank (compute_score , lambda initial : chain (states ),
54+ None , scores , 0 , 6 , task )
5255
5356 next_state = self .assertQueueEqual (
5457 res .queue , [0 , 0 ], compute_score , states [:2 ], states [1 :3 ])
5558 self .assertEqual (next_state , (0 , 3 ))
5659 res_scores = sorted ([compute_score (x ) for x in states [:2 ]])
5760 self .assertListEqual (res .scores , res_scores )
5861 self .assertIsNot (scores , res .scores )
59- self .assertEqual (task .set_partial_result .call_count , 2 )
62+ self .assertEqual (task .set_partial_result .call_count , 1 )
63+ self .assertEqual (task .set_progress_value .call_count , 3 )
64+ task .set_progress_value .assert_called_with (int (1 / 6 * 100 ))
6065
6166 # continue calculation through all states
6267 task .is_interruption_requested .side_effect = lambda : False
6368 i = states .index (next_state )
64- res = run_vizrank (compute_score , chain (states [i :]), res_scores , task )
69+ res = run_vizrank (compute_score , lambda initial : chain (states [i :]),
70+ None , res_scores , 2 , 6 , task )
6571
6672 next_state = self .assertQueueEqual (
6773 res .queue , [0 , 3 , 2 , 5 ], compute_score , states [2 :],
@@ -70,7 +76,9 @@ def test_run_vizrank_interrupt(self):
7076 res_scores = sorted ([compute_score (x ) for x in states ])
7177 self .assertListEqual (res .scores , res_scores )
7278 self .assertIsNot (scores , res .scores )
73- self .assertEqual (task .set_partial_result .call_count , 6 )
79+ self .assertEqual (task .set_partial_result .call_count , 3 )
80+ self .assertEqual (task .set_progress_value .call_count , 8 )
81+ task .set_progress_value .assert_called_with (int (5 / 6 * 100 ))
7482
7583 def assertQueueEqual (self , queue , positions , f , states , next_states ):
7684 self .assertIsInstance (queue , Queue )
@@ -95,8 +103,12 @@ def iterate_states(initial_state):
95103 def invoke_on_partial_result ():
96104 widget .on_partial_result (run_vizrank (
97105 widget .compute_score ,
98- widget .iterate_states (widget .saved_state ),
99- widget .scores , task
106+ widget .iterate_states ,
107+ widget .saved_state ,
108+ widget .scores ,
109+ widget .saved_progress ,
110+ widget .state_count (),
111+ task
100112 ))
101113
102114 task = Mock ()
@@ -107,6 +119,7 @@ def invoke_on_partial_result():
107119 widget .compute_score = compute_score
108120 widget .iterate_states = iterate_states
109121 widget .row_for_state = lambda sc , _ : [QStandardItem (str (sc ))]
122+ widget .state_count = lambda : len (states )
110123
111124 # interrupt calculation in third iteration
112125 task .is_interruption_requested .side_effect = lambda : \
@@ -117,6 +130,7 @@ def invoke_on_partial_result():
117130 sorted ([compute_score (x ) for x in states [:2 ]])):
118131 self .assertEqual (widget .rank_model .item (row , 0 ).text (), str (score ))
119132 self .assertEqual (widget .saved_progress , 2 )
133+ task .set_progress_value .assert_called_with (int (1 / 6 * 100 ))
120134
121135 # continue calculation through all states
122136 task .is_interruption_requested .side_effect = lambda : False
@@ -126,6 +140,7 @@ def invoke_on_partial_result():
126140 sorted ([compute_score (x ) for x in states ])):
127141 self .assertEqual (widget .rank_model .item (row , 0 ).text (), str (score ))
128142 self .assertEqual (widget .saved_progress , 6 )
143+ task .set_progress_value .assert_called_with (int (5 / 6 * 100 ))
129144
130145
131146if __name__ == "__main__" :
0 commit comments