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

VerifyVariableBaseConsistency() private method

Verifies that the variable or variable type attributes are consistent with each other.
private VerifyVariableBaseConsistency ( IVariableBase node ) : bool
node IVariableBase
return bool
        private bool VerifyVariableBaseConsistency(IVariableBase node)
        {
            INode datatype = Session.NodeCache.Find(node.DataType) as INode;

            if (datatype == null || datatype.NodeClass != NodeClass.DataType)
            {
                Log(
                    "DataType is not recognized for Node '{0}'. NodeId = {1}, DataType = {2}",
                    node,
                    node.NodeId,
                    node.DataType);

                return false;
            }

            if (node.ValueRank < -3)
            {
                Log(
                    "ValueRank is invalid for  Node '{0}'. NodeId = {1}, ValueRank = {2}",
                    node,
                    node.NodeId,
                    node.ValueRank);

                return false;
            }

            if (node.ValueRank <= 0)
            {
                if (node.ArrayDimensions != null && node.ArrayDimensions.Count > 0)
                {
                    Log(
                        "ArrayDimensions not allowed for variable length values Node '{0}'. NodeId = {1}, ValueRank = {2}, ArrayDimensions = {3}",
                        node,
                        node.NodeId,
                        node.ValueRank,
                        new Variant(node.ArrayDimensions));

                    return false;
                }
            }

            else
            {
                if (node.ArrayDimensions != null && node.ArrayDimensions.Count > 0 && node.ArrayDimensions.Count != node.ValueRank)
                {
                    Log(
                        "ArrayDimensions length does not match ValueRank values Node '{0}'. NodeId = {1}, Expected = {2}, Actual = {3}",
                        node,
                        node.NodeId,
                        node.ValueRank,
                        node.ArrayDimensions.Count);

                    return false;
                }
            }

            return true;
        }