public void CalculateScore_Normal()
        {
            testSubmission.Answers = new List <TestSubmissionAnswer>
            {
                new TestSubmissionAnswer()
                {
                    Question = availableQuestions[1], Points = 1
                },
                new TestSubmissionAnswer()
                {
                    Question = availableQuestions[3], Points = 1
                },
                new TestSubmissionAnswer()
                {
                    Question = availableQuestions[5], Points = 0
                },
                new TestSubmissionAnswer()
                {
                    Question = availableQuestions[6], Points = 4
                },
            };

            double score = TestScoreCalculator.CalculateScore(testSubmission);

            Assert.Equal(0.75, score, decimalDigitPrecision);
        }
예제 #2
0
        public IEnumerable <TestSubmissionWithUserInfoVM> GetAllSubmissions(string testId)
        {
            var testSubmissions = testSubmissionService.GetAllSubmissionsOfTest(testId);

            return(testSubmissions.Select(ts => new TestSubmissionWithUserInfoVM(ts.Student.User.Email, ts.Id.ToString(),
                                                                                 TestScoreCalculator.CalculateScore(ts), ts.SubmittedDateTime, ts.IsReviewed)));
        }
        public void CalculateScore_ZeroPoints()
        {
            testSubmission.Answers = new List <TestSubmissionAnswer>
            {
                new TestSubmissionAnswer()
                {
                    Question = availableQuestions[1], Points = 0
                },
                new TestSubmissionAnswer()
                {
                    Question = availableQuestions[2], Points = 0
                },
                new TestSubmissionAnswer()
                {
                    Question = availableQuestions[4], Points = 0
                },
                new TestSubmissionAnswer()
                {
                    Question = availableQuestions[6], Points = 0
                }
            };

            double score = TestScoreCalculator.CalculateScore(testSubmission);

            Assert.Equal(0, score, decimalDigitPrecision);
        }
예제 #4
0
        public IEnumerable <TestSubmissionInfoVM> GetTestSubmissions(string memberId)
        {
            var userSubmissions = testSubmissionService.GetAllGraded(memberId);

            return(userSubmissions.Select(ts => new TestSubmissionInfoVM(ts.Id.ToString(), ts.Test.Topic, ts.Test.Weight,
                                                                         TestScoreCalculator.CalculateScore(ts), ts.SubmittedDateTime, ts.IsReviewed)));
        }
        public void CalculateScore_SingleQuestion()
        {
            testSubmission.Answers = new List <TestSubmissionAnswer>
            {
                new TestSubmissionAnswer()
                {
                    Question = availableQuestions[1], Points = 1
                }
            };

            double score = TestScoreCalculator.CalculateScore(testSubmission);

            Assert.Equal(1, score, decimalDigitPrecision);
        }
        public void CalculateScore_Over100Percent()
        {
            testSubmission.Answers = new List <TestSubmissionAnswer>
            {
                new TestSubmissionAnswer()
                {
                    Question = availableQuestions[2], Points = 6
                },
                new TestSubmissionAnswer()
                {
                    Question = availableQuestions[6], Points = 4
                },
                new TestSubmissionAnswer()
                {
                    Question = availableQuestions[7], Points = 1
                }
            };

            double score = TestScoreCalculator.CalculateScore(testSubmission);

            Assert.Equal(1.1, score, decimalDigitPrecision);
        }
예제 #7
0
        public WrapperVM <double> GetAverageScore(string memberId)
        {
            var mappedGrades = courseMemberService.GetGradesOf(memberId)
                               .Select(grade => new ScoreWithWeightDto(grade.Weight, grade.PercentualValue));
            var mappedTestSubmissions = testSubmissionService.GetAllGraded(memberId)
                                        .Select(ts => new ScoreWithWeightDto(ts.Test.Weight, TestScoreCalculator.CalculateScore(ts)));

            var scoresWithWeights = new List <ScoreWithWeightDto>();

            scoresWithWeights.AddRange(mappedGrades);
            scoresWithWeights.AddRange(mappedTestSubmissions);

            double averageScore = AverageScoreCalculator.GetScore(scoresWithWeights);

            return(new WrapperVM <double>(averageScore));
        }