private void AssertExpression(OnCondition condition, string expectedExpression)
        {
            var exp = condition.GetExpression();

            dbg.Trace.TraceInformation(exp.ToString());
            Assert.Equal(expectedExpression, exp.ToString());
        }
        public void AssertExpression(OnCondition condition, string expectedExpression)
        {
            var exp = condition.GetExpression(new ExpressionEngine());

            dbg.Trace.TraceInformation(exp.ToString());
            Assert.AreEqual(expectedExpression, exp.ToString());
        }
Example #3
0
 private static OnCondition AddActions(OnCondition trigger)
 {
     trigger.Actions = new List <Dialog>()
     {
         new SendActivity(trigger.GetType().Name)
     };
     return(trigger);
 }
Example #4
0
    public IEnumerator Wait(OnCondition checkCondition)
    {
        if (checkCondition == null)
        {
            yield break;
        }

        while (!checkCondition())
        {
            yield return(null);
        }
    }
        /// <summary>
        /// Selects the best rule to execute.
        /// </summary>
        /// <param name="context">The <see cref="DialogContext"/> for the current turn of conversation.</param>
        /// <param name="cancellationToken">Optional, <see cref="CancellationToken"/> of the task.</param>
        /// <returns>Best rule in original list to execute or -1 if none.</returns>
        public override Task <IReadOnlyList <OnCondition> > SelectAsync(ActionContext context, CancellationToken cancellationToken)
        {
            OnCondition selection      = null;
            var         lowestPriority = int.MaxValue;

            if (_evaluate)
            {
                for (var i = 0; i < _conditionals.Count; i++)
                {
                    var conditional = _conditionals[i];
                    var expression  = conditional.GetExpression();
                    var(value, error) = expression.TryEvaluate(context.State);
                    var eval = error == null && (bool)value;
                    if (eval == true)
                    {
                        var priority = conditional.CurrentPriority(context);
                        if (priority >= 0 && priority < lowestPriority)
                        {
                            selection      = conditional;
                            lowestPriority = priority;
                        }
                    }
                }
            }
            else
            {
                foreach (var conditional in _conditionals)
                {
                    var priority = conditional.CurrentPriority(context);
                    if (priority >= 0 && priority < lowestPriority)
                    {
                        selection      = conditional;
                        lowestPriority = priority;
                    }
                }
            }

            var result = new List <OnCondition>();

            if (selection != null)
            {
                result.Add(selection);
            }

            return(Task.FromResult((IReadOnlyList <OnCondition>)result));
        }
 public OnCondition TestCondition(OnCondition conditional)
 {
     conditional.Condition = $"turn.activity.text == '{conditional.GetType().Name}'";
     conditional.Actions.Add(new SendActivity(conditional.GetType().Name));
     return(conditional);
 }
Example #7
0
    IEnumerator ToState(OnCondition state, float time)
    {
        yield return(new WaitForSeconds(time));

        fsm.Feed(state);
    }