private void AddInvocation(JsRuntimeInvocation invocation)
 {
     if (!_invocations.ContainsKey(invocation.Identifier))
     {
         _invocations.Add(invocation.Identifier, new List <JsRuntimeInvocation>());
     }
     _invocations[invocation.Identifier].Add(invocation);
 }
            public ValueTask <TValue> InvokeAsync <TValue>(string identifier, CancellationToken cancellationToken, object[] args)
            {
                var invocation = new JsRuntimeInvocation(identifier, cancellationToken, args);

                _handlers.AddInvocation(invocation);

                return(TryHandlePlannedInvocation <TValue>(identifier, invocation)
                       ?? new ValueTask <TValue>(default(TValue) !));
            }
示例#3
0
 public void Test002(JsRuntimeInvocation left, JsRuntimeInvocation right, bool expectedResult)
 {
     left.Equals(right).ShouldBe(expectedResult);
     right.Equals(left).ShouldBe(expectedResult);
     (left == right).ShouldBe(expectedResult);
     (left != right).ShouldNotBe(expectedResult);
     left.Equals((object)right).ShouldBe(expectedResult);
     right.Equals((object)left).ShouldBe(expectedResult);
 }
示例#4
0
        public static IEnumerable <object[]> GetEqualsTestData()
        {
            var token = new CancellationToken(true);
            var args  = new object[] { 1, "baz" };

            var i1 = new JsRuntimeInvocation("foo", token, args);
            var i2 = new JsRuntimeInvocation("foo", token, args);
            var i3 = new JsRuntimeInvocation("bar", token, args);
            var i4 = new JsRuntimeInvocation("foo", CancellationToken.None, args);
            var i5 = new JsRuntimeInvocation("foo", token, Array.Empty <object>());
            var i6 = new JsRuntimeInvocation("foo", token, new object[] { 2, "woop" });

            yield return(new object[] { i1, i1, true });

            yield return(new object[] { i1, i2, true });

            yield return(new object[] { i1, i3, false });

            yield return(new object[] { i1, i4, false });

            yield return(new object[] { i1, i5, false });

            yield return(new object[] { i1, i6, false });
        }
            private ValueTask <TValue>?TryHandlePlannedInvocation <TValue>(string identifier, JsRuntimeInvocation invocation)
            {
                ValueTask <TValue>?result = default;

                if (_handlers._plannedInvocations.TryGetValue(identifier, out var plannedInvocations))
                {
                    var planned = plannedInvocations.OfType <JsRuntimePlannedInvocationBase <TValue> >()
                                  .SingleOrDefault(x => x.Matches(invocation));

                    if (planned is { })
 /// <summary>
 /// Creates a new instance of the <see cref="UnplannedJsInvocationException"/>
 /// with the provided <see cref="Invocation"/> attached.
 /// </summary>
 /// <param name="invocation">The unplanned invocation.</param>
 public UnplannedJsInvocationException(JsRuntimeInvocation invocation)
     : base($"The invocation of '{invocation.Identifier}' {PrintArguments(invocation.Arguments)} was not expected.")
 {
     Invocation = invocation;
 }
示例#7
0
 internal bool Matches(JsRuntimeInvocation invocation)
 {
     return(Identifier.Equals(invocation.Identifier, StringComparison.Ordinal) &&
            InvocationMatcher(invocation.Arguments));
 }
示例#8
0
 internal Task <TResult> RegisterInvocation(JsRuntimeInvocation invocation)
 {
     _invocations.Add(invocation);
     return(_completionSource.Task);
 }
示例#9
0
 public void Test004(JsRuntimeInvocation left, JsRuntimeInvocation right, bool expectedResult)
 {
     left.GetHashCode().Equals(right.GetHashCode()).ShouldBe(expectedResult);
 }