public void Compute(ExaminationSet set) { Collection.Clear(); Subject[] subjects = (Subject[])Enum.GetValues(typeof(Subject)); StudentsGroup[] groups = (StudentsGroup[])Enum.GetValues(typeof(StudentsGroup)); Dictionary <SubjectStudenGroup, Average> average = new Dictionary <SubjectStudenGroup, Average>(); Dictionary <SubjectStudenGroup, Median> median = new Dictionary <SubjectStudenGroup, Median>(); Dictionary <SubjectStudenGroup, Modus> modus = new Dictionary <SubjectStudenGroup, Modus>(); // preparation empty collections foreach (Subject subject in subjects) { foreach (StudentsGroup group in groups) { SubjectStudenGroup ssg = new SubjectStudenGroup() { StudentsGroup = group, Subject = subject, }; average.Add(ssg, new Average()); median.Add(ssg, new Median()); modus.Add(ssg, new Modus()); } } ComputeSubjectReport(set, groups, average, median, modus); CollectResults(subjects, groups, average, median, modus); }
public void TestParseOneExam() { ExaminationSet set = new ExaminationSet(); var lines = new string[] { "Entrance examination", "", "Group1", "Alba Hopper;Math=60;Physics=38;English=65" }; var warnigns = set.Deserialize(lines).ToArray(); Assert.AreEqual(0, warnigns.Length); Assert.AreEqual(1, set.GetGroup(StudentsGroup.Group1).Count); Assert.AreEqual(0, set.GetGroup(StudentsGroup.Group2).Count); Assert.AreEqual(0, set.GetGroup(StudentsGroup.Group3).Count); var list = set.GetGroup(StudentsGroup.Group1); var exam = list.Single(); Assert.AreEqual("Alba Hopper", exam.Name); Assert.AreEqual(60, exam.Results[Subject.Math]); Assert.AreEqual(38, exam.Results[Subject.Physics]); Assert.AreEqual(65, exam.Results[Subject.English]); }
public void TestWarningFileEmpty() { ExaminationSet set = new ExaminationSet(); var lines = new string[] { }; var warnigns = set.Deserialize(lines).ToArray(); AssertSingleMessage(warnigns, 0, "file is empty"); }
public void TestWarningNoSpaceAfterTitle() { ExaminationSet set = new ExaminationSet(); var lines = new string[] { "Entrance examination", "Group1" }; var warnigns = set.Deserialize(lines).ToArray(); AssertSingleMessage(warnigns, 1, "no space after title"); }
public void TestWarningUknownGroup() { ExaminationSet set = new ExaminationSet(); var lines = new string[] { "Entrance examination", "", "GroupX" }; var warnigns = set.Deserialize(lines).ToArray(); AssertSingleMessage(warnigns, 2, "uknown group"); }
public void TestUnknownSubject() { ExaminationSet set = new ExaminationSet(); var lines = new string[] { "Entrance examination", "", "Group1", "Alba Hopper;Math=60;Physics=38;German=65" }; var warnigns = set.Deserialize(lines).ToArray(); AssertSingleMessage(warnigns, 3, "german"); }
public void TestSubjectMissing() { ExaminationSet set = new ExaminationSet(); var lines = new string[] { "Entrance examination", "", "Group1", "Alba Hopper;Math=60;Math=38" }; var warnigns = set.Deserialize(lines).ToArray(); AssertSingleMessage(warnigns, 3, "incorrect number of parts in line"); }
public void TestDuplicateSubject() { ExaminationSet set = new ExaminationSet(); var lines = new string[] { "Entrance examination", "", "Group1", "Alba Hopper;Math=60;Math=38;English=65" }; var warnigns = set.Deserialize(lines).ToArray(); AssertSingleMessage(warnigns, 3, "math is duplicated"); }
public void TestResultOver100() { ExaminationSet set = new ExaminationSet(); var lines = new string[] { "Entrance examination", "", "Group1", "Alba Hopper;Math=101;Physics=38;English=65" }; var warnigns = set.Deserialize(lines).ToArray(); AssertSingleMessage(warnigns, 3, "math"); }
public void TestParseMultipleGroups() { ExaminationSet set = new ExaminationSet(); var lines = new string[] { "Entrance examination", "", "Group1", "Alba Hopper;Math=60;Physics=38;English=65", "Harrison Perez;Math=25;Physics=13;English=40", "", "Group2", "Celeste Blake; Math = 98; Physics = 45; English = 92", "Kristy Mendez; Math = 65; Physics = 50; English = 78", "Cheyenne Almond;Math=87;Physics=34;English=45", "", "Group3", "Hettie Durham;Math=74;Physics=55;English=46", }; var warnigns = set.Deserialize(lines).ToArray(); Assert.AreEqual(0, warnigns.Length); Assert.AreEqual(2, set.GetGroup(StudentsGroup.Group1).Count); Assert.AreEqual(3, set.GetGroup(StudentsGroup.Group2).Count); Assert.AreEqual(1, set.GetGroup(StudentsGroup.Group3).Count); var harrison = set.GetGroup(StudentsGroup.Group1)[1]; Assert.AreEqual("Harrison Perez", harrison.Name); Assert.AreEqual(25, harrison.Results[Subject.Math]); Assert.AreEqual(13, harrison.Results[Subject.Physics]); Assert.AreEqual(40, harrison.Results[Subject.English]); var cheyenne = set.GetGroup(StudentsGroup.Group2)[2]; Assert.AreEqual("Cheyenne Almond", cheyenne.Name); Assert.AreEqual(87, cheyenne.Results[Subject.Math]); Assert.AreEqual(34, cheyenne.Results[Subject.Physics]); Assert.AreEqual(45, cheyenne.Results[Subject.English]); var durham = set.GetGroup(StudentsGroup.Group3)[0]; Assert.AreEqual("Hettie Durham", durham.Name); Assert.AreEqual(74, durham.Results[Subject.Math]); Assert.AreEqual(55, durham.Results[Subject.Physics]); Assert.AreEqual(46, durham.Results[Subject.English]); }
public void Compute(ExaminationSet set) { Collection.Clear(); foreach (StudentsGroup studentsGroup in Enum.GetValues(typeof(StudentsGroup))) { foreach (Examination exam in set.GetGroup(studentsGroup)) { StudentReportItem reportItem = new StudentReportItem() { Name = exam.Name, AverageResult = ComputeAverage(exam.Results), }; Collection.Add(reportItem); } } }
private static void ComputeSubjectReport(ExaminationSet set, StudentsGroup[] groups, Dictionary <SubjectStudenGroup, Average> average, Dictionary <SubjectStudenGroup, Median> median, Dictionary <SubjectStudenGroup, Modus> modus) { foreach (StudentsGroup group in groups) { foreach (Examination exam in set.GetGroup(group)) { foreach (var subjectResult in exam.Results) { SubjectStudenGroup ssg = new SubjectStudenGroup() { StudentsGroup = group, Subject = subjectResult.Key, }; average[ssg].Add(subjectResult.Value); median[ssg].Add(subjectResult.Value); modus[ssg].Add(subjectResult.Value); } } } }