Exemplo n.º 1
0
        public override bool Equals(object obj)
        {
            NumberJsonValue secondJsonValue = obj as NumberJsonValue;

            if (secondJsonValue == null)
            {
                return(false);
            }

            switch (_actualType)
            {
            case TypeCode.Int16:
            case TypeCode.Int32:
            case TypeCode.Int64:
            case TypeCode.Byte:
            case TypeCode.SByte:
            case TypeCode.UInt16:
            case TypeCode.UInt32:
            case TypeCode.UInt64:
                return(Convert.ToInt64(_value).Equals(Convert.ToInt64(secondJsonValue.Value)));

            default:
                return(Convert.ToDouble(_value).Equals(Convert.ToDouble(secondJsonValue.Value)));
            }
        }
Exemplo n.º 2
0
        public override bool Equals(object obj)
        {
            var jsonValue = obj as ArrayJsonValue;

            if (jsonValue == null)
            {
                return(false);
            }

            var secondList = jsonValue.WrapedValue as IJsonValue[];

            if (secondList == null && _value == null)
            {
                return(true);
            }

            if (_value == null || secondList == null)
            {
                return(false);
            }

            if (secondList.Length != _value.Length)
            {
                return(false);
            }

            for (int i = 0; i < _value.Length; i++)
            {
                FieldDataType jsonType1 = _value[i].DataType;
                FieldDataType jsonType2 = secondList[i].DataType;
                if (jsonType1 != jsonType2)
                {
                    return(false);
                }

                switch (jsonType1)
                {
                case FieldDataType.Array:
                    var firstArray  = new ArrayJsonValue(_value[i].Value as IJsonValue[]);
                    var secondArray = new ArrayJsonValue(secondList[i].Value as IJsonValue[]);
                    if (!firstArray.Equals(secondArray))
                    {
                        return(false);
                    }
                    break;

                case FieldDataType.Bool:
                    var firstBool  = (bool)_value[i].Value;
                    var secondBool = (bool)secondList[i].Value;
                    if (!firstBool.Equals(secondBool))
                    {
                        return(false);
                    }
                    break;

                case FieldDataType.DateTime:
                    var firstDateTime  = (DateTime)_value[i].Value;
                    var secondDateTime = (DateTime)secondList[i].Value;
                    if (!firstDateTime.Equals(secondDateTime))
                    {
                        return(false);
                    }
                    break;

                case FieldDataType.Null:
                    break;

                case FieldDataType.Number:
                    var firstNumber  = new NumberJsonValue(_value[i].Value);
                    var secondNumber = new NumberJsonValue(secondList[i].Value);
                    if (!firstNumber.Equals(secondNumber))
                    {
                        return(false);
                    }
                    break;

                case FieldDataType.Object:
                    var firstDocument  = (IJSONDocument)_value[i].Value;
                    var secondDocument = (IJSONDocument)secondList[i].Value;
                    if (!firstDocument.Equals(secondDocument))
                    {
                        return(false);
                    }
                    break;

                case FieldDataType.String:
                    var firstString  = (string)_value[i].Value;
                    var secondString = (string)secondList[i].Value;
                    if (!firstString.Equals(secondString))
                    {
                        return(false);
                    }
                    break;
                }
            }
            return(true);
        }