public void CheckConditionAtTimeAfterTimeTrue()
        {
            const int Time = 10;
            _query = new ConditionAtTimeQuery(QuestionType.Ever, "aa && bb", Time - 1);
            var state = new State();
            var fluentList = new List<Fluent>
                             {
                                 new Fluent("aa", true),
                                 new Fluent("bb", true)
                             };
            state.Fluents.AddRange(fluentList);

            QueryResult result = _query.CheckCondition(state, null, Time);

            Assert.AreEqual(QueryResult.True, result);
        }
        /// <summary>
        /// Checks given parameters with conditionAtTimeQuery and ExecutableScenarioQuery
        /// </summary>
        /// <param name="state"></param>
        /// <param name="worldAction"></param>
        /// <param name="time"></param>
        /// <returns></returns>
        public override QueryResult CheckCondition(World.State state, World.WorldAction worldAction, int time)
        {
            _logger.Info("Checking condition: " + this._condition + "\n accesible with parameters:\nstate: " + state + "\naction: " + worldAction);

            QueryResult condAtTimeResult = CondAtTimeQuery.CheckCondition(state, worldAction, time);
            QueryResult execResult       = ExecQuery.CheckCondition(state, worldAction, time);



            QueryResult result;

            if (condAtTimeResult == QueryResult.Error || condAtTimeResult == QueryResult.Error)
            {
                result = QueryResult.Error;
            }
            else
            {
                if (condAtTimeResult == QueryResult.False || condAtTimeResult == QueryResult.False)
                {
                    result = QueryResult.False;
                }
                else
                {
                    if (condAtTimeResult == QueryResult.Undefined || condAtTimeResult == QueryResult.Undefined)
                    {
                        result = QueryResult.Undefined;
                    }
                    else
                    {
                        result = QueryResult.True;
                    }
                }
            }

            string logResult = "Accesible: " + result;

            if (QueryResult.Undefined == result)
            {
                _logger.Warn(logResult);
            }
            else
            {
                _logger.Info(logResult);
            }

            return(result);
        }
        public void CheckConditionAtTimeNoTimeQueryResultUndefined()
        {
            const int Time = 0;
            _query = new ConditionAtTimeQuery(QuestionType.Ever, "aa && bb");
            var state = new State();
            var fluentList = new List<Fluent>
                             {
                                 new Fluent("aa", true),
                                 new Fluent("bb", false)
                             };
            state.Fluents.AddRange(fluentList);

            QueryResult result = _query.CheckCondition(state, null, Time);

            Assert.AreEqual(QueryResult.Undefined, result);
        }