public async Task ReadObjectAsync_AfterObject_GetsNextProperty()
        {
            // Arrange

            using var stream = ResourceHelper.ReadResourceAsStream(@"Documents\Query\query-n1ql-error-response-400.json");

            using var reader = new DefaultJsonStreamReader(stream, CreateDefaultJsonSerializer());

            Assert.True(await reader.InitializeAsync());

            // Act

            await reader.ReadToNextAttributeAsync();

            await reader.ReadToNextAttributeAsync();

            await reader.ReadObjectsAsync <dynamic>().ToListAsync();

            await reader.ReadToNextAttributeAsync();

            await reader.ReadToNextAttributeAsync();

            await reader.ReadObjectAsync <MetricsData>();

            var result = await reader.ReadToNextAttributeAsync();

            // Assert

            Assert.Null(result);
        }
示例#2
0
        public async Task ReadObjectAsync_HasDateTimeOffsetAttribute_PreservesTimeZone(DateParseHandling handling)
        {
            {
                using var stream = new MemoryStream(
                          System.Text.Encoding.UTF8.GetBytes("{\"value\":\"2021-06-21T10:16:56.9714243+10:00\"}"));

                var serializer = CreateDefaultJsonSerializer();
                serializer.DateParseHandling = handling;
                using var reader             = new DefaultJsonStreamReader(stream, serializer);
                Assert.True(await reader.InitializeAsync());

                var value = await reader.ReadObjectAsync <JsonDocument>();

                Assert.Equal(10, value.Value.Offset.Hours);
            }
            {
                // check again, just in case the test was run in the +10 timezone and would have given a false positive.
                using var stream = new MemoryStream(
                          System.Text.Encoding.UTF8.GetBytes("{\"value\":\"2021-06-21T10:16:56.9714243-8:00\"}"));

                var serializer = CreateDefaultJsonSerializer();
                serializer.DateParseHandling = handling;
                using var reader             = new DefaultJsonStreamReader(stream, serializer);
                Assert.True(await reader.InitializeAsync());

                var value = await reader.ReadObjectAsync <JsonDocument>();

                Assert.Equal(-8, value.Value.Offset.Hours);
            }
        }
示例#3
0
        public async Task ReadObjectAsync_NotOnObject_InvalidOperationException()
        {
            // Arrange

            using var stream = ResourceHelper.ReadResourceAsStream(@"Documents\Query\query-n1ql-error-response-400.json");

            using var reader = new DefaultJsonStreamReader(stream, CreateDefaultJsonSerializer());

            Assert.True(await reader.InitializeAsync());

            // Act/Assert

            await reader.ReadToNextAttributeAsync();

            await Assert.ThrowsAsync <InvalidOperationException>(() => reader.ReadObjectAsync <dynamic>());
        }
        public async Task ReadObjectAsync_OnNumber_ReadsNumber()
        {
            // Arrange

            using var stream = new MemoryStream(
                      System.Text.Encoding.UTF8.GetBytes("{\"value\":0.105}"));

            using var reader = new DefaultJsonStreamReader(stream, CreateDefaultJsonSerializer());

            Assert.True(await reader.InitializeAsync());

            // Act/Assert

            await reader.ReadToNextAttributeAsync();

            var value = await reader.ReadObjectAsync <double>();

            Assert.Equal(0.105, value);
        }
示例#5
0
        public async Task ReadObjectAsync_OnDateTimeOffset_PreservesTimeZone()
        {
            // Note: this emulates a "SELECT RAW" query returning a DateTimeOffset value, and currently requires
            // that the serializer be set to DateParseHandling.DateTimeOffset. It will fail with DateParseHandling.DateTime.

            {
                using var stream = new MemoryStream(
                          System.Text.Encoding.UTF8.GetBytes("{\"value\":\"2021-06-21T10:16:56.9714243+10:00\"}"));

                var serializer = CreateDefaultJsonSerializer();
                serializer.DateParseHandling = DateParseHandling.DateTimeOffset;
                using var reader             = new DefaultJsonStreamReader(stream, serializer);
                Assert.True(await reader.InitializeAsync());


                await reader.ReadToNextAttributeAsync();

                var value = await reader.ReadObjectAsync <DateTimeOffset>();

                Assert.Equal(10, value.Offset.Hours);
            }
            {
                // check again, just in case the test was run in the +10 timezone and would have given a false positive.
                using var stream = new MemoryStream(
                          System.Text.Encoding.UTF8.GetBytes("{\"value\":\"2021-06-21T10:16:56.9714243-8:00\"}"));

                var serializer = CreateDefaultJsonSerializer();
                serializer.DateParseHandling = DateParseHandling.DateTimeOffset;
                using var reader             = new DefaultJsonStreamReader(stream, serializer);
                Assert.True(await reader.InitializeAsync());


                await reader.ReadToNextAttributeAsync();

                var value = await reader.ReadObjectAsync <DateTimeOffset>();

                Assert.Equal(-8, value.Offset.Hours);
            }
        }