public void TurnInAssignment(Student enrollee, string assignment, string result)
        {
            var points = gradingFunc(assignment, result);


            enrollee.AssignGrade(assignment, points);
        }
        public void AfterOneClassGPAReflectsSingleClass()
        {
            var underTest = new Student(1);

            underTest.RecordClassGrade(Grade.C);

            Assert.Equal((double)Grade.C, underTest.GradePointAverage);
        }
        public void TeacherGradesHomework()
        {
            bool assigned = false;
            var t = new Teacher(1);
            var offer = new ClassOffering(t, (assignment, name) => { assigned = true; return 5; });

            var s = new Student(2);
            offer.TurnInAssignment(s, "assignment", "result");

            Assert.True(assigned);
        }
        public void StudentHasNameAndId()
        {
            var underTest = new Student(2)
            {
                FirstName = "Sample",
                LastName = "Student"
            };

            Assert.Equal(2, underTest.Id);
            Assert.Equal("Sample", underTest.FirstName);
            Assert.Equal("Student", underTest.LastName);
            Assert.Equal(0, underTest.GradePointAverage);
        }
        public void AverageOfStudentsGetsComputed()
        {
            var classoffering = new ClassOffering(new Teacher(1), (s1, s2) => 0);

            var s = new Student(1);
            s.RecordClassGrade(Grade.A);
            classoffering.EnrollStudent(s);
            s = new Student(2);
            s.RecordClassGrade(Grade.C);
            classoffering.EnrollStudent(s);

            var gpa = classoffering.AverageGPAForStudents();

            Assert.Equal(3.0, gpa);
        }
        public void GPACalculationPerformsAverageCalculation()
        {
            var underTest = new Student(1);

            underTest.RecordClassGrade(Grade.C);
            Assert.Equal((double)Grade.C, underTest.GradePointAverage);

            underTest.RecordClassGrade(Grade.C);
            Assert.Equal((double)Grade.C, underTest.GradePointAverage);

            underTest.RecordClassGrade(Grade.A);
            Assert.Equal((double)8/3, underTest.GradePointAverage);

            underTest.RecordClassGrade(Grade.A);
            Assert.Equal((double)Grade.B, underTest.GradePointAverage);
        }
 public void EnrollStudent(Student s)
 {
     if (!students.Any(s1 => s1.Id == s.Id))
         students.Add(s);
 }