Exemplo n.º 1
0
        /// <summary>
        /// De-serializes an object.
        /// </summary>
        /// <typeparam name="T">The type of the object</typeparam>
        /// <param name="serializedValue">The object's serialized value</param>
        /// <returns>The de-serialized object</returns>
        public static T Deserialize <T>(string serializedValue)
        {
            if (serializedValue == null)
            {
                throw new ArgumentNullException("serializedValue");
            }

            var pieces = serializedValue.Split(new[] { ':' }, 2);

            if (pieces.Length != 2)
            {
                throw new ArgumentException("De-serialized string is in the incorrect format.");
            }

            var deserializedType = GetType(pieces[0]);

            if (deserializedType == null)
            {
                throw new ArgumentException("Could not load type " + pieces[0], "serializedValue");
            }

            if (!typeof(IXunitSerializable).IsAssignableFrom(deserializedType))
            {
                throw new ArgumentException("Cannot de-serialize an object that does not implement " + typeof(IXunitSerializable).FullName, "T");
            }

            var obj = XunitSerializationInfo.Deserialize(deserializedType, pieces[1]);

            if (obj is XunitSerializationInfo.ArraySerializer)
            {
                obj = ((XunitSerializationInfo.ArraySerializer)obj).ArrayData;
            }

            return((T)obj);
        }
Exemplo n.º 2
0
        public static void CanRoundTripIXunitSerializableWithNoSerializedData()
        {
            var data = new MySerializableWithNoData();

            var serialized   = XunitSerializationInfo.Serialize(data);
            var deserialized = (MySerializableWithNoData)XunitSerializationInfo.Deserialize(typeof(MySerializableWithNoData), serialized);

            Assert.NotNull(deserialized);
        }
        public static void CanRoundTrip_PublicClass_PublicTestMethod()
        {
            var testCase = TestableTestMethodTestCase.Create <Serialization>("CanRoundTrip_PublicClass_PublicTestMethod");

            var serialized   = XunitSerializationInfo.Serialize(testCase);
            var deserialized = XunitSerializationInfo.Deserialize(typeof(TestableTestMethodTestCase), serialized);

            Assert.NotNull(deserialized);
        }
Exemplo n.º 4
0
        public static void IXunitSerializableWithoutParameterlessConstructorThrows()
        {
            var data = new MySerializableWithoutParameterlessConstructor(42);

            var serialized = XunitSerializationInfo.Serialize(data);
            var ex         = Record.Exception(() => XunitSerializationInfo.Deserialize(typeof(MySerializableWithoutParameterlessConstructor), serialized));

            Assert.IsType <InvalidOperationException>(ex);
            Assert.Equal("Could not de-serialize type 'XunitSerializationInfoTests+MySerializableWithoutParameterlessConstructor' because it lacks a parameterless constructor.", ex.Message);
        }
Exemplo n.º 5
0
        public static void CanRoundTypeIXunitSerializable()
        {
            var data = new MySerializable {
                IntValue = 42, StringValue = "Hello\r\nworld!"
            };

            var deserialized = (MySerializable)XunitSerializationInfo.Deserialize(typeof(MySerializable), XunitSerializationInfo.Serialize(data));

            Assert.Equal(42, deserialized.IntValue);
            Assert.Equal("Hello\r\nworld!", deserialized.StringValue);
        }
Exemplo n.º 6
0
 public static void CanRoundTripIntrinsics(Type dataType, object data)
 {
     Assert.Equal(data, XunitSerializationInfo.Deserialize(dataType, XunitSerializationInfo.Serialize(data)));
 }