Exemple #1
0
 public TestModel EndTest(ITestEvaluator evaluator)
 {
      _currentTest.Assessments.Add(evaluator.Name, evaluator.Assess(_currentTest));
      TestModel test = _currentTest;
      _currentTest = null;
      return test;
 }
        public TestEvaluationViewModel(
            IUserModel user,
            ITestEvaluator evaluator,
            IInterpretationBuilder interpreter
        )
        {
            if (evaluator == null)
                throw new ArgumentNullException("evaluator");

            if (interpreter == null)
                throw new ArgumentNullException("interpreter");

            if (user == null)
                throw new ArgumentNullException("user");

            _userName = user.Name;

            InitializeAssessment(user, evaluator, interpreter);
            InitalizeCommands();
        }
        private void InitializeAssessment(IUserModel user, ITestEvaluator evaluator, IInterpretationBuilder interpreter)
        {
            TaskScheduler scheduler = TaskScheduler.FromCurrentSynchronizationContext();
            Task.Factory.StartNew(
                () =>
                {
                    TestModel test = user.EndTest(evaluator);

                    AssessmentModel assessment = test.Assessments[test.Assessments.Keys.ElementAt(0)];

                    interpreter.Intepret(assessment);

                    var outcomeViewModels = assessment.Outcomes.Select(x => new OutcomeViewModel(x)).ToList();

                    return new { Assessment = assessment, Outcomes = outcomeViewModels };
                }
            )
            .ContinueWith(
                task =>
                {
                    _outcomes = task.Result.Outcomes;
                    _assessment = task.Result.Assessment;

                    RaisePropertyChanged(string.Empty);
                },
                scheduler
            );
        }