forked from YAXLib/YAXLib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathKnownTypeTests.cs
179 lines (154 loc) · 5.53 KB
/
KnownTypeTests.cs
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
using System.Drawing;
using System.Xml.Linq;
using NUnit.Framework;
using YAXLib;
using System;
using YAXLibTests.SampleClasses;
namespace YAXLibTests
{
[TestFixture]
public class KnownTypeTests
{
[Test]
public void TestExtensionMethod()
{
var colorKnownType = new ColorDynamicKnownType();
var t1 = colorKnownType.Type;
IKnownType kt = new ColorDynamicKnownType();
Assert.That(kt.Type, Is.EqualTo(t1));
}
[Test]
public void TestColorNames()
{
var colorKnownType = new ColorDynamicKnownType();
var elem = new XElement("TheColor", "Red");
var desCl = (Color)colorKnownType.Deserialize(elem, String.Empty);
Assert.That(desCl.ToArgb(), Is.EqualTo(Color.Red.ToArgb()));
var serElem = new XElement("TheColor");
colorKnownType.Serialize(Color.Red, serElem, "");
Assert.That(serElem.ToString(), Is.EqualTo(elem.ToString()));
var elemRgbForRed = new XElement("TheColor",
new XElement("A", 255),
new XElement("R", 255),
new XElement("G", 0),
new XElement("B", 0));
var desCl2 = (Color)colorKnownType.Deserialize(elemRgbForRed, "");
Assert.That(desCl2.ToArgb(), Is.EqualTo(Color.Red.ToArgb()));
var elemRgbAndValueForRed = new XElement("TheColor",
"Blue",
new XElement("R", 255),
new XElement("G", 0),
new XElement("B", 0));
var desCl3 = (Color)colorKnownType.Deserialize(elemRgbAndValueForRed, "");
Assert.That(desCl3.ToArgb(), Is.EqualTo(Color.Red.ToArgb()));
}
[Test]
public void TestWrappers()
{
var typeToTest = typeof (TimeSpan);
var serializer = new YAXSerializer(typeToTest);
var typeWrapper = new UdtWrapper(typeToTest, serializer);
Assert.That(typeWrapper.IsKnownType, Is.True);
}
[Test]
public void TestSingleKnownTypeSerialization()
{
var typeToTest = typeof(Color);
var serializer = new YAXSerializer(typeToTest);
var col1 = Color.FromArgb(145, 123, 123);
var colStr1 = serializer.Serialize(col1);
const string expectedCol1 = @"<Color>
<A>255</A>
<R>145</R>
<G>123</G>
<B>123</B>
</Color>";
Assert.That(colStr1, Is.EqualTo(expectedCol1));
var col2 = SystemColors.ButtonFace;
var colStr2 = serializer.Serialize(col2);
const string expectedCol2 = @"<Color>ButtonFace</Color>";
Assert.That(colStr2, Is.EqualTo(expectedCol2));
}
[Test]
public void TestSerializingNDeserializingNullKnownTypes()
{
var inst = ClassContainingXElement.GetSampleInstance();
inst.TheElement = null;
inst.TheAttribute = null;
var ser = new YAXSerializer(typeof (ClassContainingXElement), YAXExceptionHandlingPolicies.ThrowErrorsOnly,
YAXExceptionTypes.Warning, YAXSerializationOptions.SerializeNullObjects);
try
{
var xml = ser.Serialize(inst);
var deseredInstance = ser.Deserialize(xml);
Assert.That(deseredInstance.ToString(), Is.EqualTo(inst.ToString()));
}
catch (Exception ex)
{
Assert.Fail("No exception should have been throwned, but received:\r\n" + ex);
}
}
[Test]
public void RectangleSerializationTest()
{
const string result =
@"<RectangleDynamicKnownTypeSample>
<Rect>
<Left>10</Left>
<Top>20</Top>
<Width>30</Width>
<Height>40</Height>
</Rect>
</RectangleDynamicKnownTypeSample>";
var serializer = new YAXSerializer(typeof(SampleClasses.RectangleDynamicKnownTypeSample), YAXExceptionHandlingPolicies.DoNotThrow, YAXExceptionTypes.Warning, YAXSerializationOptions.SerializeNullObjects);
string got = serializer.Serialize(SampleClasses.RectangleDynamicKnownTypeSample.GetSampleInstance());
Assert.That(got, Is.EqualTo(result));
}
[Test]
public void DataSetAndDataTableSerializationTest()
{
const string result =
@"<DataSetAndDataTableKnownTypeSample>
<TheDataTable>
<NewDataSet>
<TableName xmlns=""http://tableNs/"">
<Col1>1</Col1>
<Col2>2</Col2>
<Col3>3</Col3>
</TableName>
<TableName xmlns=""http://tableNs/"">
<Col1>y</Col1>
<Col2>4</Col2>
<Col3>n</Col3>
</TableName>
</NewDataSet>
</TheDataTable>
<TheDataSet>
<MyDataSet>
<Table1>
<Cl1>num1</Cl1>
<Cl2>34</Cl2>
</Table1>
<Table1>
<Cl1>num2</Cl1>
<Cl2>54</Cl2>
</Table1>
<Table2>
<C1>one</C1>
<C2>1</C2>
<C3>1.5</C3>
</Table2>
<Table2>
<C1>two</C1>
<C2>2</C2>
<C3>2.5</C3>
</Table2>
</MyDataSet>
</TheDataSet>
</DataSetAndDataTableKnownTypeSample>";
var serializer = new YAXSerializer(typeof(DataSetAndDataTableKnownTypeSample), YAXExceptionHandlingPolicies.DoNotThrow, YAXExceptionTypes.Warning, YAXSerializationOptions.SerializeNullObjects);
string got = serializer.Serialize(DataSetAndDataTableKnownTypeSample.GetSampleInstance());
Assert.That(got, Is.EqualTo(result));
}
}
}