public void DeserializerEndingIsCalled() { var packed = @"{""__typeName"":""MyClass"",""__version"":1041101216,""Inner"":{""__typeName"":""InnerClass"",""__version"":849758624,""Value"":""42""},""OtherInner"":{""__typeName"":""OtherInnerClass"",""__version"":849758624,""Value"":""ABC""}}"; var serializer = new ShapeshifterSerializer <MyClass>(new[] { typeof(DeserializerClassWithDeserializationEnding) }); var result = serializer.Deserialize(packed); result.Inner.Value.Should().Be("ENDING"); }
public void DeserializerEndingIsCalledAndThrows() { var packed = @"{""__typeName"":""MyClass"",""__version"":1041101216,""Inner"":{""__typeName"":""InnerClass"",""__version"":849758624,""Value"":""42""},""OtherInner"":{""__typeName"":""OtherInnerClass"",""__version"":849758624,""Value"":""ABC""}}"; var serializer = new ShapeshifterSerializer <MyClass>(new[] { typeof(DeserializerClassWithDeserializationEndingThrows) }); Action action = () => serializer.Deserialize(packed); action.ShouldThrow <ShapeshifterException>().Where(i => i.Id == Exceptions.FailedToRunDeserializationEndingId); }
public void CustomDeserializerHasSingleInstanceForTheSerialization() { var packed = @"{""__typeName"":""MyClass"",""__version"":1041101216,""Inner"":{""__typeName"":""InnerClass"",""__version"":849758624,""Value"":""42""},""OtherInner"":{""__typeName"":""OtherInnerClass"",""__version"":849758624,""Value"":""ABC""}}"; var serializer = new ShapeshifterSerializer <MyClass>(new[] { typeof(SpecialDeserializerClass) }); var result = serializer.Deserialize(packed); result.OtherInner.Value.Should().Be("42"); }
public void CustomDeserializerOverridesData() { var packed = @"{""__typeName"":""MyClass"",""__version"":1041101216,""Inner"":{""__typeName"":""InnerClass"",""__version"":849758624,""Value"":""42""},""OtherInner"":{""__typeName"":""OtherInnerClass"",""__version"":849758624,""Value"":""ABC""}}"; var serializer = new ShapeshifterSerializer <MyClass>(new[] { typeof(DeserializerClass) }); var result = serializer.Deserialize(packed); result.Inner.Value.Should().Be("OVER"); result.OtherInner.Value.Should().Be("OVER"); }
public void SameVersionWriteAndReadBack_NewVersion() { var serializer = new ShapeshifterSerializer <NonDataContractClass>(new[] { typeof(SerializationForNonDataContractClassVersion2) }); var serialized = serializer.Serialize(new NonDataContractClass() { Value = "42" }); var result = serializer.Deserialize(serialized); result.Value.Should().Be("42"); }
public void TestEnumConverterIfEnumHasDataContractAttribute() { var serializer = new ShapeshifterSerializer <MyClassWithEnumAttributed>(); //EnumConverter is set implicitly var input = new MyClassWithEnumAttributed() { EnumVal = MyEnumAttributed.Second }; var wireFormat = serializer.Serialize(input); var result = serializer.Deserialize(wireFormat); result.EnumVal.Should().Be(MyEnumAttributed.Second); }
public void TestEnumConverter() { var serializer = new ShapeshifterSerializer <MyClassWithEnum>(); //EnumConverter is set implicitly var input = new MyClassWithEnum() { EnumVal = MyEnum.Second }; var wireFormat = serializer.Serialize(input); var result = serializer.Deserialize(wireFormat); result.EnumVal.Should().Be(MyEnum.Second); }
private TimeSpan MesureShapeshifterPerformance(Customer customer) { var watch = Stopwatch.StartNew(); var shapeshifterSerializer = new ShapeshifterSerializer <Customer>(); for (int cnt = 1; cnt < 1000; cnt++) { using (var stream = new MemoryStream()) { shapeshifterSerializer.Serialize(stream, customer); stream.Seek(0, SeekOrigin.Begin); var result = shapeshifterSerializer.Deserialize(stream); } } watch.Stop(); return(watch.Elapsed); }
public void CustomerConversionFromV1ToV2() { var v1Customer = new ModelVersion1.Customer() { Name = "Joe the Lion", Orders = new List <ModelVersion1.Order>(), HomeAddress = "Z1111 CityPart Some Street 23." }; var serializedFormat = new ShapeshifterSerializer <ModelVersion1.Customer>().Serialize(v1Customer); var v2Customer = new ShapeshifterSerializer <ModelVersion2.Customer>().Deserialize(serializedFormat); Debug.Print(v2Customer.GetType().ToString()); Debug.Print(((ModelVersion2.IndividualCustomer)v2Customer).Name); Debug.Print(((ModelVersion2.IndividualCustomer)v2Customer).HomeAddress.Zip); }
public void BuiltinEnumConverter_CanBeOverriddenForConcreteEnumType() { var machine = new ShapeshifterSerializer <ClassWithEnum>(new[] { typeof(MyEnumConverter) }, new[] { Assembly.GetExecutingAssembly() }); var source = new ClassWithEnum { EnumValue = MyEnum.First }; string packed = machine.Serialize(source); Debug.Print(packed); var jobj = JObject.Parse(packed).GetValue("EnumValue"); jobj[Constants.TypeNameKey].Value <string>().Should().Be("MyEnumPackname"); jobj[Constants.VersionKey].Value <uint>().Should().Be(1); jobj["MyKey"].Value <int>().Should().Be((int)MyEnum.First); var unpacked = machine.Deserialize(packed); unpacked.Should().NotBeNull(); unpacked.EnumValue.Should().Be(MyEnum.First); }
/// <summary> /// Loads the <see cref="SnapshotHistory"/> from the given stream. /// </summary> /// <param name="stream">A stream containing the serialized SnapshotHistory.</param> /// <returns>The SnapshotHistory loaded.</returns> public static SnapshotHistory LoadFrom(Stream stream) { var serializer = new ShapeshifterSerializer <SnapshotHistory>(); return(serializer.Deserialize(stream)); }
/// <summary> /// Saves the SnapshotHistory to the given stream. /// </summary> /// <param name="stream">A target stream to save the serialized SnapshotHistory to.</param> public void SaveTo(Stream stream) { var serializer = new ShapeshifterSerializer <SnapshotHistory>(); serializer.Serialize(stream, this); }