Ejemplo n.º 1
0
        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]);
        }
Ejemplo n.º 11
0
        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);
                }
            }
        }
Ejemplo n.º 12
0
        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);
                    }
                }
            }
        }