Add e to calculator (#9124)

* Add support for e

* Add tests for e

* Fix compiler complaints
This commit is contained in:
Pavel Zwerschke
2021-01-19 18:04:15 +01:00
committed by GitHub
parent 2311c3fc18
commit 6835855c66
2 changed files with 13 additions and 1 deletions

View File

@@ -35,6 +35,7 @@ namespace Microsoft.Plugin.Calculator.UnitTests
[TestCase("42")]
[TestCase("test")]
[TestCase("pi(2)")] // Incorrect input, constant is being treated as a function.
[TestCase("e(2)")]
public void Interpret_NoResult_WhenCalled(string input)
{
// Arrange
@@ -62,6 +63,9 @@ namespace Microsoft.Plugin.Calculator.UnitTests
[TestCase("8.43 + 4.43 - 12.86", 0D)]
[TestCase("8.43 + 4.43 - 12.8", 0.06D)]
[TestCase("exp(5)", 148.413159102577D)]
[TestCase("e^5", 148.413159102577D)]
[TestCase("e*2", 5.43656365691809D)]
[TestCase("log(e)", 1D)]
[TestCase("cosh(0)", 1D)]
public void Interpret_NoErrors_WhenCalledWithRounding(string input, decimal expectedResult)
{

View File

@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.
using System;
using System.Collections.Generic;
using System.Globalization;
using Mages.Core;
@@ -10,7 +11,14 @@ namespace Microsoft.Plugin.Calculator
{
public class CalculateEngine
{
private readonly Engine _magesEngine = new Engine();
private readonly Engine _magesEngine = new Engine(new Configuration
{
Scope = new Dictionary<string, object>
{
{ "e", Math.E }, // e is not contained in the default mages engine
},
});
public const int RoundingDigits = 10;
public CalculateResult Interpret(string input)