Skip to content

Commit

Permalink
(FabianNitsche) Interpreter constants fix pieterderycke#72
Browse files Browse the repository at this point in the history
  • Loading branch information
mrxrsd committed Feb 7, 2021
1 parent 6da2088 commit bbba562
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 2 deletions.
26 changes: 26 additions & 0 deletions Jace.Tests/DecimalCalculationEngineTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -588,6 +588,32 @@ public void TestVariableCaseFuncInterpreted()
decimal result = formula(variables);
}

[TestMethod]
public void TestConstantBuildCompiled()
{
var engine = CreateEngineHelper<decimal>(CultureInfo.InvariantCulture, ExecutionMode.Compiled);
Func<Dictionary<string, decimal>, decimal> formula = engine.Build("pi");

var variables = new Dictionary<string, decimal>();

decimal result = formula(variables);

Assert.AreEqual((decimal) Math.PI , result);
}

[TestMethod]
public void TestConstantBuildInterpreted()
{
var engine = CreateEngineHelper<decimal>(CultureInfo.InvariantCulture, ExecutionMode.Interpreted);
Func<Dictionary<string, decimal>, decimal> formula = engine.Build("pi");

Dictionary<string, decimal> variables = new Dictionary<string, decimal>();

decimal result = formula(variables);

Assert.AreEqual((decimal)Math.PI, result);
}

[TestMethod]
public void TestVariableCaseFuncCompiled()
{
Expand Down
26 changes: 26 additions & 0 deletions Jace.Tests/DoubleCalculationEngineTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -588,6 +588,32 @@ public void TestVariableCaseFuncInterpreted()
double result = formula(variables);
}

[TestMethod]
public void TestConstantBuildCompiled()
{
var engine = CreateEngineHelper<double>(CultureInfo.InvariantCulture, ExecutionMode.Compiled);
Func<Dictionary<string, double>, double> formula = engine.Build("pi");

var variables = new Dictionary<string, double>();

double result = formula(variables);

Assert.AreEqual(Math.PI, result);
}

[TestMethod]
public void TestConstantBuildInterpreted()
{
var engine = CreateEngineHelper<double>(CultureInfo.InvariantCulture, ExecutionMode.Interpreted);
Func<Dictionary<string, double>, double> formula = engine.Build("pi");

Dictionary<string, double> variables = new Dictionary<string, double>();

double result = formula(variables);

Assert.AreEqual(Math.PI, result);
}

[TestMethod]
public void TestVariableCaseFuncCompiled()
{
Expand Down
7 changes: 5 additions & 2 deletions Jace/Execution/Interpreter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,11 @@ public T Execute(Operation operation,

if (variableFound)
return value;
else
throw new VariableNotDefinedException(string.Format("The variable \"{0}\" used is not defined.", variable.Name));

if (constantRegistry.IsConstantName(variable.Name))
return constantRegistry.GetConstantInfo(variable.Name).Value;

throw new VariableNotDefinedException(string.Format("The variable \"{0}\" used is not defined.", variable.Name));
}
else if (operation.GetType() == typeof(Multiplication))
{
Expand Down

0 comments on commit bbba562

Please sign in to comment.