protected virtual async Task <DialogTurnResult> NextItemAsync(DialogContext dc, CancellationToken cancellationToken = default) { // Get list information var itemsProperty = new ExpressionEngine().Parse(this.ItemsProperty); var(itemList, error) = itemsProperty.TryEvaluate(dc.GetState()); var list = JArray.FromObject(itemList); var index = dc.GetState().GetIntValue(INDEX); // Next item if (++index < list.Count) { // Persist index and value dc.GetState().SetValue(VALUE, list[index]); dc.GetState().SetValue(INDEX, index); // Start loop return(await this.BeginActionAsync(dc, 0, cancellationToken).ConfigureAwait(false)); } else { // End of list has been reached return(await dc.EndDialogAsync(cancellationToken : cancellationToken).ConfigureAwait(false)); } }
public void TEST_002( ) { var expression = "2^(3^2)"; // => 2^9 => 512 var expressionEngine = new ExpressionEngine(); Assert.AreEqual(512, expressionEngine.Evaluate(expression)); }
public override async Task <DialogTurnResult> BeginDialogAsync(DialogContext dc, object options = null, CancellationToken cancellationToken = default(CancellationToken)) { if (options is CancellationToken) { throw new ArgumentException($"{nameof(options)} cannot be a cancellation token"); } object eventValue = null; if (this.EventValue != null) { eventValue = new ExpressionEngine().Parse(this.EventValue).TryEvaluate(dc.GetState()); } if (dc.Parent == null) { return(await dc.CancelAllDialogsAsync(true, EventName, eventValue, cancellationToken).ConfigureAwait(false)); } else { var turnResult = await dc.Parent.CancelAllDialogsAsync(true, EventName, eventValue, cancellationToken).ConfigureAwait(false); turnResult.ParentEnded = true; return(turnResult); } }
public void TEST_004( ) { var expression = "2^3^2"; // => 2^(3^2) => 2^9 => 512 should be same value as test #2 var expressionEngine = new ExpressionEngine(); Assert.AreEqual(512, expressionEngine.Evaluate(expression)); }
public void TEST_003( ) { var expression = "(2^3)^2"; // => 8 ^ 2 => 64 var expressionEngine = new ExpressionEngine(); Assert.AreEqual(64, expressionEngine.Evaluate(expression)); }
public void TEST_006( ) { var expression = "(2^3!)^2"; var expressionEngine = new ExpressionEngine(); Assert.AreEqual(4096, expressionEngine.Evaluate(expression)); }
public void TEST_005( ) { var expression = "2^3!^2"; //=> 2^( (3*2) ^ 2 ) => 2^(6^2) => 2^36 var expressionEngine = new ExpressionEngine(); Assert.AreEqual(68719476736, expressionEngine.Evaluate(expression)); }
public void TEST_001( ) { var expression = "2^3"; var expressionEngine = new ExpressionEngine(); Assert.AreEqual(8, expressionEngine.Evaluate(expression)); }
public void Not_A_Valid_Expression( ) { var expression = "(1 + 2))"; var evalEngine = new ExpressionEngine(); Assert.AreEqual(3, evalEngine.Evaluate(expression)); }
public void FP_Test_001( ) { var expression = "1 + 1e5"; var evalEngine = new ExpressionEngine(); Assert.AreEqual(100001, evalEngine.Evaluate(expression)); }
private void AssertResult <T>(string text, T expected) { var memory = new object(); var(result, error) = new ExpressionEngine().Parse(text).TryEvaluate <T>(memory); Assert.AreEqual(expected, result); Assert.IsNull(error); }
public void Negate_Test( ) { var expression = "-3 * (2 + 1)"; var evalEngine = new ExpressionEngine(); Assert.AreEqual(-9, evalEngine.Evaluate(expression)); }
public void Test_001( ) { var expression = "5!"; var evalEngine = new ExpressionEngine(); Assert.AreEqual(120, evalEngine.Evaluate(expression)); }
public void SubExpression_Test_001() { var expression = "3 * (2 + 1)"; var evalEngine = new ExpressionEngine(); Assert.AreEqual(9, evalEngine.Evaluate(expression)); }
public Evaluator(List <LGTemplate> templates, ExpressionEngine expressionEngine) { Templates = templates; TemplateMap = templates.ToDictionary(x => x.Name); // generate a new customzied expression engine by injecting the template as functions ExpressionEngine = new ExpressionEngine(CustomizedEvaluatorLookup(expressionEngine.EvaluatorLookup)); }
public void Evaluate(string input, string expected) { var parser = new ExpressionEngine(Lookup); var original = parser.Parse(input); var dnf = original.DisjunctiveNormalForm(); var expectedDnf = parser.Parse(expected); Assert.IsTrue(dnf.DeepEquals(expectedDnf), $"{original} is {dnf}, not {expectedDnf}"); }
public void EvaluateExponent1() { var expression = "2^3"; var ee = new ExpressionEngine(); var result = ee.Evaluate(expression); Assert.AreEqual(8, result); }
public void EvaluateInvalidTest() { var expression = "(1 + 2))"; var ee = new ExpressionEngine(); var result = ee.Evaluate(expression); Assert.AreEqual(3, result); }
public void EvaluateSubExpressions() { var expression = "3 * (2 + 1)"; var ee = new ExpressionEngine(); var result = ee.Evaluate(expression); Assert.AreEqual(9, result); }
public void EvaluateDecimal() { var expression = "1 + 1e5"; var ee = new ExpressionEngine(); var result = ee.Evaluate(expression); Assert.AreEqual(100001, result); }
public void EvaluateNegation() { var expression = "-3 * (2 + 1)"; var ee = new ExpressionEngine(); var result = ee.Evaluate(expression); Assert.AreEqual(-9, result); }
public void EvaluateTest() { var expression = "1 + 2 * 3"; var ee = new ExpressionEngine(); var result = ee.Evaluate(expression); Assert.AreEqual(7, result); }
/// <summary> /// Initializes a new instance of the <see cref="Expander"/> class. /// </summary> /// <param name="templates">template list.</param> /// <param name="expressionEngine">Given expression engine.</param> public Expander(List <LGTemplate> templates, ExpressionEngine expressionEngine) { Templates = templates; TemplateMap = templates.ToDictionary(x => x.Name); // generate a new customized expression engine by injecting the template as functions this.expanderExpressionEngine = new ExpressionEngine(CustomizedEvaluatorLookup(expressionEngine.EvaluatorLookup, true)); this.evaluatorExpressionEngine = new ExpressionEngine(CustomizedEvaluatorLookup(expressionEngine.EvaluatorLookup, false)); }
public void EvaluateExponent6() { var expression = "(2^3!)^2"; var ee = new ExpressionEngine(); var result = ee.Evaluate(expression); Assert.AreEqual(4096, result); }
public void EvaluateFactorial1() { var expression = "5!"; var ee = new ExpressionEngine(); var result = ee.Evaluate(expression); Assert.AreEqual(120, result); }
public void EvaluateExponent5() { var expression = "2^3!^2"; var ee = new ExpressionEngine(); var result = ee.Evaluate(expression); Assert.AreEqual(68719476736, result); }
public void Initialize(IEnumerable<OnCondition> conditionals, bool evaluate) { var i = 0; var parser = new ExpressionEngine(TriggerTree.LookupFunction); foreach (var conditional in conditionals) { _tree.AddTrigger(conditional.GetExpression(parser), (i, conditional)); ++i; } }
public Analyzer(List <LGTemplate> templates, ExpressionEngine expressionEngine) { Templates = templates; templateMap = templates.ToDictionary(t => t.Name); // create an evaluator to leverage it's customized function look up for checking var evaluator = new Evaluator(Templates, expressionEngine); this._expressionParser = evaluator.ExpressionEngine; }
/// <summary> /// Parser to turn lg content into a <see cref="LGFile"/>. /// </summary> /// <param name="filePath"> absolut path of a LG file.</param> /// <param name="importResolver">resolver to resolve LG import id to template text.</param> /// <param name="expressionEngine">expressionEngine Expression engine for evaluating expressions.</param> /// <returns>new <see cref="LGFile"/> entity.</returns> public static LGFile ParseFile( string filePath, ImportResolverDelegate importResolver = null, ExpressionEngine expressionEngine = null) { var fullPath = Path.GetFullPath(filePath.NormalizePath()); var content = File.ReadAllText(fullPath); return(ParseText(content, fullPath, importResolver, expressionEngine)); }
public void Test0() { var expression = "2 x"; var variables = new { x = 5 }; var ee = new ExpressionEngine(); var result = ee.Evaluate(expression, variables); Assert.AreEqual(10, result); }