public void TestGetTotalCreditsPerYearWrongSemesters() { // Arrange: create data var semester = 2; var academicYear = 2; var subjects = GetSubjectsForThisSemester(2); var student = GetStudentWithSubjects(subjects); var collegeRules = new CollegeRules(academicYear, semester); // Arrange: prepare input var subjectPreviousYear = subjects.ElementAt(0); subjectPreviousYear.Semester = semester - 1; subjectPreviousYear.StudyYear = academicYear - 1; var subjectNextYear = subjects.ElementAt(1); subjectNextYear.Semester = semester + 1; subjectNextYear.StudyYear = academicYear + 1; // Act var totalCredits = collegeRules.GetTotalCreditsPerYear(student, academicYear, semester); // Assert Assert.AreEqual(0, totalCredits, "The number of credits is not equal to the expected one"); }
public void TestGetStudentCompleteStatus() { // Arrange: create data var numberOfSubjects = 4; var subjects = GetSubjectsForThisSemester(numberOfSubjects); var student = GetStudentWithSubjects(subjects); var collegeRules = new CollegeRules(academicYear, semester); // Arrange: prepare input var expectedTotalCredits = 0; var gradesSum = 0; var subjectsThisYear = student.SubjectsList; foreach (var subject in student.SubjectsList) { expectedTotalCredits += subject.Grade * subject.Subject.Credits; gradesSum += subject.Grade; } var expectedAverage = gradesSum / subjectsThisYear.Count(); // Act var studentDetails = collegeRules.GetStudentCollgeStatus(student, academicYear, semester); // Assert Assert.AreEqual(expectedTotalCredits, studentDetails.Credits, "The number of credits is not equal to the expected one"); Assert.AreEqual(expectedAverage, studentDetails.Average, "The Ects averae is not equal to the expected one"); Assert.IsTrue(subjectsThisYear.SequenceEqual(studentDetails.ExaminationResults)); }
public void TestGetTotalCreditsPerYear() { // Arrange: create data var numberOfSubjects = 4; var subjects = GetSubjectsForThisSemester(numberOfSubjects); var student = GetStudentWithSubjects(subjects); var collegeRules = new CollegeRules(academicYear, semester); // Arrange: prepare input var subjectPreviousYear = subjects.ElementAt(0); subjectPreviousYear.Semester = semester - 1; subjectPreviousYear.StudyYear = academicYear - 1; var subjectNextYear = subjects.ElementAt(3); subjectNextYear.Semester = semester + 1; subjectNextYear.StudyYear = academicYear + 1; var subjectsThisSemester = student.SubjectsList.Skip(1).Take(2); var expectedTotalCredits = 0; foreach (var subjectThisSemester in subjectsThisSemester) { expectedTotalCredits += subjectThisSemester.Grade * subjectThisSemester.Subject.Credits; } // Act var totalCredits = collegeRules.GetTotalCreditsPerYear(student, academicYear, semester); // Assert Assert.AreEqual(expectedTotalCredits, totalCredits, "The number of credits is not equal to the expected one"); }
public void TestGetPromotionDetails() { // Arrange: create data var numberOfStudents = 3; var students = new List <Student>(); var subjects = GetSubjectsForThisSemester(12); for (var i = 0; i < numberOfStudents; i++) { var student = GetStudentWithSubjects(subjects); students.Add(student); } var collegeRules = new CollegeRules(academicYear, semester); // Arrange: prepare input var failStudent = students.ElementAt(0); SetPromotedSubjects(failStudent, 5); var nearlyPromotedStudent = students.ElementAt(1); SetPromotedSubjects(nearlyPromotedStudent, 6); var promotedStudent = students.ElementAt(2); SetPromotedSubjects(promotedStudent, 7); // Act var promotionDetails = collegeRules.GetPromotionDetails(students); // Assert Assert.IsFalse(promotionDetails.First(student => student.Student.Id.Equals(failStudent.Id)).Promoted, "Student should've fail to promote"); Assert.IsFalse(promotionDetails.First(student => student.Student.Id.Equals(nearlyPromotedStudent.Id)).Promoted, "Student should've fail to promote"); Assert.IsTrue(promotionDetails.First(student => student.Student.Id.Equals(promotedStudent.Id)).Promoted, "Student should've promoted"); }
public void TestGetBugetedStudents() { // Arrange: create data var numberOfStudents = 5; var students = new List <Student>(); var subjects = GetSubjectsForThisSemester(5); for (var i = 0; i < numberOfStudents; i++) { var student = GetStudentWithSubjects(subjects); students.Add(student); } var collegeRules = new CollegeRules(academicYear, semester); // Arrange: prepare input var grade = 5; foreach (var student in students) { foreach (var subjectStudent in student.SubjectsList) { subjectStudent.Grade = grade; } grade++; } var expectedNumberOfFinancedStudents = numberOfStudents * 6 / 10; var expectedNumberOfFeePayingStudents = numberOfStudents - expectedNumberOfFinancedStudents; // Act var bugetStudents = collegeRules.GetBugetStudents(students); // Assert var expectedFinancedStudents = bugetStudents .OrderByDescending(student => student.Credits) .Take(expectedNumberOfFinancedStudents); var firstSegmentShouldBeFinanced = expectedFinancedStudents.All(student => student.Financed); var lastSegmentShouldBeFeePayers = bugetStudents.Except(expectedFinancedStudents).All(student => !student.Financed); Assert.IsTrue(firstSegmentShouldBeFinanced, string.Format("{0} students shoud've been promoted", expectedNumberOfFinancedStudents)); Assert.IsTrue(lastSegmentShouldBeFeePayers, string.Format("{0} students shoud've failed", expectedNumberOfFeePayingStudents)); }