using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MT.pHLab.SE.V1;
using SERemoteLib;
namespace UnitTestProject
{
internal static class PhInstrumentSerializationHelper
{
///
/// Tries do deserialize the given xml data to the given type.
///
///
/// An object of the given type if the data could be deserialized, null
/// otherwise.
///
public static T DeserializeDeviceData(this string xml)
{
object deviceData = null;
try
{
using (TextReader reader = new StringReader(xml))
{
XmlRootAttribute xmlRoot = new XmlRootAttribute();
xmlRoot.Namespace = "tf";
xmlRoot.IsNullable = true;
var serializer = new XmlSerializer(typeof(T), xmlRoot);
deviceData = serializer.Deserialize(reader);
}
}
catch (XmlException )
{
}
catch (InvalidOperationException )
{
}
return (T)deviceData;
}
}
[TestClass]
public class UnitTestResultMessage
{
[TestMethod]
public void Test01()
{
string telegram = "2016-02-03T12:29:08.46701";
StringReader stringReader = new StringReader(telegram);
XmlTextReader reader = new XMLSerializationCustomization.PdkXmlTextReader(stringReader);
{
XmlRootAttribute xmlRoot = new XmlRootAttribute();
xmlRoot.Namespace = "tf";
xmlRoot.IsNullable = true;
IntegerResult objResultMessage = new IntegerResult();
XmlSerializer xmlser = new XmlSerializer(objResultMessage.GetType(), xmlRoot);
objResultMessage = (IntegerResult)xmlser.Deserialize(reader);
}
}
[TestMethod]
public void Test01StringResult()
{
string telegram = "2016-02-04T09:27:32.7300Hello world, here I am";
StringReader stringReader = new StringReader(telegram);
XmlTextReader reader = new XMLSerializationCustomization.PdkXmlTextReader(stringReader);
{
StringResult objResultMessage = new StringResult();
XmlRootAttribute xmlRoot = new XmlRootAttribute();
xmlRoot.Namespace = "tf";
xmlRoot.IsNullable = true;
XmlSerializer xmlser = new XmlSerializer(objResultMessage.GetType(), xmlRoot);
objResultMessage = (StringResult)xmlser.Deserialize(reader);
}
}
[TestMethod]
public void Test01Decfloat()
{
//string telegram = "2016-02-04T09:27:32.7300eDecimalResultState_Valid1.034";
string telegram = "2016-02-04T09:27:32.730001.034";
StringReader stringReader = new StringReader(telegram);
XmlTextReader reader = new XMLSerializationCustomization.PdkXmlTextReader(stringReader);
{
DecimalResult objResultMessage = new DecimalResult();
XmlRootAttribute xmlRoot = new XmlRootAttribute();
xmlRoot.Namespace = "tf";
xmlRoot.IsNullable = true;
XmlSerializer xmlser = new XmlSerializer(objResultMessage.GetType(), xmlRoot);
objResultMessage = (DecimalResult)xmlser.Deserialize(reader);
}
}
[TestMethod]
public void Test02_ResultMessage()
{
//string BAD telegram = "MeasType1:Measure100-235.023.43110.9910202016-02-04 14:56:54";
//string telegram = "MeasType1:Measure1002016-02-04T09:27:32.7300eDecimalResultState_Valid1.034";
// OK string telegram = "TIMESTAMPS002016-02-04T09:27:32.73001";
// OK string telegram = "ABTIMESTAMPS002016-02-03T12:29:08.46701";
// OK string telegram = "ABTIMESTAMPS002016-02-03T12:29:08.46701";
//string telegram = "ABTIMESTAMPS002016-02-03T12:29:08.46701";
string telegram = "HalloEchoMeasType1:Measure100174.524.5314.0410202016-02-05 17:54:07";
StringReader stringReader= new StringReader(telegram);
XmlTextReader reader = new XMLSerializationCustomization.PdkXmlTextReader(stringReader);
reader.ReadToFollowing("ResultMessage");
{
ResultMessage objResultMessage = new ResultMessage();
//var resultMessage = PhInstrumentSerializationHelper.DeserializeDeviceData(telegram);
XmlRootAttribute xmlRoot = new XmlRootAttribute();
xmlRoot.Namespace = "tf";
xmlRoot.IsNullable = true;
XmlSerializer xmlser = new XmlSerializer(typeof(ResultMessage), xmlRoot);
objResultMessage = (ResultMessage)xmlser.Deserialize(reader);
}
}
[TestMethod]
public void Test03()
{
string xmlstring;
{
StringWriter stream = new StringWriter();
ResultMessage message = new ResultMessage();
message.groupid = "GroupId";
message.rackid = "RackId";
message.slotid = "SlotId";
message.result = new TreasureFleetAnyResult();
message.result.Item = new DecimalResult();
((DecimalResult)message.result.Item).value = 4712.4m;
XmlSerializer serializer = new XmlSerializer(message.GetType());
serializer.Serialize(stream, message);
xmlstring = stream.ToString();
}
{
StringReader xmlStream = new StringReader(xmlstring);
ResultMessage message = new ResultMessage();
XmlRootAttribute xmlRoot = new XmlRootAttribute();
//xmlRoot.Namespace = "tf";
xmlRoot.ElementName = "Telegram";
xmlRoot.IsNullable = true;
XmlSerializer xmlser = new XmlSerializer(message.GetType());
message = (ResultMessage)xmlser.Deserialize(xmlStream);
}
}
[TestMethod]
public void Test04()
{
string xmlstring;
{
StringWriter stream = new StringWriter();
ResultMessage message = new ResultMessage();
message.groupid = "GroupId";
message.rackid = "RackId";
message.slotid = "SlotId";
message.result = new TreasureFleetAnyResult();
message.result.Item = new DecimalResult();
((DecimalResult)message.result.Item).value = 4712.4m;
XmlRootAttribute xmlRoot = new XmlRootAttribute();
xmlRoot.Namespace = "tf";
xmlRoot.IsNullable = true;
XmlSerializer serializer = new XmlSerializer(message.GetType(), xmlRoot);
serializer.Serialize(stream, message);
xmlstring = stream.ToString();
}
{
StringReader xmlStream = new StringReader(xmlstring);
ResultMessage message = new ResultMessage();
XmlRootAttribute xmlRoot = new XmlRootAttribute();
xmlRoot.Namespace = "tf";
xmlRoot.IsNullable = true;
XmlSerializer xmlser = new XmlSerializer(message.GetType(), xmlRoot);
message = (ResultMessage)xmlser.Deserialize(xmlStream);
}
}
[TestMethod]
public void Test05_Response()
{
string telegram= "- M001
- M002
- M003
- M004
- M005
- M006
- M007
- M008
- M009
- M010
- M011
- M012
- M013
- M014
- M015
- M016
- M017
- M018
- M019
- M020
- M021
";
{
XmlReader reader = XmlReader.Create(new StringReader(telegram));
MT.pHLab.SE.V1.SEResponse response = MT.pHLab.SE.V1.SEResponse.CreateFromXml(reader);
if (response.GetRecordType() == typeof(MT.pHLab.SE.V1.Response_setupGetItemListRecord))
{
var record = new MT.pHLab.SE.V1.Response_setupGetItemListRecord();
record.ReadXml(reader);
}
}
}
}
}