forked from ServiceStack/ServiceStack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathReflectionExtensionsTests.cs
More file actions
82 lines (70 loc) · 2.38 KB
/
ReflectionExtensionsTests.cs
File metadata and controls
82 lines (70 loc) · 2.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using System.Collections.Generic;
using NUnit.Framework;
using ServiceStack.Common.Extensions;
using ServiceStack.ServiceInterface.ServiceModel;
namespace ServiceStack.Common.Tests
{
public enum UserFileType
{
DefaultProfile,
OriginalProfile,
Profile75X75,
Profile66X66,
Profile63X63,
}
public class TestClassA
{
public IList<string> ToStringList { get; set; }
public ArrayOfString FromStringList { get; set; }
public IList<UserFileType> FromUserFileTypes { get; set; }
}
public class TestClassB
{
public ArrayOfString ToStringList { get; set; }
public IList<string> FromStringList { get; set; }
public ArrayOfString FromUserFileTypes { get; set; }
}
[TestFixture]
public class ReflectionExtensionsTests
{
[Test]
public void Can_translate_generic_lists()
{
var values = new[] { "A", "B", "C" };
var testA = new TestClassA {
FromStringList = new ArrayOfString(values),
ToStringList = new List<string>(values),
FromUserFileTypes = new List<UserFileType>
{
UserFileType.DefaultProfile, UserFileType.OriginalProfile
},
};
var fromTestA = testA.TranslateTo<TestClassB>();
AssertAreEqual(testA, fromTestA);
var userFileTypeValues = testA.FromUserFileTypes.ConvertAll(x => x.ToString());
var testB = new TestClassB {
FromStringList = new List<string>(values),
ToStringList = new ArrayOfString(values),
FromUserFileTypes = new ArrayOfString(userFileTypeValues),
};
var fromTestB = testB.TranslateTo<TestClassA>();
AssertAreEqual(fromTestB, testB);
}
private static void AssertAreEqual(TestClassA testA, TestClassB testB)
{
Assert.That(testA, Is.Not.Null);
Assert.That(testB, Is.Not.Null);
Assert.That(testA.FromStringList, Is.Not.Null);
Assert.That(testB.FromStringList, Is.Not.Null);
Assert.That(testA.FromStringList,
Is.EquivalentTo(new List<string>(testB.FromStringList)));
Assert.That(testA.ToStringList, Is.Not.Null);
Assert.That(testB.ToStringList, Is.Not.Null);
Assert.That(testA.ToStringList, Is.EquivalentTo(testB.ToStringList));
Assert.That(testA.FromUserFileTypes, Is.Not.Null);
Assert.That(testB.FromUserFileTypes, Is.Not.Null);
Assert.That(testA.FromUserFileTypes,
Is.EquivalentTo(testB.FromUserFileTypes.ConvertAll(x => x.ToEnum<UserFileType>())));
}
}
}