def setUp(self): self.job_backlog = JobBacklog() self.job_2 = Job("jid1", [Task("machine", "duration")], 2) self.job_4 = Job("jid1", [Task("machine", "duration")], 4) self.job_7 = Job("jid1", [Task("machine", "duration")], 7)
class TestJobBacklog(TestCase): def setUp(self): self.job_backlog = JobBacklog() self.job_2 = Job("jid1", [Task("machine", "duration")], 2) self.job_4 = Job("jid1", [Task("machine", "duration")], 4) self.job_7 = Job("jid1", [Task("machine", "duration")], 7) def test_add_problem(self): self.job_backlog.add_problem(Problem([self.job_2, self.job_4, self.job_7])) self.assertEqual(self.job_backlog.size(), 3) def test_add_job(self): self.job_backlog.add_job(self.job_2) self.assertEqual(self.job_backlog.size(), 1) def test_is_empty_returns_true_when_no_job_was_added(self): self.assertTrue(self.job_backlog.is_empty()) def test_is_empty_returns_false_when_job_was_added(self): self.job_backlog.add_job(self.job_2) self.assertFalse(self.job_backlog.is_empty()) def test_is_empty_returns_true_when_all_jobs_are_popped(self): self.job_backlog.add_problem(Problem([self.job_2, self.job_4])) self.job_backlog.pop_top_priority_job() self.job_backlog.pop_top_priority_job() self.assertTrue(self.job_backlog.is_empty()) def test_is_empty_raises_exception_when_popping_from_empty_backlog(self): self.assertRaises(Exception, lambda: self.job_backlog.pop_top_priority_job()) def test_pop_top_priority_job_returns_job_with_earliest_arrival_time(self): self.job_backlog.add_problem(Problem([self.job_4, self.job_7, self.job_2])) self.assertEqual(self.job_backlog.pop_top_priority_job().arrival_time, 2) self.assertEqual(self.job_backlog.pop_top_priority_job().arrival_time, 4) self.assertEqual(self.job_backlog.pop_top_priority_job().arrival_time, 7)