using
System;
using
System.Xml;
using
System.Xml.Schema;
using
System.Xml.Serialization;
using
Microsoft.VisualStudio.TestTools.UnitTesting;
using
System.IO;
using
System.Diagnostics;
namespace
BeiBei.Core.Tests
{
[XmlRoot(
"Worker"
)]
public
class
Worker
{
[XmlElement]
public
string
JobTitle {
get
;
set
; }
[XmlAttribute(
"active"
)]
public
bool
Active {
get
;
set
; }
[XmlElement]
public
string
NextPageEncodingName {
get
;
set
; }
[XmlElement]
public
Person Person {
get
;
set
; }
[XmlElement]
public
Person Person2 {
get
;
set
; }
}
public
class
Person : IXmlSerializable
{
private
string
personName;
public
Person(
string
name)
{
personName = name;
}
public
Person()
{
personName =
null
;
}
public
void
WriteXml(XmlWriter writer)
{
writer.WriteString(personName);
}
public
void
ReadXml(XmlReader reader)
{
personName = reader.ReadString();
}
public
XmlSchema GetSchema()
{
return
(
null
);
}
public
override
string
ToString()
{
return
(personName);
}
}
[TestClass]
public
class
IXmlSerializableTests
{
[TestMethod]
public
void
S_Person_Test()
{
var
p =
new
Person(
"Shawn"
);
XmlSerializer serializer =
new
XmlSerializer(
typeof
(Person));
string
path =
"D:\\Test.Person.xml"
;
string
path2 =
"D:\\Test.Person.2.xml"
;
using
(
var
writer = XmlWriter.Create(path))
{
serializer.Serialize(writer, p);
}
using
(
var
reader = XmlReader.Create(path))
{
var
p2 = serializer.Deserialize(reader)
as
Person;
using
(
var
writer2 = XmlWriter.Create(path2))
{
serializer.Serialize(writer2, p2);
}
}
var
xml1 = File.ReadAllText(path);
var
xml2 = File.ReadAllText(path2);
Assert.AreEqual(xml1, xml2);
Debug.WriteLine(xml2);
}
[TestMethod]
public
void
S_Worker_Test()
{
var
p =
new
Person(
"Shawn"
);
var
pp =
new
Person(
"John"
);
var
w =
new
Worker()
{
JobTitle =
"Boss"
,
Person = p,
Person2 = pp,
NextPageEncodingName =
"gb2312"
,
};
XmlSerializer serializer =
new
XmlSerializer(
typeof
(Worker));
string
path =
"D:\\Test.Worker.xml"
;
string
path2 =
"D:\\Test.Worker.2.xml"
;
using
(
var
writer = XmlWriter.Create(path))
{
serializer.Serialize(writer, w);
}
using
(
var
reader = XmlReader.Create(path))
{
var
w2 = serializer.Deserialize(reader)
as
Worker;
using
(
var
writer2 = XmlWriter.Create(path2))
{
serializer.Serialize(writer2, w2);
}
}
var
xml1 = File.ReadAllText(path);
var
xml2 = File.ReadAllText(path2);
Debug.WriteLine(xml2);
Assert.AreEqual(xml1, xml2);
}
}
}