public async Task Should_write_JSON_array_with_correct_elements() { // Arrange var faker = new Faker(); var elements = faker.Random.WordsArray(10); var asyncEnumerableElements = new AsyncEnumerableList <string>(); asyncEnumerableElements.AddRange(elements); var expected = JsonConvert.SerializeObject(elements); var sut = new ConverterImplementation <string>(typeof(AsyncEnumerableList <string>)); // Act var buffer = new StringWriter(); await sut.WriteJsonAsync(new JsonTextWriter(buffer), asyncEnumerableElements); var actual = buffer.ToString(); // Assert actual.Should().Be(expected); }
public void Should_read_JSON_array_into_constructor_using_IEnumerable_or_IAsyncEnumerable(Type collectionType) { // Arrange var faker = new Faker(); var elements = faker.Random.WordsArray(10); var serializer = new JsonSerializer(); var jsonBuffer = new StringWriter(); serializer.Serialize(new JsonTextWriter(jsonBuffer), elements); var json = jsonBuffer.ToString(); var sut = new ConverterImplementation <string>(collectionType); var reader = new JsonTextReader(new StringReader(json)); reader.Read().Should().BeTrue(); reader.TokenType.Should().Be(JsonToken.StartArray); // Act var result = sut.ConstructFromJson(reader, serializer); // Assert result.Should().BeOfType(collectionType); var resultList = ((TestCollectionTypes.ConstructWithIEnumerable)result).Data; resultList.Should().BeEquivalentTo(elements); }
public void Should_detect_repeated_enumeration_when_reading_JSON_array_into_constructor_using_IEnumerable_or_IAsyncEnumerable(Type collectionType) { // Arrange var faker = new Faker(); var elements = faker.Random.WordsArray(10); var serializer = new JsonSerializer(); var jsonBuffer = new StringWriter(); serializer.Serialize(new JsonTextWriter(jsonBuffer), elements); var json = jsonBuffer.ToString(); var sut = new ConverterImplementation <string>(collectionType); var reader = new JsonTextReader(new StringReader(json)); reader.Read().Should().BeTrue(); reader.TokenType.Should().Be(JsonToken.StartArray); // Act & Assert Assert.Throws <JsonSerializationException>( () => { sut.ConstructFromJson(reader, serializer); }); }
public void Should_read_JSON_array_into_existing_ICollection_object() { // Arrange var faker = new Faker(); var elements = faker.Random.WordsArray(10); var serializer = new JsonSerializer(); var jsonBuffer = new StringWriter(); serializer.Serialize(new JsonTextWriter(jsonBuffer), elements); var json = jsonBuffer.ToString(); var sut = new ConverterImplementation <string>(typeof(AsyncEnumerableList <string>)); var reader = new JsonTextReader(new StringReader(json)); reader.Read().Should().BeTrue(); reader.TokenType.Should().Be(JsonToken.StartArray); var existingValue = new AsyncEnumerableList <string>(); // Act var result = sut.ReadJson(reader, existingValue, serializer); // Assert result.Should().BeSameAs(existingValue); existingValue.Should().BeEquivalentTo(elements); }
public void Should_determine_CanConstruct(bool expected, Type collectionType, string collectionTypeDescription) { // Arrange var sut = new ConverterImplementation <string>(collectionType); // Act var actual = sut.CanConstruct; // Assert actual.Should().Be(expected, $"CanRead should be {expected} for {collectionTypeDescription}"); }