using NUnit.Framework;
|
using System.Linq.Expressions;
|
|
namespace DynamicExpresso.UnitTest
|
{
|
[TestFixture]
|
public class WorkingContextTest
|
{
|
[Test]
|
public void Simulate_a_working_context_using_this_keyword()
|
{
|
var workingContext = new { FirstName = "homer" };
|
|
var interpreter = new Interpreter();
|
interpreter.SetVariable("this", workingContext);
|
|
Assert.That(interpreter.Eval("this.FirstName"), Is.EqualTo(workingContext.FirstName));
|
}
|
|
[Test]
|
public void Injection_a_property_expresion_to_simulate_a_working_context_parsing_another_property()
|
{
|
var workingContext = new { FirstName = "homer" };
|
|
var interpreter = new Interpreter();
|
interpreter.SetVariable("this", workingContext);
|
var firstNameExpression = interpreter.Parse("this.FirstName").Expression;
|
interpreter.SetExpression("FirstName", firstNameExpression);
|
|
Assert.That(interpreter.Eval("FirstName"), Is.EqualTo(workingContext.FirstName));
|
}
|
|
[Test]
|
public void Injection_a_property_expresion_to_simulate_a_working_context()
|
{
|
var workingContext = new { FirstName = "homer" };
|
|
var workingContextExpression = Expression.Constant(workingContext);
|
var firstNameExpression = Expression.Property(workingContextExpression, "FirstName");
|
|
var interpreter = new Interpreter();
|
interpreter.SetExpression("FirstName", firstNameExpression);
|
|
Assert.That(interpreter.Eval("FirstName"), Is.EqualTo(workingContext.FirstName));
|
}
|
}
|
}
|