public void WriteCsv_ClassWithNullablePrimitive_RecordsWithNullValues() { var serializer = new CsvSerializerContext(); var converter = new SingleNullableIntValueCsvConverter(); serializer.Converters.Add(converter); var target = new StringWriter(); var writer = new CsvWriter(target, serializer.Configuration); converter.WriteCsvHeader(writer, typeof(SingleNullableIntValue), serializer, new CsvHeaderNamingContext()); writer.NextRecord(); converter.WriteCsv(new SingleNullableIntValue() { Value = 1 }, writer, serializer); writer.NextRecord(); converter.WriteCsv(new SingleNullableIntValue() { Value = null }, writer, serializer); writer.NextRecord(); converter.WriteCsv(new SingleNullableIntValue() { Value = 2 }, writer, serializer); writer.NextRecord(); writer.Dispose(); target.Close(); string[] expected = new string[] { "Value", // header "1", // first record "", // second empty record "2", // third record "" // empty line after the last record }; Assert.AreEqual(String.Join(Environment.NewLine, expected), target.ToString()); }
public void ReadCsv_ClassWithNullablePrimitive_RecordsWithNullValues() { var serializer = new CsvSerializerContext(); var converter = new SingleNullableIntValueCsvConverter(); serializer.Converters.Add(converter); string[] csv = new string[] { "Value", // header "1", // first record "", // second empty record "2", // third record "" // empty line after the last record }; List <SingleNullableIntValue> result = new List <SingleNullableIntValue>(); using (var source = new StringReader(String.Join(Environment.NewLine, csv))) using (var reader = new CsvReader(source, serializer.Configuration)) { var naming = new CsvHeaderNamingContext(); if (reader.Read()) { converter.ReadCsvHeader(reader, serializer); } while (reader.Read()) { result.Add((SingleNullableIntValue)converter.ReadCsv(reader, typeof(SingleNullableIntValue), serializer, naming)); } } Assert.AreEqual(2, result.Count); Assert.IsNotNull(result[0]); Assert.IsTrue(result[0].Value.HasValue); Assert.AreEqual(1, result[0].Value.Value); Assert.IsNotNull(result[1]); Assert.IsTrue(result[1].Value.HasValue); Assert.AreEqual(2, result[1].Value.Value); }