Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions Tests/DateTimeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public void AddDays()
var today = System.DateTime.Today;
var tomorrow = today.AddDays(1);

var expression = Engine.Parse("A + 1");
var expression = Engine.Parse("A + `1`");
expression.Variables["A"].Value = new Interpreter.DateTime(today);

Assert.That(expression.Execute(), Is.EqualTo((Interpreter.DateTime)tomorrow));
Expand All @@ -50,7 +50,7 @@ public void SubtractDays()
var today = System.DateTime.Today;
var yesterday = today.AddDays(-1);

var expression = Engine.Parse("A - 1");
var expression = Engine.Parse("A - `1`");
expression.Variables["A"].Value = new Interpreter.DateTime(today);

Assert.That(expression.Execute(), Is.EqualTo((Interpreter.DateTime)yesterday));
Expand All @@ -66,7 +66,7 @@ public void SubtractDate()
expression.Variables["TODAY"].Value = new Interpreter.DateTime(today);
expression.Variables["YESTERDAY"].Value = new Interpreter.DateTime(yesterday);

Assert.That(expression.Execute(), Is.EqualTo((Interpreter.Number)1));
Assert.That(expression.Execute(), Is.EqualTo((Interpreter.TimeSpan)System.TimeSpan.FromDays(1)));
}

[Test]
Expand Down Expand Up @@ -208,7 +208,7 @@ public void DateTimeDifference()
{
var expression = Engine.Parse("#2000-1-2# - #2000-1-1#");

Assert.That(expression.Execute<Number>(), Is.EqualTo((Number)1));;
Assert.That(expression.Execute<TimeSpan>(), Is.EqualTo((TimeSpan)System.TimeSpan.FromDays(1)));;
}
}
}
56 changes: 43 additions & 13 deletions Tests/EqualityOperatorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,79 +11,109 @@ public class EqualityOperatorTests
[Test]
public void LessThan()
{
Assert.That(Engine.Parse("1 < 2").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("1 < 2").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("#2014-01-01# < #2014-01-02#").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("`8:44` < `9:00`").Execute(), Is.EqualTo((Boolean)true));
}

[Test]
public void NotLessThan()
{
Assert.That(Engine.Parse("2 < 1").Execute(), Is.EqualTo((Boolean)false));
Assert.That(Engine.Parse("2 < 1").Execute(), Is.EqualTo((Boolean)false));
Assert.That(Engine.Parse("#2014-02-01# < #2014-01-02#").Execute(), Is.EqualTo((Boolean)false));
Assert.That(Engine.Parse("`18:44` < `9:00`").Execute(), Is.EqualTo((Boolean)false));
}

[Test]
public void LessThanOrEqualTo()
{
Assert.That(Engine.Parse("1 <= 2").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("1 <= 2").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("#2014-01-01# <= #2014-01-02#").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("`8:44` <= `9:00`").Execute(), Is.EqualTo((Boolean)true));

}

[Test]
public void NotLessThanOrEqualTo()
{
Assert.That(Engine.Parse("2 <= 1").Execute(), Is.EqualTo((Boolean)false));
Assert.That(Engine.Parse("2 <= 1").Execute(), Is.EqualTo((Boolean)false));
Assert.That(Engine.Parse("#2014-02-01# <= #2014-01-02#").Execute(), Is.EqualTo((Boolean)false));
Assert.That(Engine.Parse("`18:44` <= `9:00`").Execute(), Is.EqualTo((Boolean)false));

}

[Test]
public void LessThanOrEqualToWhenEqual()
{
Assert.That(Engine.Parse("2 <= 2").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("2 <= 2").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("#2014-02-01# <= #2014-02-01#").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("`18:44` <= `18:44`").Execute(), Is.EqualTo((Boolean)true));
}

[Test]
public void GreaterThan()
{
Assert.That(Engine.Parse("2 > 1").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("2 > 1").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("#2014-03-01# > #2014-02-01#").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("`00:18:44.435` > `00:18:44`").Execute(), Is.EqualTo((Boolean)true));
}

[Test]
public void NotGreaterThan()
{
Assert.That(Engine.Parse("1 > 2").Execute(), Is.EqualTo((Boolean)false));
Assert.That(Engine.Parse("1 > 2").Execute(), Is.EqualTo((Boolean)false));
Assert.That(Engine.Parse("#2014-03-02# > #2014-03-03#").Execute(), Is.EqualTo((Boolean)false));
Assert.That(Engine.Parse("`00:18:44.435` > `00:18:44.436`").Execute(), Is.EqualTo((Boolean)false));

}

[Test]
public void GreaterThanOrEqualTo()
{
Assert.That(Engine.Parse("1 >= 1").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("1 >= 1").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("#2014-03-01# >= #2014-02-01#").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("`00:18:44.435` >= `00:18:44`").Execute(), Is.EqualTo((Boolean)true));
}

[Test]
public void GreaterThanOrEqualToWhenEqual()
{
Assert.That(Engine.Parse("1 >= 1").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("1 >= 1").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("#2014-03-01# >= #2014-03-01#").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("`00:18:44.435` >= `00:18:44.435`").Execute(), Is.EqualTo((Boolean)true));
}

[Test]
public void EqualTo()
{
Assert.That(Engine.Parse("1 = 1").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("1 = 1").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("#2014-03-01# = #2014-03-01#").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("`00:18:44.435` = `00:18:44.435`").Execute(), Is.EqualTo((Boolean)true));
}

[Test]
public void NotEqualTo()
{
Assert.That(Engine.Parse("1 <> 0").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("1 <> 0").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("#2014-03-01# <> #2014-03-02#").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("`00:18:44.435` <> `00:18:44.425`").Execute(), Is.EqualTo((Boolean)true));
}

[Test]
public void NotEqualToWhenEqual()
{
Assert.That(Engine.Parse("1 <> 1").Execute(), Is.EqualTo((Boolean)false));
Assert.That(Engine.Parse("1 <> 1").Execute(), Is.EqualTo((Boolean)false));
Assert.That(Engine.Parse("#2014-03-01# <> #2014-03-01#").Execute(), Is.EqualTo((Boolean)false));
Assert.That(Engine.Parse("`00:18:44.425` <> `00:18:44.425`").Execute(), Is.EqualTo((Boolean)false));
}

[Test]
public void EqualToWhenNotEqual()
{
Assert.That(Engine.Parse("1 = 2").Execute(), Is.EqualTo((Boolean)false));
Assert.That(Engine.Parse("1 = 2").Execute(), Is.EqualTo((Boolean)false));
Assert.That(Engine.Parse("#2014-03-01# = #2014-03-02#").Execute(), Is.EqualTo((Boolean)false));
Assert.That(Engine.Parse("`00:18:44.435` = `00:18:44.425`").Execute(), Is.EqualTo((Boolean)false));

}

[Test]
Expand Down
4 changes: 2 additions & 2 deletions Tests/FunctionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,9 @@ public void Today()
{
var tomorrow = System.DateTime.Today.AddDays(1);

var expression = Engine.Parse("TODAY() + 1");
var expression = Engine.Parse("TODAY() + `1`"); //Add the one day timespan

Assert.That(expression.Execute(), Is.EqualTo((Interpreter.DateTime)tomorrow));;
Assert.That(expression.Execute(), Is.EqualTo((Interpreter.DateTime)tomorrow));
}

[Test]
Expand Down
14 changes: 12 additions & 2 deletions Tests/LogicalOperatorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,16 @@ public void LogicalAndMathematicalOperator()
public void LogicalOrWithInvalidNumericArgument()
{
Engine.Parse("0 OR true").Execute();
}
}
}

[Test]
public void LogicalXor()
{
Assert.That(Engine.Parse("false XOR false").Execute(), Is.EqualTo((Boolean)false));
Assert.That(Engine.Parse("false XOR true").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("true XOR false").Execute(), Is.EqualTo((Boolean)true));
Assert.That(Engine.Parse("true XOR true").Execute(), Is.EqualTo((Boolean)false));
}

}
}
121 changes: 121 additions & 0 deletions Tests/TimeSpanTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
using NUnit.Framework;

namespace HiSystems.Interpreter.UnitTests {
[TestFixture]
public class TimeSpanTests {
public static Engine Engine = new Engine();

[Test]
public void EqualTo() {
var ts = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(29));

var expression = Engine.Parse("A = B");
expression.Variables["A"].Value = ts;
expression.Variables["B"].Value = ts;

Assert.That(expression.Execute(), Is.EqualTo((Boolean)true));
}

[Test]
public void NotEqualTo() {

var expression = Engine.Parse("A <> B");
expression.Variables["A"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(1));
expression.Variables["B"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(2));

Assert.That(expression.Execute(), Is.EqualTo((Boolean)true));
}

[Test]
public void LessThan() {
var expression = Engine.Parse("A < B");
expression.Variables["A"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(1));
expression.Variables["B"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(2));

Assert.That(expression.Execute(), Is.EqualTo((Boolean)true));
}

[Test]
public void NotLessThan() {
var expression = Engine.Parse("B < A");
expression.Variables["A"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(1));
expression.Variables["B"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(2));

Assert.That(expression.Execute(), Is.EqualTo((Boolean)false));
}

[Test]
public void LessThanOrEqualTo() {
var expression = Engine.Parse("A <= B");
expression.Variables["A"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(1));
expression.Variables["B"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(2));

Assert.That(expression.Execute(), Is.EqualTo((Boolean)true));
}

[Test]
public void NotLessThanOrEqualTo() {
var expression = Engine.Parse("B <= A");
expression.Variables["A"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(1));
expression.Variables["B"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(2));

Assert.That(expression.Execute(), Is.EqualTo((Boolean)false));
}

[Test]
public void GreaterThan() {
var expression = Engine.Parse("B > A");
expression.Variables["A"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(4));
expression.Variables["B"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(9));

Assert.That(expression.Execute(), Is.EqualTo((Boolean)true));
}

[Test]
public void NotGreaterThan() {
var expression = Engine.Parse("A > B");
expression.Variables["A"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(4));
expression.Variables["B"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(9));

Assert.That(expression.Execute(), Is.EqualTo((Boolean)false));
}

[Test]
public void GreaterThanOrEqualTo() {
var expression = Engine.Parse("B >= A");
expression.Variables["A"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(4));
expression.Variables["B"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(9));

Assert.That(expression.Execute(), Is.EqualTo((Boolean)true)); ;
}

[Test]
public void NotGreaterThanOrEqualTo() {
var expression = Engine.Parse("A >= B");
expression.Variables["A"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(4));
expression.Variables["B"].Value = new Interpreter.TimeSpan(System.TimeSpan.FromMinutes(9));

Assert.That(expression.Execute(), Is.EqualTo((Boolean)false)); ;
}

[Test]
public void TimeSpanConstant() {
var spanString = "3.13:45:56.7";

var expression = Engine.Parse("`" + spanString + "`");

Assert.That(expression.Execute<TimeSpan>(), Is.EqualTo((Interpreter.TimeSpan)System.TimeSpan.Parse(spanString))); ;
}

[Test]
public void SubtractTimeSpans() {
Assert.That(Engine.Parse("`1.3:55:00.12345` - `1.1:55:00.12345`").Execute(), Is.EqualTo((TimeSpan)new System.TimeSpan(0,2,0,0)));
}

[Test]
public void AddTimeSpans() {
Assert.That(Engine.Parse("`1.3:00:00` + `1.2:00:00`").Execute(), Is.EqualTo((TimeSpan)new System.TimeSpan(2, 5, 0, 0)));
}

}
}
4 changes: 4 additions & 0 deletions packages/repositories.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<repositories>
<repository path="..\packages.config" />
</repositories>