예제 #1
0
        public void UpdateDuplicatedNodeIdTest()
        {
            Mock <IAddressSpaceBuildContext> _asMock = new Mock <IAddressSpaceBuildContext>();
            UANodeContext _newNode = new UANodeContext(NodeId.Parse("ns=1;i=11"), _asMock.Object);
            Mock <IBuildErrorsHandling> _traceMock   = new Mock <IBuildErrorsHandling>();
            List <TraceMessage>         _traceBuffer = new List <TraceMessage>();

            _traceMock.Setup(x => x.TraceEvent(It.IsAny <TraceMessage>())).Callback <TraceMessage>(x => _traceBuffer.Add(x));
            _newNode.Log = _traceMock.Object;
            UAVariable _nodeFactory = new UAVariable()
            {
                NodeId       = "ns=1;i=47",
                BrowseName   = "EURange",
                ParentNodeId = "ns=1;i=43",
                DataType     = "i=884",
                DisplayName  = new XML.LocalizedText[] { new XML.LocalizedText()
                                                         {
                                                             Value = "EURange"
                                                         } }
            };

            _newNode.Update(_nodeFactory, x => Assert.Fail());
            _newNode.Update(_nodeFactory, x => Assert.Fail());
            Assert.AreEqual <int>(1, _traceBuffer.Count);
            Assert.AreEqual <string>(_traceBuffer[0].BuildError.Identifier, BuildError.NodeIdDuplicated.Identifier);
        }
예제 #2
0
        public void RemoveInheritedValuesTest()
        {
            UAVariable _derivedNode = new UAVariable()
            {
                NodeId      = "ns=1;i=47", BrowseName = "EURange", ParentNodeId = "ns=1;i=43", DataType = "i=884",
                DisplayName = new XML.LocalizedText[] { new XML.LocalizedText()
                                                        {
                                                            Value = "EURange"
                                                        } }
            };
            UANode _baseNode = new UAVariable()
            {
                NodeId      = "i=17568", BrowseName = "EURange", ParentNodeId = "i=15318", DataType = "i=884",
                DisplayName = new XML.LocalizedText[] { new XML.LocalizedText()
                                                        {
                                                            Value = "EURange"
                                                        } }
            };
            Mock <IAddressSpaceBuildContext> _asMock = new Mock <IAddressSpaceBuildContext>();
            IUANodeContext _derivedNodeContext       = new UANodeContext(NodeId.Parse("ns=1;i=47"), _asMock.Object);

            _derivedNodeContext.Update(_derivedNode, x => Assert.Fail());
            UANodeContext _baseNodeContext = new UANodeContext(NodeId.Parse("i=17568"), _asMock.Object);

            _baseNodeContext.Update(_baseNode, x => Assert.Fail());
            _derivedNodeContext.RemoveInheritedValues(_baseNodeContext);
            Assert.AreEqual <string>("EURange", _derivedNode.BrowseName);
            Assert.IsNull(_derivedNode.DataType);
            Assert.IsNull(_derivedNode.Description);
        }
예제 #3
0
        public void EqualsUAVariableTestMethod()
        {
            UAVariable _derivedNode = new UAVariable()
            {
                NodeId       = "ns=1;i=47",
                BrowseName   = "EURange",
                ParentNodeId = "ns=1;i=43",
                DataType     = "i=884",
                DisplayName  = new XML.LocalizedText[] { new XML.LocalizedText()
                                                         {
                                                             Value = "EURange"
                                                         } }
            };
            UANode _baseNode = new UAVariable()
            {
                NodeId       = "i=17568",
                BrowseName   = "EURange",
                ParentNodeId = "i=15318",
                DataType     = "i=884",
                DisplayName  = new XML.LocalizedText[] { new XML.LocalizedText()
                                                         {
                                                             Value = "EURange"
                                                         } }
            };
            Mock <IAddressSpaceBuildContext> _asMock = new Mock <IAddressSpaceBuildContext>();
            IUANodeContext _derivedNodeContext       = new UANodeContext(NodeId.Parse("ns=1;i=47"), _asMock.Object);

            _derivedNodeContext.Update(_derivedNode, x => Assert.Fail());
            UANodeContext _baseNodeContext = new UANodeContext(NodeId.Parse("i=17568"), _asMock.Object);

            _baseNodeContext.Update(_baseNode, x => Assert.Fail());
            Assert.IsTrue(_derivedNode.Equals(_baseNode));
            Assert.IsTrue(_derivedNodeContext.Equals(_baseNodeContext));
        }
예제 #4
0
        public void ConstructorNodeIdTest()
        {
            Mock <IAddressSpaceBuildContext> _addressSpaceMock = new Mock <IAddressSpaceBuildContext>();
            UANodeContext _toTest = new UANodeContext(NodeId.Parse("ns=1;i=11"), _addressSpaceMock.Object);

            Assert.IsNotNull(_toTest.BrowseName);
            Assert.IsTrue(new QualifiedName() == _toTest.BrowseName);
            Assert.IsFalse(_toTest.InRecursionChain);
            Assert.IsFalse(_toTest.IsProperty);
            Assert.IsFalse(((IUANodeBase)_toTest).IsPropertyVariableType);
            Assert.IsFalse(_toTest.ModelingRule.HasValue);
            Assert.IsNotNull(_toTest.NodeIdContext);
            Assert.IsTrue(_toTest.NodeIdContext.ToString() == "ns=1;i=11");
            Assert.IsNull(_toTest.UANode);
            XML.UANode _node = UnitTest.Helpers.TestData.CreateUAObject();
            int        _registerReferenceCounter = 0;

            _toTest.Update(_node, x => _registerReferenceCounter++);
            Assert.AreEqual <int>(2, _registerReferenceCounter);
            Assert.IsNotNull(_toTest.BrowseName);
            Assert.AreEqual <QualifiedName>(new QualifiedName("NewUAObject", 1), _toTest.BrowseName);
            Assert.IsFalse(_toTest.InRecursionChain);
            Assert.IsFalse(_toTest.IsProperty);
            Assert.IsFalse(((IUANodeBase)_toTest).IsPropertyVariableType);
            Assert.IsFalse(_toTest.ModelingRule.HasValue);
            Assert.IsNotNull(_toTest.NodeIdContext);
            Assert.AreEqual <string>(_toTest.NodeIdContext.ToString(), "ns=1;i=11");
            Assert.IsNotNull(_toTest.UANode);
        }
예제 #5
0
        public void ExportBrowseNameTest()
        {
            UANodeSet _tm = TestData.CreateNodeSetModel();
            Mock <IAddressSpaceBuildContext> _asMock = new Mock <IAddressSpaceBuildContext>();

            _asMock.Setup(x => x.GetNamespace(0)).Returns <ushort>(x => "tempuri.org");
            UANode _nodeFactory = new UAVariable()
            {
                NodeId       = "ns=1;i=47",
                BrowseName   = "EURange",
                ParentNodeId = "ns=1;i=43",
                DataType     = "i=884",
                DisplayName  = new XML.LocalizedText[] { new XML.LocalizedText()
                                                         {
                                                             Value = "EURange"
                                                         } }
            };
            UANodeContext _node = new UANodeContext(NodeId.Parse("ns=1;i=47"), _asMock.Object);

            _node.Update(_nodeFactory, x => Assert.Fail());
            XmlQualifiedName _resolvedName = _node.ExportNodeBrowseName();

            _asMock.Verify(x => x.GetNamespace(0), Times.Once);
            Assert.IsNotNull(_resolvedName);
            Assert.AreEqual <string>("tempuri.org:EURange", _resolvedName.ToString());
        }
예제 #6
0
            private UANodeContext NewNode(UANode newNode)
            {
                UANodeContext _newNode = new UANodeContext(NodeId.Parse(newNode.NodeId), this);

                _newNode.Update(newNode, x => { m_References.Add(x.Key, x); });
                Add2mNodesDictionary(_newNode);
                return(_newNode);
            }
예제 #7
0
        public void UpdateNodeIdTest()
        {
            Mock <IAddressSpaceBuildContext> _addressSpaceMock = new Mock <IAddressSpaceBuildContext>();
            UANodeContext _toTest = new UANodeContext(NodeId.Parse("ns=1;i=11"), _addressSpaceMock.Object);

            XML.UANode _node = new UAObject()
            {
                NodeId      = "ns=1;i=1",
                BrowseName  = "1:NewUAObject",
                DisplayName = new XML.LocalizedText[] { new XML.LocalizedText()
                                                        {
                                                            Value = "New UA Object"
                                                        } },
                References = new Reference[]
                {
                    new Reference()
                    {
                        ReferenceType = ReferenceTypeIds.HasTypeDefinition.ToString(), Value = ObjectTypeIds.BaseObjectType.ToString()
                    },
                    new Reference()
                    {
                        ReferenceType = ReferenceTypeIds.Organizes.ToString(), IsForward = false, Value = "i=85"
                    }
                },
                // UAInstance
                ParentNodeId = string.Empty,
                // UAObject
                EventNotifier = 0x01,
            };
            int _registerReferenceCounter = 0;

            _toTest.Update(_node, x => _registerReferenceCounter++);
            Assert.AreEqual <int>(2, _registerReferenceCounter);
            Assert.IsNotNull(_toTest.BrowseName);
            Assert.AreEqual <QualifiedName>(new QualifiedName("NewUAObject", 1), _toTest.BrowseName);
            Assert.IsFalse(_toTest.InRecursionChain);
            Assert.IsFalse(_toTest.IsProperty);
            Assert.IsFalse(((IUANodeBase)_toTest).IsPropertyVariableType);
            Assert.IsFalse(_toTest.ModelingRule.HasValue);
            Assert.IsNotNull(_toTest.NodeIdContext);
            Assert.AreEqual <string>(_toTest.NodeIdContext.ToString(), "ns=1;i=11");
            Assert.IsNotNull(_toTest.UANode);
        }
예제 #8
0
 private void ImportUANode(UANode node, UAModelContext modelContext, Action <TraceMessage> traceEvent)
 {
     try
     {
         if (node == null)
         {
             m_TraceEvent(TraceMessage.BuildErrorTraceMessage(BuildError.NodeCannotBeNull, "At Importing UANode."));
         }
         NodeId        nodeId    = modelContext.ImportNodeId(node.NodeId, false, m_TraceEvent);
         UANodeContext _newNode  = null;
         string        nodeIdKey = nodeId.ToString();
         if (!m_NodesDictionary.TryGetValue(nodeIdKey, out _newNode))
         {
             _newNode = new UANodeContext(this, modelContext, nodeId);
             _newNode.Update(node, traceEvent);
             m_NodesDictionary.Add(nodeIdKey, _newNode);
         }
         else
         {
             if (_newNode.UANode != null)
             {
                 m_TraceEvent(TraceMessage.BuildErrorTraceMessage(BuildError.NodeIdDuplicated, String.Format("The {0} is already defined.", node.NodeId.ToString())));
             }
             _newNode.Update(node, traceEvent);
         }
         foreach (Reference _rf in node.References)
         {
             UAReferenceContext _rs = UAReferenceContext.NewReferenceStub(_rf, this, modelContext, _newNode, m_TraceEvent);
             if (!m_References.ContainsKey(_rs.Key))
             {
                 m_References.Add(_rs.Key, _rs);
             }
         }
     }
     catch (Exception _ex)
     {
         string _msg = String.Format("ImportUANode {1} is interrupted by exception {0}", _ex.Message, node.NodeId);
         m_TraceEvent(TraceMessage.DiagnosticTraceMessage(_msg));
     }
 }
예제 #9
0
        public void UpdateWithDifferentNodeIdTest()
        {
            Mock <IAddressSpaceBuildContext> _asMock = new Mock <IAddressSpaceBuildContext>();
            QualifiedName  qualifiedName             = QualifiedName.Parse("EURange");
            IUANodeContext _newNode = new UANodeContext(NodeId.Parse("ns=1;i=11"), _asMock.Object);

            Assert.AreEqual <string>("ns=1;i=11", _newNode.NodeIdContext.ToString());
            UANode _nodeFactory = new UAVariable()
            {
                NodeId       = "ns=1;i=47",
                BrowseName   = "EURange",
                ParentNodeId = "ns=1;i=43",
                DataType     = "i=884",
                DisplayName  = new XML.LocalizedText[] { new XML.LocalizedText()
                                                         {
                                                             Value = "EURange"
                                                         } }
            };

            _newNode.Update(_nodeFactory, x => Assert.Fail()); // Update has different NodeId - no change is expected.
            Assert.AreEqual <string>("ns=1;i=11", _newNode.NodeIdContext.ToString());
            Assert.AreEqual <string>("ns=1;i=47", _newNode.UANode.NodeId);
        }