Opc.Ua.ServerTest.ReadTest.VerifyIndexRangeForScalar C# (CSharp) Method

VerifyIndexRangeForScalar() private method

Verifies the index range result for a scalar value.
private VerifyIndexRangeForScalar ( IVariableBase variable, BuiltInType type, DataValue result ) : bool
variable IVariableBase
type BuiltInType
result DataValue
return bool
        private bool VerifyIndexRangeForScalar(IVariableBase variable, BuiltInType type, DataValue result)
        {
            // allow DA status codes to be returned before checking the 
            if (IsDaBadStatus(result.StatusCode))
            {
                return true;
            }

            if (result.StatusCode != StatusCodes.BadIndexRangeInvalid)
            {
                if (type != BuiltInType.ByteString && type != BuiltInType.String && type != BuiltInType.Variant)
                {
                    Log(
                        "Wrong error code when reading index range for scalar value '{0}'. NodeId = {1}, Value = {2}, StatusCode = {3}",
                        variable,
                        variable.NodeId,
                        variable.Value,
                        result.StatusCode);

                    return false;
                }

                if (type == BuiltInType.String)
                {
                    string value = result.Value as string;

                    if (value != null && value.Length > 2)
                    {
                        Log(
                            "Too much data return when reading index range for sting value '{0}'. NodeId = {1}, Value = {2}, ReturnedValue = {3}",
                            variable,
                            variable.NodeId,
                            variable.Value,
                            result.Value);

                        return false;
                    }
                }

                if (type == BuiltInType.ByteString)
                {
                    byte[] value = result.Value as byte[];

                    if (value != null && value.Length > 2)
                    {
                        Log(
                            "Too much data return when reading index range for ByteString value '{0}'. NodeId = {1}, Value = {2}, ReturnedValue = {3}",
                            variable,
                            variable.NodeId,
                            variable.Value,
                            result.Value);

                        return false;
                    }
                }

                if (type == BuiltInType.Variant)
                {
                    Array value = result.Value as Array;

                    if (value != null && value.Length > 2)
                    {
                        Log(
                            "Too much data return when reading index range for Variant value '{0}'. NodeId = {1}, Value = {2}, ReturnedValue = {3}",
                            variable,
                            variable.NodeId,
                            variable.Value,
                            result.Value);

                        return false;
                    }
                }
            }
            else
            {
                if (type == BuiltInType.ByteString || type == BuiltInType.String)
                {
                    Log(
                        "Error returned reading index range for ByteString or String value '{0}'. NodeId = {1}, Value = {2}, StatusCode = {3}",
                        variable,
                        variable.NodeId,
                        variable.Value,
                        result.StatusCode);

                    return false;
                }
            }

            return true;
        }