public void TestStudentIsGraduated() { IStudent student = Repository.GetStudent(2); IDiploma diploma = Repository.GetDiploma(1); StudentGraduationTracker tracker = new StudentGraduationTracker(student, diploma); ResultGraduationTracker result = tracker.StudentHasGraduated(); Assert.IsTrue(result.IsGraduated); Assert.IsTrue(result.Standing == Standing.MagnaCumLaude); // not too sure about this bussiness rule Assert.IsTrue(result.Credits > 1); }
public void TestStudentIsNotGraduated() { IStudent student = Repository.GetStudent(4); IDiploma diploma = Repository.GetDiploma(1); StudentGraduationTracker tracker = new StudentGraduationTracker(student, diploma); ResultGraduationTracker result = tracker.StudentHasGraduated(); Assert.IsFalse(result.IsGraduated); Assert.IsTrue(result.Standing == Standing.Remedial); }
public void TestHasCredits() { var tracker = new StudentGraduationTracker(); Diploma diploma = GetDiploma(); List <Student> students = GetStudents(); var graduated = new List <Tuple <bool, STANDING> >(); foreach (var student in students) { graduated.Add(tracker.HasGraduated(diploma, student)); } Assert.IsFalse(graduated.Where(r => r.Item2 == STANDING.Remedial).Any()); Assert.IsTrue(graduated.Where(r => r.Item2 != STANDING.Remedial).Any()); Assert.IsTrue(graduated.Where(r => r.Item2 != STANDING.NotEnoughRequirements).Any()); // Testing fails here because there is 1 student who has // at least a score less than 50. The previous logic was wrong. // it was checking scores more than 50 not more than and equal. Assert.IsFalse(graduated.Where(r => r.Item2 == STANDING.None).Any()); }