示例#1
0
        private async Task <IEnumerable <ExamResultChangeTracking> > UpdateExamResults(GradingParser parser,
                                                                                       IEnumerable <ExamResultChangeTracking> previousExamResults)
        {
            var currentDegrees = await parser.GetGradesForAllDegrees();

            var previousExamResultsArr =
                previousExamResults as ExamResultChangeTracking[] ?? previousExamResults.ToArray();
            var changes = GetChangedExams(previousExamResultsArr, currentDegrees.SelectMany(ToExamResultChangeTracking))
                          .ToArray();

            if (changes.Length > 0)
            {
                _logger.LogInformation($"Found {changes.Length} changes in exam results.");
                await Notify(changes);
            }
            else
            {
                _logger.LogDebug("Found no new exams");
            }

            return(changes.Union(previousExamResultsArr, new GenericEqualityComparer <ExamResultChangeTracking>((a, b) =>
                                                                                                                a.ExamResult.ExamNumber == b.ExamResult.ExamNumber && a.ExamResult.Try == b.ExamResult.Try &&
                                                                                                                a.ExamResult.ExamState == b.ExamResult.ExamState &&
                                                                                                                (float.IsNaN(a.ExamResult.Grade) && float.IsNaN(b.ExamResult.Grade) ||
                                                                                                                 Math.Abs(a.ExamResult.Grade - b.ExamResult.Grade) < .001))));
        }
示例#2
0
        public async Task TestGradeParsing()
        {
            var client = ClientTests.Client();
            await client.Authenticate("xxx", "xxx");

            var parser = new GradingParser(client);

            var g = await parser.GetGradesForAllDegrees();

            Assert.IsNotEmpty(g);
        }