def test_multi_step_early_completion(self): # Default to estimating a single step p = Progress(num_steps=2) self.assertEqual(p.end_step, 2) self.assertEqual(len(p.progress_history), 1) self.assertEqual(p.completion(), 0.0) p.update(msg="Estimate how complex I am") self.assertEqual(p.end_step, 2) self.assertEqual(len(p.progress_history), 2) self.assertEqual(p.completion(), 0.5) # First step to execute may decide that more steps are required p.add_estimated_steps(10) self.assertEqual(p.end_step, 12) self.assertEqual(len(p.progress_history), 2) self.assertEqual(p.completion(), 0.083) p.update(steps=2, msg="Do two things") self.assertEqual(len(p.progress_history), 3) self.assertEqual(p.completion(), 0.25) # Finish early p.mark_complete() self.assertEqual(len(p.progress_history), 4) self.assertEqual(p.completion(), 1.0)
def test_context_nested(self): p = Progress(num_steps=2) self.assertFalse(p.is_started()) self.assertFalse(p.is_completed()) self.assertEqual(len(p.progress_history), 1) self.assertEqual(p.completion(), 0.0) with p: p.update(msg="do a thing") self.assertEqual(len(p.progress_history), 2) for i in range(5): with p: p.update( msg="do a thing in a loop nested in the other thing") self.assertEqual(len(p.progress_history), 3 + i) self.assertFalse(p.is_completed()) self.assertEqual(len(p.progress_history), 7) self.assertFalse(p.is_completed()) self.assertTrue(p.is_completed()) self.assertEqual(len(p.progress_history), 8) self.assertEqual(p.completion(), 1.0)
def test_context(self): p = Progress(num_steps=2) self.assertFalse(p.is_started()) self.assertFalse(p.is_completed()) self.assertEqual(len(p.progress_history), 1) self.assertEqual(p.completion(), 0.0) with p: p.update(msg="do a thing") self.assertTrue(p.is_started()) self.assertEqual(len(p.progress_history), 2) self.assertEqual(p.completion(), 0.5) self.assertTrue(p.is_completed()) self.assertEqual(len(p.progress_history), 3) self.assertEqual(p.completion(), 1.0)
def test_basic_single_step(self): p = Progress(num_steps=2) self.assertFalse(p.is_started()) self.assertFalse(p.is_completed()) self.assertEqual(len(p.progress_history), 1) self.assertEqual(p.completion(), 0.0) p.update(msg="do a thing") self.assertTrue(p.is_started()) self.assertEqual(len(p.progress_history), 2) self.assertEqual(p.completion(), 0.5) p.mark_complete() self.assertTrue(p.is_completed()) self.assertEqual(len(p.progress_history), 3) self.assertEqual(p.completion(), 1.0)