Opc.Ua.ServerTest.BrowseTest.DoReferenceTypeTest C# (CSharp) Method

DoReferenceTypeTest() private method

Verifies that the server does no ignore the NodeClass filter.
private DoReferenceTypeTest ( ) : bool
return bool
        private bool DoReferenceTypeTest()
        {
            // follow tree from each starting node.
            bool success = true;
                     
            double increment = MaxProgress/AvailableNodes.Count;
            double position  = 0;
            
            Log("Starting ReferenceType for {0} Nodes ({1}% Coverage)", AvailableNodes.Values.Count, Configuration.Coverage);
           
            List<Node> nodes = new List<Node>();
            BrowseDescriptionCollection nodesToBrowse = new BrowseDescriptionCollection();
            List<ReferenceDescriptionCollection> references = new List<ReferenceDescriptionCollection>();

            int counter = 0;

            foreach (Node node in AvailableNodes.Values)
            {         
                if (!CheckCoverage(ref counter))
                {
                    continue;
                }
                           
                // inverse filter test.
                AddReferenceTypeTest(node, ReferenceTypeIds.NonHierarchicalReferences, true, true, nodes, nodesToBrowse, references, true);

                if (!Browse(nodes, nodesToBrowse, references))
                {
                    success = false;
                    break;
                }

                // forward filter test.
                AddReferenceTypeTest(node, ReferenceTypeIds.NonHierarchicalReferences, false, true, nodes, nodesToBrowse, references, true);

                if (!Browse(nodes, nodesToBrowse, references))
                {
                    success = false;
                    break;
                }

                // subtype test with concrete leaf reference.
                AddReferenceTypeTest(node, ReferenceTypeIds.HasOrderedComponent, false, true, nodes, nodesToBrowse, references, true);

                if (!Browse(nodes, nodesToBrowse, references))
                {
                    success = false;
                    break;
                }

                // no-subtype test with abstract reference.
                AddReferenceTypeTest(node, ReferenceTypeIds.HasChild, false, false, nodes, nodesToBrowse, references, true);

                if (!Browse(nodes, nodesToBrowse, references))
                {
                    success = false;
                    break;
                }

                // inverse hierarchial test.
                AddReferenceTypeTest(node, ReferenceTypeIds.HierarchicalReferences, true, true, nodes, nodesToBrowse, references, true);

                if (!Browse(nodes, nodesToBrowse, references))
                {
                    success = false;
                    break;
                }

                position += increment;
                ReportProgress(position);
            }   
         
            return success;
        }