Opc.Ua.ServerTest.TestBase.VerifyBadAttribute C# (CSharp) Method

VerifyBadAttribute() protected method

Verifies an error returned during an attribute read.
protected VerifyBadAttribute ( Node node, uint attributeId, StatusCode error ) : bool
node Node
attributeId uint
error StatusCode
return bool
        protected bool VerifyBadAttribute(
            Node node, 
            uint attributeId,
            StatusCode error)
        {
            // check for invalid attribute.
            if (error == StatusCodes.BadAttributeIdInvalid)
            {
                // expected if attribute is not valid for node.
                if (!Attributes.IsValid(node.NodeClass, attributeId))
                {
                    return true;
                }

                // check for optional attribute.
                switch (attributeId)
                {
                    case Attributes.Description:
                    {
                        node.Description = null;
                        return true;
                    }

                    case Attributes.ArrayDimensions:
                    {
                        ((IVariableBase)node).ArrayDimensions = null;
                        return true;
                    }

                    case Attributes.InverseName:
                    {
                        ((IReferenceType)node).InverseName = null;
                        return true;
                    }

                    case Attributes.WriteMask:
                    {
                        node.WriteMask = 0;
                        return true;
                    }

                    case Attributes.UserWriteMask:
                    {
                        node.UserWriteMask = 0;
                        return true;
                    }

                    case Attributes.Value:
                    {
                        if (node.NodeClass == NodeClass.VariableType)
                        {
                            ((IVariableBase)node).Value = error;
                            return true;
                        }

                        break;
                    }
                }

                Log(
                    "Mandatory attribute not supported for Node '{0}'. NodeId = {1}, NodeClass = {2}, Attribute = {3}",
                    node,
                    node.NodeId,
                    node.NodeClass,
                    Attributes.GetBrowseName(attributeId));

                return false;
            }
            
            // anything goes for the value attribute.
            if (attributeId == Attributes.Value)
            {
                ((IVariableBase)node).Value = error;
                return true;
            }
            
            Log(
                "Unexpected error reading for Node '{0}'. NodeId = {1}, Attribute = {2}, Error = {3}",
                node,
                node.NodeId,
                Attributes.GetBrowseName(attributeId),
                error);

            return false;
        }