public void EvaluateFactorialFunction()
{
Context context = new Context();
ICallable factorial = BuildFactorialFunction(context);
context.SetValue("Factorial", factorial);
object result;
result = factorial.Invoke(context, null, new object[] { 3 });
Assert.IsNotNull(result);
Assert.AreEqual(6, result);
result = factorial.Invoke(context, null, new object[] { 4 });
Assert.IsNotNull(result);
Assert.AreEqual(24, result);
result = factorial.Invoke(context, null, new object[] { 5 });
Assert.IsNotNull(result);
Assert.AreEqual(120, result);
}