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); }
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); } }
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); }
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); } }