예제 #1
0
        public Question GetPreviousRankQuestionBefore(Guid currentQuestionId)
        {
            var currenQuestion = GetQuestion(currentQuestionId);
            var currentRank    = currenQuestion.Rank;
            var currentId      = currenQuestion.Id;

            return(QuestionStore
                   .OrderByDescending(x => x.Rank)
                   .FirstOrDefault(x => x.Rank <= currentRank &&
                                   x.Id != currentId));
        }
예제 #2
0
        public Question GetNextRankQuestionAfter(Guid currentQuestionId)
        {
            var currenQuestion = GetQuestion(currentQuestionId);
            var currentRank    = currenQuestion.Rank;
            var currentId      = currenQuestion.Id;

            return(QuestionStore
                   .OrderBy(x => x.Rank)
                   .FirstOrDefault(x => x.Rank >= currentRank &&
                                   x.Id != currentId));
        }
예제 #3
0
        public void TestExpression(Dictionary <string, object> context, string expression, object expectedResult)
        {
            var questions = new List <Questionnaires.RunTime.Question>();

            foreach (var value in context)
            {
                questions.Add(ValueCreator.CreateQuestion(value.Key, (dynamic)value.Value));
            }

            var store = new QuestionStore(questions);

            var astFactory = new ASTBuilder(new Result());
            var AST        = astFactory.BuildExpression(expression);

            var evaluator = new Questionnaires.RunTime.ExpressionEvaluator(store);
            var result    = evaluator.Evaluate((IExpression)AST);

            Value.ValueTester.Test((dynamic)result, expectedResult);
        }
예제 #4
0
 public Question GetFirstQuestion()
 {
     return(QuestionStore.OrderBy(x => x.Rank).FirstOrDefault());
 }
예제 #5
0
 public Question GetQuestion(Guid value)
 {
     return(QuestionStore.FirstOrDefault(x => x.Id == value));
 }
예제 #6
0
 public bool HasQuestions()
 {
     return(null != QuestionStore && QuestionStore.Any());
 }