private void Verify(MemberInvocation memberInvocation) { var verified = false; var candidateVerifiers = this.MemberInvocations.Where(v => v.Name == memberInvocation.Name && v.Parameters.Length == memberInvocation.Parameters.Length); foreach (var candidate in candidateVerifiers) { var allPropertiesAreEqual = true; for (var i = 0; i < candidate.Parameters.Length; i++) { if (candidate.Parameters[i] != memberInvocation.Parameters[i]) { allPropertiesAreEqual = false; break; } } if (allPropertiesAreEqual) { verified = true; break; } } Assert.IsTrue(verified, "Verifying '" + memberInvocation.Name + "' invocation"); }
protected override bool OnInvokeMember <TResult>(MemberInvocation invocation, out TResult result) { var baseResult = base.OnInvokeMember <TResult>(invocation, out result); var candidateHandlers = this.memberInvocationHandlers.Where(h => h.MethodName == invocation.Name && h.ParametersTypes.Length == invocation.Parameters.Length).Reverse(); if (candidateHandlers.Any()) { foreach (var candidate in candidateHandlers) { var isOk = true; for (var i = 0; i < invocation.Parameters.Length; i++) { if (!candidate.ParametersTypes[i].IsAssignableFrom(invocation.Parameters[i].GetType())) { isOk = false; break; } } if (isOk) { candidate.Execute(invocation.Parameters); result = (TResult)candidate.Result; return(true); } } } return(baseResult); }
private bool TryInvokeGetProperty <TResult>(string propertyName, out TResult result) { var memberInvocation = new MemberInvocation { Name = FormatPropertyGetName(propertyName), Parameters = new object[0], IsGetter = true }; return(this.TryInvokeMember(memberInvocation, out result)); }
private bool TryInvokeMember <TResult>(string methodName, object[] args, out Task <TResult> result) { var memberInvocation = new MemberInvocation { Name = methodName, Parameters = args, IsMethod = true }; return(this.TryInvokeMember(memberInvocation, out result)); }
internal void CalledWith(int counter, string methodName, params object[] args) { var memberInvocation = new MemberInvocation { Name = methodName, Parameters = args, IsMethod = true }; Assert.AreEqual(counter, this.memberInvocations.Count(m => memberInvocation.Equals(m)), "Checking '" + methodName + "' has been called " + counter + " times with parameters"); }
internal void CalledWith(string methodName, params object[] args) { var memberInvocation = new MemberInvocation { Name = methodName, Parameters = args, IsMethod = true }; Assert.IsTrue(this.memberInvocations.Any(m => memberInvocation.Equals(m)), "Checking '" + methodName + "' has been called with parameters"); }
private bool TryInvokeSetProperty(string propertyName, object arg) { var memberInvocation = new MemberInvocation { Name = FormatPropertySetName(propertyName), Parameters = new object[] { arg }, IsSetter = true }; bool result; return(this.TryInvokeMember(memberInvocation, out result)); }
protected override bool OnInvokeMember <TResult>(MemberInvocation invocation, out Task <TResult> result) { var isOk = this.OnInvokeMember <Task <TResult> >(invocation, out result); if (result == null) { result = Task.FromResult(default(TResult)); } return(isOk); }
private bool TryInvokeMember <TResult>(MemberInvocation memberInvocation, out Task <TResult> result) { var done = false; result = default(Task <TResult>); try { done = this.OnInvokeMember(memberInvocation, out result); if (done) { this.memberInvocations.Add(memberInvocation); } } catch (Exception ex) { Debug.WriteLine(string.Format("Error invoking '{0}': {1}", memberInvocation.ToString(), ex.Message)); } return(done); }
private void AddVerification(MemberInvocation memberInvocation) { this.memberInvocationVerifiers.Add(memberInvocation); }
protected virtual bool OnInvokeMember <TResult>(MemberInvocation invocation, out Task <TResult> result) { result = Task.FromResult(default(TResult)); return(true); }
protected virtual bool OnInvokeMember <TResult>(MemberInvocation invocation, out TResult result) { result = default(TResult); return(true); }