private bool DoNodeClassTest()
{
// follow tree from each starting node.
bool success = true;
double increment = MaxProgress/AvailableNodes.Count;
double position = 0;
Log("Starting NodeClassTest 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
{
NodeClass mask = (NodeClass.Object | NodeClass.View | NodeClass.Method | NodeClass.Variable);
AddNodeClassTest(node, mask, nodes, nodesToBrowse, references, true);
if (!Browse(nodes, nodesToBrowse, references))
{
success = false;
break;
}
mask = ( NodeClass.ObjectType | NodeClass.DataType | NodeClass.ReferenceType | NodeClass.VariableType);
AddNodeClassTest(node, mask, nodes, nodesToBrowse, references, true);
if (!Browse(nodes, nodesToBrowse, references))
{
success = false;
break;
}
}
catch (Exception e)
{
success = false;
Log(e, "BrowseResultMaskTest Failed for Node '{0}'. NodeId = {1}", node, node.NodeId);
}
position += increment;
ReportProgress(position);
}
return success;
}