/// <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); }
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); }
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); }
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); }
public static void CanRoundTripIntrinsics(Type dataType, object data) { Assert.Equal(data, XunitSerializationInfo.Deserialize(dataType, XunitSerializationInfo.Serialize(data))); }