public void RegisteredBooleanTypeProcedureDoesExist() { var engine = new Engine(); var captured = default(Object); TypeProcedures.Register <Boolean>(_ => (args, value) => { captured = value; }); engine.Interpret("true(3) = 5"); TypeFunctions.Unregister <Boolean>(); Assert.AreEqual(5.0, captured); }
public void Invoke(IExecutionContext context) { var value = context.Pop(); var obj = context.Pop(); var function = default(Procedure); var arguments = new Object[_length]; for (var i = 0; i < arguments.Length; i++) { arguments[i] = context.Pop(); } if (obj != null && TypeProcedures.TryFind(obj, out function)) { function.Invoke(arguments, value); } context.Push(value); }