private ILExceptionSerializerTestException TestExceptionSerialization(ILExceptionSerializerTestException expected) { var writer = new BinaryTokenStreamWriter(); // Deep copies should be reference-equal. Assert.Equal( expected, SerializationManager.DeepCopyInner(expected, new SerializationContext(this.environment.SerializationManager)), ReferenceEqualsComparer.Instance); this.environment.SerializationManager.Serialize(expected, writer); var reader = new DeserializationContext(this.environment.SerializationManager) { StreamReader = new BinaryTokenStreamReader(writer.ToByteArray()) }; var actual = (ILExceptionSerializerTestException)this.environment.SerializationManager.Deserialize(null, reader.StreamReader); Assert.Equal(expected.BaseField.Value, actual.BaseField.Value, StringComparer.Ordinal); Assert.Equal(expected.SubClassField, actual.SubClassField, StringComparer.Ordinal); Assert.Equal(expected.OtherField.Value, actual.OtherField.Value, StringComparer.Ordinal); // Check for referential equality in the two fields which happened to be reference-equals. Assert.Equal(actual.BaseField, actual.OtherField, ReferenceEqualsComparer.Instance); return(actual); }
private static ILExceptionSerializerTestException GetNewException() { ILExceptionSerializerTestException expected; try { var baseField = new SomeFunObject { Value = Guid.NewGuid().ToString() }; var res = new ILExceptionSerializerTestException { BaseField = baseField, SubClassField = Guid.NewGuid().ToString(), OtherField = baseField, }; throw res; } catch (ILExceptionSerializerTestException exception) { expected = exception; } return(expected); }