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");
        }
Esempio n. 5
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        /// <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));
        }
Esempio n. 12
0
        /// <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);
        }