/// <summary> /// Initializes a new instance of the <see cref="EvaluationContext"/> class. /// </summary> /// <param name="ignoreEvaluationExceptions">If set to <c>true</c>, ignores evaluation exceptions.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <param name="identifierComparer">The identifier comparer.</param> /// <param name="objectFormatter">The object formatter.</param> /// <param name="selfObject">The <c>self</c> object that exposes all global identifiers.</param> /// <param name="unParsedTextHandler">The un-parsed text handler delegate.</param> public EvaluationContext( bool ignoreEvaluationExceptions, CancellationToken cancellationToken, [NotNull] IEqualityComparer <string> identifierComparer, [NotNull] IObjectFormatter objectFormatter, [CanBeNull] object selfObject, [NotNull] Func <IExpressionEvaluationContext, string, string> unParsedTextHandler) { Expect.NotNull(nameof(identifierComparer), identifierComparer); Expect.NotNull(nameof(objectFormatter), objectFormatter); Expect.NotNull(nameof(unParsedTextHandler), unParsedTextHandler); CancellationToken = cancellationToken; _identifierComparer = identifierComparer; _objectFormatter = objectFormatter; IgnoreEvaluationExceptions = ignoreEvaluationExceptions; _unParsedTextHandler = unParsedTextHandler; _selfObject = selfObject; _disembowelers = new Dictionary <Type, SimpleTypeDisemboweler>(); _frames = new Stack <Frame>(); _dynamicInvoker = new SimpleDynamicInvoker(); OpenEvaluationFrame(); }
public void InvokeReturnsNullForNonExistentMethod() { var invoker = new SimpleDynamicInvoker(); var result = invoker.Invoke(this, "Fake"); Assert.IsNull(result); }
public void InvokeCallsTheMatchingMethod() { var invoker = new SimpleDynamicInvoker(); var result = invoker.Invoke(this, nameof(MatchArgumentMethod), new object[] { "100", false }); Assert.AreEqual(102, result); }
public void InvokeThrowsErrorIfMemberHasInvalidFormat() { var invoker = new SimpleDynamicInvoker(); Assert.Throws <ArgumentNullException>(() => invoker.Invoke(this, null)); Assert.Throws <ArgumentException>(() => invoker.Invoke(this, "")); Assert.Throws <ArgumentException>(() => invoker.Invoke(this, " broken ")); }
public void InvokeFailsToMatchWithImpreciseArguments2() { var invoker = new SimpleDynamicInvoker(); var result = invoker.Invoke(this, nameof(MatchArgumentMethod), new object[] { "arg1", 1 }); Assert.IsNull(result); }
public void GetValueReturnsTheValueOfProperty() { var invoker = new SimpleDynamicInvoker(); var result = invoker.GetValue(this, nameof(PublicProperty)); Assert.AreEqual(nameof(PublicProperty), result); }
public void GetValueReturnsNullIfMemberIsNotAccessible() { var invoker = new SimpleDynamicInvoker(); var result = invoker.GetValue(this, nameof(_privateField)); Assert.IsNull(result); }
public void InvokeThrowsErrorIfArgsCountGreaterThanFourteen() { var invoker = new SimpleDynamicInvoker(); var args = Enumerable.Range(0, 15).Cast <object>().ToArray(); Assert.Throws <ArgumentOutOfRangeException>(() => invoker.Invoke(this, "property", args)); }
public void GetValueReturnsTrulyDynamicPropertyValue() { var invoker = new SimpleDynamicInvoker(); dynamic expando = new ExpandoObject(); expando.Property = 100; var result = invoker.GetValue(expando, nameof(expando.Property)); Assert.AreEqual(expando.Property, result); }
public void InvokeCallsTheFullArgumentMethod() { var invoker = new SimpleDynamicInvoker(); var args = new object[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14" }; var result = invoker.Invoke( this, nameof(FullArgumentMethod), args); Assert.AreEqual(string.Join("-", args), result); }
public void GetValueReturnsNullIfObjectIsNull() { var invoker = new SimpleDynamicInvoker(); Assert.IsNull(invoker.GetValue(null, "property")); }
public void InvokeLeaksException() { var invoker = new SimpleDynamicInvoker(); Assert.Throws <ArgumentException>(() => invoker.Invoke(this, nameof(ThrowException))); }