/// <summary>
        /// Constructor.
        /// </summary>
        public AssignmentResultViewModel(
            StudentAssignmentResult result,
            Func<int, string> getQuestionUrl,
            ITimeZoneProvider timeZoneProvider)
        {
            AssignmentName = result.AssignmentName;
            DueDate = result.AssignmentDueDate.FormatLongDateTime(timeZoneProvider);
            Score = $"{result.Score} / {result.QuestionResults.Sum(qr => qr.QuestionPoints)}";
            Status = GetColoredText
            (
                result.Status.GetColor(),
                result.Status.GetText(),
                result.Status.GetBold(),
                preventWrapping: true
            );

            QuestionResults = result.QuestionResults
                .Select
                (
                    qr => new StudentQuestionResultViewModel
                    (
                        qr,
                        getQuestionUrl
                    )
                ).ToList();
        }
 /// <summary>
 /// Verifies student assignment results.
 /// </summary>
 private void VerifyStudentAssignmentResult(
     StudentAssignmentResult expected,
     StudentAssignmentResult actual)
 {
     Assert.Equal(expected.AssignmentName, actual.AssignmentName);
     Assert.Equal(expected.AssignmentDueDate, actual.AssignmentDueDate);
     Assert.Equal(expected.Score, actual.Score);
     Assert.Equal(expected.Status.Completion, actual.Status.Completion);
     Assert.Equal(expected.Status.Late, actual.Status.Late);
     Assert.Equal(expected.QuestionResults.Count, actual.QuestionResults.Count);
     for (int index = 0; index < expected.QuestionResults.Count; index++)
     {
         VerifyStudentQuestionResult
         (
             expected.QuestionResults[index],
             actual.QuestionResults[index]
         );
     }
 }