Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 1040fd5

Browse files
committed
More CSV tests
1 parent d965239 commit 1040fd5

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

src/ServiceStack.Text/CsvSerializer.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,11 @@ public static object DeserializeFromStream(Type type, Stream stream)
154154
}
155155
}
156156

157+
public static T DeserializeFromReader<T>(TextReader reader)
158+
{
159+
return DeserializeFromString<T>(reader.ReadToEnd());
160+
}
161+
157162
public static T DeserializeFromString<T>(string text)
158163
{
159164
if (string.IsNullOrEmpty(text)) return default(T);

tests/ServiceStack.Text.Tests/CsvSerializerTests.cs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Collections;
22
using System.Collections.Generic;
3+
using System.IO;
34
using Northwind.Common.DataModel;
45
using NUnit.Framework;
56
using ServiceStack.Text.Tests.Support;
@@ -33,13 +34,31 @@ public void Serialize<T>(T data)
3334
csv.Print();
3435
}
3536

36-
public void SerializeAndDeserialize<T>(T data)
37+
public object SerializeAndDeserialize<T>(T data)
3738
{
3839
var csv = CsvSerializer.SerializeToString(data);
3940
csv.Print();
4041

4142
var dto = CsvSerializer.DeserializeFromString<T>(csv);
43+
AssertEqual(dto, data);
4244

45+
using (var reader = new StringReader(csv))
46+
{
47+
dto = CsvSerializer.DeserializeFromReader<T>(reader);
48+
AssertEqual(dto, data);
49+
}
50+
51+
using (var ms = new MemoryStream(csv.ToUtf8Bytes()))
52+
{
53+
dto = CsvSerializer.DeserializeFromStream<T>(ms);
54+
AssertEqual(dto, data);
55+
}
56+
57+
return dto;
58+
}
59+
60+
private static void AssertEqual<T>(T dto, T data)
61+
{
4362
var dataArray = data is IEnumerable ? (data as IEnumerable).Map(x => x).ToArray() : null;
4463
var dtoArray = dto is IEnumerable ? (dto as IEnumerable).Map(x => x).ToArray() : null;
4564

@@ -102,6 +121,13 @@ public void Can_Serialize_inherited_Movies()
102121
SerializeAndDeserialize(new Movies(MoviesData.Movies));
103122
}
104123

124+
[Test]
125+
public void Does_Serialize_back_into_Array()
126+
{
127+
var dto = SerializeAndDeserialize(MoviesData.Movies.ToArray());
128+
Assert.That(dto.GetType().IsArray);
129+
}
130+
105131
[Test]
106132
public void Can_Serialize_MovieResponse_Dto()
107133
{

0 commit comments

Comments
 (0)