예제 #1
0
        public async Task InvokeAsync(IMiddlewareContext context)
        {
            DelegateDirective delegateDirective = context.Field
                                                  .Directives[DirectiveNames.Delegate]
                                                  .FirstOrDefault()?.ToObject <DelegateDirective>();

            if (delegateDirective != null)
            {
                IImmutableStack <SelectionPathComponent> path =
                    delegateDirective.Path is null
                    ? ImmutableStack <SelectionPathComponent> .Empty
                    : SelectionPathParser.Parse(delegateDirective.Path);

                IReadOnlyQueryRequest request =
                    CreateQuery(context, delegateDirective.Schema, path);

                IReadOnlyQueryResult result = await ExecuteQueryAsync(
                    context, request, delegateDirective.Schema)
                                              .ConfigureAwait(false);

                UpdateContextData(context, result, delegateDirective);

                context.Result = new SerializedData(
                    ExtractData(result.Data, path.Count()));
                ReportErrors(context, result.Errors);
            }

            await _next.Invoke(context).ConfigureAwait(false);
        }
예제 #2
0
        public static void ReadPrimitiveIImmutableStackT()
        {
            IImmutableStack <int> result = JsonSerializer.Parse <IImmutableStack <int> >(Encoding.UTF8.GetBytes(@"[1,2]"));
            int expected = 2;

            foreach (int i in result)
            {
                Assert.Equal(expected--, i);
            }

            result = JsonSerializer.Parse <IImmutableStack <int> >(Encoding.UTF8.GetBytes(@"[]"));
            Assert.Equal(0, result.Count());
        }
        public void DeserializeStackInterface()
        {
            string json = @"[
  ""One"",
  ""II"",
  ""3""
]";

            IImmutableStack <string> l = JsonConvert.DeserializeObject <IImmutableStack <string> >(json);

            Assert.AreEqual(3, l.Count());
            Assert.AreEqual("3", l.ElementAt(0));
            Assert.AreEqual("II", l.ElementAt(1));
            Assert.AreEqual("One", l.ElementAt(2));
        }
        public static void ReadPrimitiveIImmutableStackT()
        {
            IImmutableStack <int> result = JsonSerializer.Deserialize <IImmutableStack <int> >(Encoding.UTF8.GetBytes(@"[1,2]"));
            int expected = 2;

            foreach (int i in result)
            {
                Assert.Equal(expected--, i);
            }

            result = JsonSerializer.Deserialize <IImmutableStack <int> >(Encoding.UTF8.GetBytes(@"[]"));
            Assert.Equal(0, result.Count());

            Assert.Throws <JsonException>(() => JsonSerializer.Deserialize <StringIImmutableStackWrapper>(@"[""1"",""2""]"));
            Assert.Throws <JsonException>(() => JsonSerializer.Deserialize <StringIImmutableStackWrapper>(@"[]"));
        }
예제 #5
0
        public async Task ReadPrimitiveIImmutableStackT()
        {
            IImmutableStack <int> result = await JsonSerializerWrapperForString.DeserializeWrapper <IImmutableStack <int> >(@"[1,2]");

            int expected = 2;

            foreach (int i in result)
            {
                Assert.Equal(expected--, i);
            }

            result = await JsonSerializerWrapperForString.DeserializeWrapper <IImmutableStack <int> >(@"[]");

            Assert.Equal(0, result.Count());

            await Assert.ThrowsAsync <NotSupportedException>(async() => await JsonSerializerWrapperForString.DeserializeWrapper <StringIImmutableStackWrapper>(@"[""1"",""2""]"));

            await Assert.ThrowsAsync <NotSupportedException>(async() => await JsonSerializerWrapperForString.DeserializeWrapper <StringIImmutableStackWrapper>(@"[]"));
        }