class TestCourseAddPrereq(unittest.TestCase): def setUp(self): self.c1 = Course('Highschoolcalc') self.c2 = Course('MAT136') self.c3 = Course('MAT137', [self.c1]) self.c4 = Course('MAT237', [self.c2, self.c3]) def test_add_prereq_no_prereqs(self): prereq = Course('MAT223') self.c1.add_prereq(prereq) self.assertEqual([prereq], self.c1.prereqs) def test_add_prereqs_many_prereqs(self): prereq = Course('MAT136') self.c1.add_prereq(prereq) self.assertEqual(prereq.name, self.c1.prereqs[-1].name) def test_error_in_tree(self): self.assertRaises(PrerequisiteError, self.c3.add_prereq, self.c1) self.assertRaises(PrerequisiteError, self.c4.add_prereq, self.c1) def test_error_in_prereq_tree(self): self.assertRaises(PrerequisiteError, self.c1.add_prereq, self.c3) self.assertRaises(PrerequisiteError, self.c1.add_prereq, self.c4) def test_error_add_self(self): self.assertRaises(PrerequisiteError, self.c3.add_prereq, self.c3)
class TestCourseAddPrereq(unittest.TestCase): def setUp(self): self.c3 = Course('alone101') def test_add_prereq_no_prereqs(self): prereq = Course('MAT223') self.c3.add_prereq(prereq) self.assertEqual([prereq], self.c3.prereqs)
class TestCourse(unittest.TestCase): def setUp(self): self.a = Course('A') self.b = Course('B') self.c = Course('C', [self.a]) self.d = Course('D', [self.b, self.c]) def test_initializes_with_values(self): self.assertEqual([self.b, self.c], self.d.prereqs) self.assertEqual([], self.a.prereqs) self.assertEqual('A', self.a.name) self.assertEqual(False, self.a.taken) def test_is_not_takeable_without_prereqs(self): self.assertEqual(False, self.d.is_takeable()) self.assertEqual(False, self.c.is_takeable()) def test_is_takeable_with_prereqs(self): self.a.take() self.assertEqual(True, self.c.is_takeable()) self.assertEqual(False, self.d.is_takeable()) self.b.take() self.assertEqual(False, self.d.is_takeable()) self.c.take() self.assertEqual(True, self.d.is_takeable()) def test_take_works(self): self.assertEqual(False, self.a.taken) self.a.take() self.assertEqual(True, self.a.taken) self.a.take() self.assertEqual(True, self.a.taken) def test_raises_error_if_cant_take(self): self.assertEqual(False, self.d.is_takeable()) with self.assertRaises(UntakeableError): self.d.take() def test_add_prereq_works(self): self.a.add_prereq(self.b) self.assertEqual([self.b], self.a.prereqs) def test_add_prereq_fails_if_already_there(self): with self.assertRaises(PrerequisiteError): self.c.add_prereq(self.a) def test_add_prereq_fails_if_circular(self): with self.assertRaises(PrerequisiteError): self.a.add_prereq(self.c) def test_find(self): self.assertEqual(self.a, self.d.find('A')) self.assertEqual(None, self.d.find('G')) def test_missing_prereqs_works(self): self.assertEqual([], self.a.missing_prereqs()) self.assertEqual(['A'], self.c.missing_prereqs()) self.assertEqual(['A', 'B', 'C'], self.d.missing_prereqs()) def test_adds_self_as_prereq(self): with self.assertRaises(PrerequisiteError): self.a.add_prereq(self.a)