Skip to content

Commit

Permalink
CommServer.UA - new release - added unit tests all green.
Browse files Browse the repository at this point in the history
Issue #: 4881
  • Loading branch information
mpostol committed Oct 31, 2016
1 parent 63c2130 commit e9c0d7d
Show file tree
Hide file tree
Showing 9 changed files with 163 additions and 42 deletions.
2 changes: 2 additions & 0 deletions CommServer.UA.sln.GhostDoc.user.dic
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
mpostol
Namespaces
svnserver
98 changes: 98 additions & 0 deletions UA.Common.UnitTests/Types/RangeTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using CAS.UA.Common.Types;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Opc.Da;
using System.Xml;
using Opc.Ua;
using System.Xml.XPath;

namespace CAS.UA.Common.Types.Tests
{
[TestClass()]
public class RangeTests
{
[TestMethod()]
public void CreateRangeTest()
{
ItemProperty _valueHigh = new TestItemProperty();
ItemProperty _valueLow = new TestItemProperty();
Range _newOne = Range.CreateRange(_valueHigh, _valueLow);
Assert.AreEqual<double>((double)_valueHigh.Value, _newOne.High);
}
[TestMethod()]
public void XmlElementTest()
{
ItemProperty _highValue = new TestItemProperty();
ItemProperty _lowValue = new TestItemProperty();
Range _newOne = Range.CreateRange(_highValue, _lowValue);
XmlElement _xml = _newOne.XmlElement;
Assert.AreEqual<int>(3, _xml.Attributes.Count);
Assert.IsTrue(String.IsNullOrEmpty(_xml.BaseURI));
Assert.AreEqual<int>(2, _xml.ChildNodes.Count);
Assert.AreEqual<string>("ExtensionObject", _xml.LocalName);
Assert.AreEqual<string>("ExtensionObject", _xml.Name);
Assert.AreEqual<string>(@"https://opcfoundation.org/UA/2008/02/Types.xsd", _xml.NamespaceURI);
Assert.AreEqual<XmlNodeType>(XmlNodeType.Element, _xml.NodeType);
Assert.AreEqual<string>(null, _xml.Value);
//Type
XmlNode _Type = _xml.FirstChild;
Assert.AreEqual<String>("TypeId", _Type.Name);
Assert.AreEqual<XmlNodeType>(XmlNodeType.Element, _Type.NodeType);
Assert.AreEqual<string>(ObjectIds.Range_Encoding_DefaultXml.Format(), _Type.InnerText);
//Body
XmlNode _body = _Type.NextSibling;
Assert.AreEqual<String>("Body", _body.Name);
Assert.AreEqual<XmlNodeType>(XmlNodeType.Element, _Type.NodeType);
Assert.IsTrue(_body.InnerXml.Contains("Range"));
//Range
XmlNode _range = _body.FirstChild;
Assert.AreEqual<String>("Range", _range.Name);
Assert.AreEqual<XmlNodeType>(XmlNodeType.Element, _Type.NodeType);
//Low
XmlNode _low = _range.FirstChild;
Assert.AreEqual<String>("Low", _low.Name);
Assert.AreEqual<XmlNodeType>(XmlNodeType.Element, _Type.NodeType);
double _recoveredLowValue = XmlConvert.ToDouble(_low.InnerText);
Assert.AreEqual<double>((double)_lowValue.Value, _recoveredLowValue);
//High
XmlNode _high = _low.NextSibling;
Assert.AreEqual<String>("High", _high.Name);
Assert.AreEqual<XmlNodeType>(XmlNodeType.Element, _Type.NodeType);
double _recoveredHighValue = XmlConvert.ToDouble(_high.InnerText);
Assert.AreEqual<double>((double)_highValue.Value, _recoveredHighValue);
}
[TestMethod]
public void DeserializationTestMethod()
{
ItemProperty _highValue = new TestItemProperty();
ItemProperty _lowValue = new TestItemProperty();
Range _newOne = Range.CreateRange(_highValue, _lowValue);
XmlElement _xmlExtensionObject = _newOne.XmlElement;
ExtensionObject _extensionObject = ExtensionObject.GetExtensionObject(_xmlExtensionObject);
Assert.AreEqual<string>(ObjectIds.Range_Encoding_DefaultXml.Format(), _extensionObject.TypeId.Identifier);
Range _recoveredRange = Range.CreateRange(_extensionObject.Body);
Assert.AreEqual<double>((double)_lowValue.Value, _recoveredRange.Low);
Assert.AreEqual<double>((double)_highValue.Value, _recoveredRange.High);
}
private class TestItemProperty : ItemProperty
{
public TestItemProperty()
{
this.DataType = typeof(long);
this.Description = "Descriptionh";
this.DiagnosticInfo = String.Empty;
this.ID = new PropertyID(100);
this.ItemName = nameof(ItemName);
this.ItemPath = nameof(ItemPath);
this.ResultID = Opc.ResultID.S_OK;
this.Value = m_Random.NextDouble();
}
private static Random m_Random = new Random();

}
}
}
13 changes: 13 additions & 0 deletions UA.Common.UnitTests/UA.Common.UnitTests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<NoWarn>IDE0001,IDE0002,IDE0003</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
Expand All @@ -37,6 +38,14 @@
<NoWarn>IDE0001,IDE0002,IDE0003</NoWarn>
</PropertyGroup>
<ItemGroup>
<Reference Include="CAS.CommServer.OPCClassicSDK.Core, Version=2.1.1062.39746, Culture=neutral, PublicKeyToken=8832ff1a67ea61a3, processorArchitecture=MSIL">
<HintPath>..\packages\CAS.CommServer.OPCClassic.SDK.Core.2.01.1062\lib\net451\CAS.CommServer.OPCClassicSDK.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Opc.Ua.Core, Version=1.1.326.0, Culture=neutral, PublicKeyToken=78aea80f6827b5ab, processorArchitecture=MSIL">
<HintPath>..\packages\OPC.UA.SDK.Core.1.01.326\lib\net35\Opc.Ua.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.XML" />
</ItemGroup>
Expand All @@ -55,6 +64,7 @@
<ItemGroup>
<Compile Include="BaseDirectoryHelperUnitTest.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Types\RangeTests.cs" />
<Compile Include="XmlHelperUnitTest.cs" />
</ItemGroup>
<ItemGroup>
Expand All @@ -63,6 +73,9 @@
<Name>UA.Common</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Choose>
<When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">
<ItemGroup>
Expand Down
5 changes: 5 additions & 0 deletions UA.Common.UnitTests/packages.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="CAS.CommServer.OPCClassic.SDK.Core" version="2.01.1062" targetFramework="net461" />
<package id="OPC.UA.SDK.Core" version="1.01.326" targetFramework="net461" />
</packages>
46 changes: 23 additions & 23 deletions UA.Common/Types/ExtensionObject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,43 +25,43 @@ namespace CAS.UA.Common.Types
public partial class ExtensionObject
{
/// <summary>
/// Gets the XML element.
/// Gets the XML element encapsulating the <see cref="ExtensionObject"/> containing inner value represented by the <see cref="XmlElement"/>.
/// </summary>
/// <param name="identifier">The identifier.</param>
/// <param name="body">The body.</param>
/// <param name="body">The body encapsulating target value.</param>
/// <returns></returns>
public static XmlElement GetXmlElement(Opc.Ua.NodeId identifier, XmlElement body)
{
ExtensionObject me = new ExtensionObject() { TypeId = new ExpandedNodeId() { Identifier = identifier.Format() } };
me.Body = body;
XmlDocument xmldoc = new XmlDocument();
using ( MemoryStream buffer = new MemoryStream( 1000 ) )
ExtensionObject _newExtensionObject = new ExtensionObject() { TypeId = new ExpandedNodeId() { Identifier = identifier.Format() } };
_newExtensionObject.Body = body;
XmlDocument _xmlDocument = new XmlDocument();
using ( MemoryStream _buffer = new MemoryStream( 1000 ) )
{
m_Serializer.Serialize( buffer, me );
buffer.Flush();
buffer.Position = 0;
xmldoc.Load( buffer );
m_Serializer.Serialize( _buffer, _newExtensionObject );
_buffer.Flush();
_buffer.Position = 0;
_xmlDocument.Load( _buffer );
}
return xmldoc.DocumentElement;
return _xmlDocument.DocumentElement;
}
/// <summary>
/// Gets the extension object.
/// Gets the extension object encapsulated by the <see cref="XmlElement"/>.
/// </summary>
/// <param name="xmlElement">The XML element.</param>
/// <param name="xmlElement">The <see cref="XmlElement"/> instance encapsulating <see cref="ExtensionObject"/> as the xml format.</param>
/// <returns></returns>
public static ExtensionObject GetExtensionObject(XmlElement xmlElement)
{
using ( MemoryStream buffer = new MemoryStream( 1000 ) )
using ( MemoryStream _buffer = new MemoryStream( 1000 ) )
{
XmlWriterSettings stngs = new XmlWriterSettings() { ConformanceLevel = ConformanceLevel.Fragment };
using ( XmlWriter wrt = XmlWriter.Create( buffer, stngs ) )
xmlElement.WriteTo( wrt );
buffer.Flush();
buffer.Position = 0;
ExtensionObject m_Value;
using ( XmlReader rdr = XmlReader.Create( buffer ) )
m_Value = (ExtensionObject)m_Serializer.Deserialize( rdr );
return m_Value;
XmlWriterSettings _settings = new XmlWriterSettings() { ConformanceLevel = ConformanceLevel.Fragment };
using ( XmlWriter _xmlWriter = XmlWriter.Create( _buffer, _settings ) )
xmlElement.WriteTo( _xmlWriter );
_buffer.Flush();
_buffer.Position = 0;
ExtensionObject _returnValue;
using ( XmlReader _xmlReader = XmlReader.Create( _buffer ) )
_returnValue = (ExtensionObject)m_Serializer.Deserialize( _xmlReader );
return _returnValue;
}
}
/// <summary>
Expand Down
30 changes: 16 additions & 14 deletions UA.Common/Types/Range.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
// https://www.cas.eu
//</summary>

using Opc.Da;
using Opc.Ua;
using System;
using System.IO;
using System.Xml;
Expand Down Expand Up @@ -44,36 +46,36 @@ public static Range CreateRange(XmlElement xmlElement)
}
}
/// <summary>
/// Gets the XML element representing the current value.
/// Gets the <see cref="ExtensionObject"/> represented as the <see cref="XmlElement"/> encapsulating the current value.
/// </summary>
/// <value>The XML element.</value>
/// <value>The <see cref="XmlElement"/> encapsulating current value as the <see cref="ExtensionObject"/>.</value>
public XmlElement XmlElement
{
get
{
XmlDocument xmldoc = new XmlDocument();
using ( MemoryStream buffer = new MemoryStream( 1000 ) )
XmlDocument _xmlDocument = new XmlDocument();
using ( MemoryStream _buffer = new MemoryStream( 1000 ) )
{
m_XmlSerializer.Serialize( buffer, this );
buffer.Flush();
buffer.Position = 0;
xmldoc.Load( buffer );
m_XmlSerializer.Serialize( _buffer, this );
_buffer.Flush();
_buffer.Position = 0;
_xmlDocument.Load( _buffer );
}
return ExtensionObject.GetXmlElement( Opc.Ua.ObjectIds.Range_Encoding_DefaultXml, xmldoc.DocumentElement );
return ExtensionObject.GetXmlElement( ObjectIds.Range_Encoding_DefaultXml, _xmlDocument.DocumentElement );
}
}
/// <summary>
/// Creates the range.
/// </summary>
/// <param name="higheu">The high engineering unit.</param>
/// <param name="loweu">The low engineering unit.</param>
/// <param name="highEu">The high engineering unit.</param>
/// <param name="lowEu">The low engineering unit.</param>
/// <returns></returns>
public static Range CreateRange(Opc.Da.ItemProperty higheu, Opc.Da.ItemProperty loweu)
public static Range CreateRange(ItemProperty highEu, ItemProperty lowEu)
{
Range rng = new Range()
{
High = Convert.ToDouble( higheu.Value ),
Low = Convert.ToDouble( loweu.Value )
High = Convert.ToDouble( highEu.Value ),
Low = Convert.ToDouble( lowEu.Value )
};
return rng;
}
Expand Down
5 changes: 3 additions & 2 deletions UA.Common/UA.Common.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
<WarningLevel>4</WarningLevel>
<DocumentationFile>bin\Debug\CAS.CommServer.UA.Common.xml</DocumentationFile>
<Prefer32Bit>false</Prefer32Bit>
<NoWarn>IDE0001,IDE0002,IDE0003</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
Expand All @@ -43,8 +44,8 @@
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="CAS.CommServer.OPCClassicSDK.Core, Version=2.1.1061.39650, Culture=neutral, PublicKeyToken=8832ff1a67ea61a3, processorArchitecture=MSIL">
<HintPath>..\packages\CAS.CommServer.OPCClassic.SDK.Core.2.01.1061-Bravo\lib\net451\CAS.CommServer.OPCClassicSDK.Core.dll</HintPath>
<Reference Include="CAS.CommServer.OPCClassicSDK.Core, Version=2.1.1062.39746, Culture=neutral, PublicKeyToken=8832ff1a67ea61a3, processorArchitecture=MSIL">
<HintPath>..\packages\CAS.CommServer.OPCClassic.SDK.Core.2.01.1062\lib\net451\CAS.CommServer.OPCClassicSDK.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Opc.Ua.Core, Version=1.1.326.0, Culture=neutral, PublicKeyToken=78aea80f6827b5ab, processorArchitecture=MSIL">
Expand Down
4 changes: 2 additions & 2 deletions UA.Common/XmlHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ public static class XmlHelper

/// <summary>
/// Gets the XML serializer namespaces, which contains the XML namespaces and prefixes
/// that the <see cref="System.Xml.Serialization.XmlSerializer"/> uses to generate qualified
/// that the <see cref="XmlSerializer"/> uses to generate qualified
/// names in an XML-document instance.
/// </summary>
/// <returns>XML namespaces and prefixes that the <see cref="System.Xml.Serialization.XmlSerializer"/>
/// <returns>XML namespaces and prefixes that the <see cref="XmlSerializer"/>
/// uses to generate qualified names in an XML-document instance.</returns>
public static XmlSerializerNamespaces GetXmlSerializerNamespaces()
{
Expand Down
2 changes: 1 addition & 1 deletion UA.Common/packages.config
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="CAS.CommServer.OPCClassic.SDK.Core" version="2.01.1061-Bravo" targetFramework="net461" />
<package id="CAS.CommServer.OPCClassic.SDK.Core" version="2.01.1062" targetFramework="net461" />
<package id="OPC.UA.SDK.Core" version="1.01.326" targetFramework="net461" />
</packages>

0 comments on commit e9c0d7d

Please sign in to comment.