Ejemplo n.º 1
0
        /// <summary>
        /// Serializes an object.
        /// </summary>
        /// <param name="value">The value to be serialized</param>
        /// <returns>The serialized object</returns>
        public static string Serialize(object value)
        {
            if (value == null)
            {
                return(null);
            }

            var serializable = value as IXunitSerializable;

            if (serializable != null)
            {
                var info = new XunitSerializationInfo();
                serializable.Serialize(info);
                return(info.ToSerializedString());
            }

            var charData = value as char?;

            if (charData != null)
            {
                return(((ushort)charData.GetValueOrDefault()).ToString(CultureInfo.InvariantCulture));
            }

            var stringData = value as string;

            if (stringData != null)
            {
                return(ToBase64(stringData));
            }

            var byteData = value as byte?;

            if (byteData != null)
            {
                return(byteData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var ushortData = value as ushort?;

            if (ushortData != null)
            {
                return(ushortData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var shortData = value as short?;

            if (shortData != null)
            {
                return(shortData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var uintData = value as uint?;

            if (uintData != null)
            {
                return(uintData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var intData = value as int?;

            if (intData != null)
            {
                return(intData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var ulongData = value as ulong?;

            if (ulongData != null)
            {
                return(ulongData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var longData = value as long?;

            if (longData != null)
            {
                return(longData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var floatData = value as float?;

            if (floatData != null)
            {
                return(floatData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var doubleData = value as double?;

            if (doubleData != null)
            {
                return(doubleData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var decimalData = value as decimal?;

            if (decimalData != null)
            {
                return(decimalData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var booleanData = value as bool?;

            if (booleanData != null)
            {
                return(booleanData.GetValueOrDefault().ToString());
            }

            var datetimeData = value as DateTime?;

            if (datetimeData != null)
            {
                return(datetimeData.GetValueOrDefault().ToString("o", CultureInfo.InvariantCulture));  // Round-trippable format
            }
            var datetimeoffsetData = value as DateTimeOffset?;

            if (datetimeoffsetData != null)
            {
                return(datetimeoffsetData.GetValueOrDefault().ToString("o", CultureInfo.InvariantCulture));  // Round-trippable format
            }
            var typeData = value as Type;

            if (typeData != null)
            {
                if (!typeData.IsFromLocalAssembly())
                {
                    throw new ArgumentException(String.Format("We cannot serialize type {0} because it lives in the GAC", typeData.FullName), "value");
                }
                return(SerializationHelper.GetTypeNameForSerialization(typeData));
            }

            var valueType = value.GetType();

            if (valueType.IsEnum())
            {
                if (!valueType.IsFromLocalAssembly())
                {
                    throw new ArgumentException(String.Format("We cannot serialize enum {0}.{1} because it lives in the GAC", valueType.FullName, value), "value");
                }
                return(value.ToString());
            }

            var arrayData = value as Array;

            if (arrayData != null)
            {
                var info     = new XunitSerializationInfo();
                var arraySer = new ArraySerializer(arrayData);
                arraySer.Serialize(info);
                return(info.ToSerializedString());
            }

            throw new ArgumentException("We don't know how to serialize type " + valueType.FullName, "value");
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Serializes an object.
        /// </summary>
        /// <param name="value">The value to be serialized</param>
        /// <returns>The serialized object</returns>
        public static string Serialize(object value)
        {
            if (value == null)
            {
                return(null);
            }

            var serializable = value as IXunitSerializable;

            if (serializable != null)
            {
                var info = new XunitSerializationInfo();
                serializable.Serialize(info);
                return(info.ToSerializedString());
            }

            var stringData = value as string;

            if (stringData != null)
            {
                return(ToBase64(stringData));
            }

            var intData = value as int?;

            if (intData != null)
            {
                return(intData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var longData = value as long?;

            if (longData != null)
            {
                return(longData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var floatData = value as float?;

            if (floatData != null)
            {
                return(floatData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var doubleData = value as double?;

            if (doubleData != null)
            {
                return(doubleData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var decimalData = value as decimal?;

            if (decimalData != null)
            {
                return(decimalData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var booleanData = value as bool?;

            if (booleanData != null)
            {
                return(booleanData.GetValueOrDefault().ToString());
            }

            var datetimeData = value as DateTime?;

            if (datetimeData != null)
            {
                return(datetimeData.GetValueOrDefault().ToString("o", CultureInfo.InvariantCulture));  // Round-trippable format
            }
            var datetimeoffsetData = value as DateTimeOffset?;

            if (datetimeoffsetData != null)
            {
                return(datetimeoffsetData.GetValueOrDefault().ToString("o", CultureInfo.InvariantCulture));  // Round-trippable format
            }
            var typeData = value as Type;

            if (typeData != null)
            {
                return(SerializationHelper.GetTypeNameForSerialization(typeData));
            }

            if (value.GetType().IsEnum())
            {
                return(value.ToString());
            }

            var array = value as object[];

            if (array != null)
            {
                var info     = new XunitSerializationInfo();
                var arraySer = new ArraySerializer(array);
                arraySer.Serialize(info);
                return(info.ToSerializedString());
            }

            throw new ArgumentException("We don't know how to serialize type " + value.GetType().FullName, "value");
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Serializes an object.
        /// </summary>
        /// <param name="value">The value to be serialized.</param>
        /// <returns>The serialized object.</returns>
        public static string Serialize(object value)
        {
            if (value == null)
            {
                return(null);
            }

            if (value is IXunitSerializable serializable)
            {
                var info = new XunitSerializationInfo();
                serializable.Serialize(info);
                return(info.ToSerializedString());
            }

            var charData = value as char?;

            if (charData != null)
            {
                return(((ushort)charData.GetValueOrDefault()).ToString(CultureInfo.InvariantCulture));
            }

            if (value is string stringData)
            {
                return(ToBase64(stringData));
            }

            var byteData = value as byte?;

            if (byteData != null)
            {
                return(byteData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var sbyteData = value as sbyte?;

            if (sbyteData != null)
            {
                return(sbyteData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var ushortData = value as ushort?;

            if (ushortData != null)
            {
                return(ushortData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var shortData = value as short?;

            if (shortData != null)
            {
                return(shortData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var uintData = value as uint?;

            if (uintData != null)
            {
                return(uintData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var intData = value as int?;

            if (intData != null)
            {
                return(intData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var ulongData = value as ulong?;

            if (ulongData != null)
            {
                return(ulongData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var longData = value as long?;

            if (longData != null)
            {
                return(longData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var floatData = value as float?;

            if (floatData != null)
            {
                var info     = new XunitSerializationInfo();
                var arraySer = new ArraySerializer(BitConverter.GetBytes(floatData.GetValueOrDefault()));
                arraySer.Serialize(info);
                return(info.ToSerializedString());
            }

            var doubleData = value as double?;

            if (doubleData != null)
            {
                var info     = new XunitSerializationInfo();
                var arraySer = new ArraySerializer(BitConverter.GetBytes(doubleData.GetValueOrDefault()));
                arraySer.Serialize(info);
                return(info.ToSerializedString());
            }

            var decimalData = value as decimal?;

            if (decimalData != null)
            {
                return(decimalData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

#pragma warning disable CA1305
            var booleanData = value as bool?;
            if (booleanData != null)
            {
                return(booleanData.GetValueOrDefault().ToString());
            }
#pragma warning restore CA1305

            var datetimeData = value as DateTime?;
            if (datetimeData != null)
            {
                return(datetimeData.GetValueOrDefault().ToString("o", CultureInfo.InvariantCulture));  // Round-trippable format
            }
            var datetimeoffsetData = value as DateTimeOffset?;
            if (datetimeoffsetData != null)
            {
                return(datetimeoffsetData.GetValueOrDefault().ToString("o", CultureInfo.InvariantCulture));  // Round-trippable format
            }
            var typeData = value as Type;
            if (typeData != null)
            {
                return(SerializationHelper.GetTypeNameForSerialization(typeData));
            }

            var valueType = value.GetType();
            if (valueType.IsEnum())
            {
                if (!valueType.IsFromLocalAssembly())
                {
                    throw new ArgumentException($"We cannot serialize enum {valueType.FullName}.{value} because it lives in the GAC", nameof(value));
                }
                return(value.ToString());
            }

            if (value is Array arrayData)
            {
                var info     = new XunitSerializationInfo();
                var arraySer = new ArraySerializer(arrayData);
                arraySer.Serialize(info);
                return(info.ToSerializedString());
            }

            throw new ArgumentException($"We don't know how to serialize type {valueType.FullName}", nameof(value));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Serializes an object.
        /// </summary>
        /// <param name="value">The value to be serialized</param>
        /// <returns>The serialized object</returns>
        public static string Serialize(object value)
        {
            if (value == null)
            {
                return("");
            }

            var serializable = value as IXunitSerializable;

            if (serializable != null)
            {
                var info = new XunitSerializationInfo();
                serializable.Serialize(info);
                return(info.ToSerializedString());
            }

            var stringData = value as string;

            if (stringData != null)
            {
                return(ToBase64(stringData));
            }

            var intData = value as int?;

            if (intData != null)
            {
                return(intData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var longData = value as long?;

            if (longData != null)
            {
                return(longData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var floatData = value as float?;

            if (floatData != null)
            {
                return(floatData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var doubleData = value as double?;

            if (doubleData != null)
            {
                return(doubleData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var decimalData = value as decimal?;

            if (decimalData != null)
            {
                return(decimalData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture));
            }

            var array = value as object[];

            if (array != null)
            {
                var info     = new XunitSerializationInfo();
                var arraySer = new ArraySerializer(array);
                arraySer.Serialize(info);
                return(info.ToSerializedString());
            }

            throw new ArgumentException("We don't know how to serialize type " + value.GetType().FullName, "value");
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Serializes an object.
        /// </summary>
        /// <param name="value">The value to be serialized</param>
        /// <returns>The serialized object</returns>
        public static string Serialize(object value)
        {
            if (value == null)
                return "";

            var getTypeData = value as IGetTypeData;
            if (getTypeData != null)
            {
                var info = new XunitSerializationInfo();
                getTypeData.GetData(info);
                return info.ToSerializedString();
            }

            var stringData = value as string;
            if (stringData != null)
                return ToBase64(stringData);

            var nullableIntData = value as int?;
            if (nullableIntData != null)
                return nullableIntData.GetValueOrDefault().ToString(CultureInfo.InvariantCulture);

            var array = value as object[];
            if (array != null)
            {
                var info = new XunitSerializationInfo();
                var arraySer = new ArraySerializer(array);
                arraySer.GetData(info);
                return info.ToSerializedString();
            }

            throw new ArgumentException("We don't know how to serialize type " + value.GetType().FullName, "value");
        }