private bool DoBrowseNextTest()
{
// follow tree from each starting node.
bool success = true;
double increment = MaxProgress/AvailableNodes.Count;
double position = 0;
Log("Starting BrowseNextTest 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;
}
try
{
m_maxReferencesPerNode = 3;
// all references test.
AddNodeClassTest(node, NodeClass.Unspecified, nodes, nodesToBrowse, references, true);
// forward non-hierarchical test.
AddReferenceTypeTest(node, ReferenceTypeIds.NonHierarchicalReferences, false, true, nodes, nodesToBrowse, references, false);
if (!Browse(nodes, nodesToBrowse, references))
{
success = false;
break;
}
m_maxReferencesPerNode = 3;
// node class filter test.
AddNodeClassTest(node, (NodeClass.Object | NodeClass.View | NodeClass.Method | NodeClass.Variable), nodes, nodesToBrowse, references, true);
// forward non-hierarchical test.
AddReferenceTypeTest(node, ReferenceTypeIds.HierarchicalReferences, false, true, nodes, nodesToBrowse, references, false);
if (!Browse(nodes, nodesToBrowse, references))
{
success = false;
break;
}
}
catch (Exception e)
{
success = false;
Log(e, "BrowseNextTest Failed for Node '{0}'. NodeId = {1}", node, node.NodeId);
}
position += increment;
ReportProgress(position);
}
return success;
}