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()); }
private static OnCondition AddActions(OnCondition trigger) { trigger.Actions = new List <Dialog>() { new SendActivity(trigger.GetType().Name) }; return(trigger); }
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); }
IEnumerator ToState(OnCondition state, float time) { yield return(new WaitForSeconds(time)); fsm.Feed(state); }