public void SecondaryTypes() { Assert.True(PropertyBasedSerializationSurrogate.CanHandle(typeDataCache, FudgeFieldNameConvention.Identity, typeof(SecondaryTypeClass))); var serializer = new FudgeSerializer(context); // We're relying on it auto-discovering the type surrogate var obj1 = new SecondaryTypeClass { Id = Guid.NewGuid() }; var msg = serializer.SerializeToMsg(obj1); var obj2 = (SecondaryTypeClass)serializer.Deserialize(msg); Assert.NotSame(obj1, obj2); Assert.Equal(obj1.Id, obj2.Id); }
public void SimpleExample() { Assert.True(PropertyBasedSerializationSurrogate.CanHandle(typeDataCache, FudgeFieldNameConvention.Identity, typeof(SimpleExampleClass))); var serializer = new FudgeSerializer(context); // We're relying on it auto-discovering the type surrogate var obj1 = new SimpleExampleClass { Name = "Dennis", Age = 37 }; var msg = serializer.SerializeToMsg(obj1); var obj2 = (SimpleExampleClass)serializer.Deserialize(msg); Assert.NotSame(obj1, obj2); Assert.Equal(obj1.Name, obj2.Name); Assert.Equal(obj1.Age, obj2.Age); }
public void ListOfArrays() { Assert.True(PropertyBasedSerializationSurrogate.CanHandle(typeDataCache, FudgeFieldNameConvention.Identity, typeof(ListOfArraysClass))); var serializer = new FudgeSerializer(context); // We're relying on it auto-discovering the type surrogate var obj1 = new ListOfArraysClass(); obj1.List = new List <string[]>(); obj1.List.Add(new string[] { "Bob", "Mavis" }); var msg = serializer.SerializeToMsg(obj1); var obj2 = (ListOfArraysClass)serializer.Deserialize(msg); Assert.NotSame(obj1, obj2); Assert.NotSame(obj1.List[0], obj2.List[0]); Assert.Equal(obj1.List[0], obj2.List[0]); }
public void ArrayOfSubObjects() { Assert.True(PropertyBasedSerializationSurrogate.CanHandle(typeDataCache, FudgeFieldNameConvention.Identity, typeof(ArrayOfObjectsClass))); var serializer = new FudgeSerializer(context); // We're relying on it auto-discovering the type surrogate var obj1 = new ArrayOfObjectsClass(); obj1.Subs = new SimpleExampleClass[] { new SimpleExampleClass { Name = "Bob", Age = 21 } }; var msg = serializer.SerializeToMsg(obj1); var obj2 = (ArrayOfObjectsClass)serializer.Deserialize(msg); Assert.NotSame(obj1, obj2); Assert.NotSame(obj1.Subs[0], obj2.Subs[0]); Assert.Equal(obj1.Subs[0].Name, obj2.Subs[0].Name); }
public void StaticAndTransient() { Assert.True(PropertyBasedSerializationSurrogate.CanHandle(typeDataCache, FudgeFieldNameConvention.Identity, typeof(StaticTransientClass))); var serializer = new FudgeSerializer(context); // We're relying on it auto-discovering the type surrogate StaticTransientClass.Static = 17; var obj1 = new StaticTransientClass { Transient = "Hello" }; var msg = serializer.SerializeToMsg(obj1); StaticTransientClass.Static = 19; var obj2 = (StaticTransientClass)serializer.Deserialize(msg); Assert.NotSame(obj1, obj2); Assert.Equal(null, obj2.Transient); Assert.Equal(19, StaticTransientClass.Static); }
public void RenamingFields() { Assert.True(PropertyBasedSerializationSurrogate.CanHandle(typeDataCache, FudgeFieldNameConvention.Identity, typeof(RenameFieldClass))); var serializer = new FudgeSerializer(context); // We're relying on it auto-discovering the type surrogate var obj1 = new RenameFieldClass { Name = "Albert", Age = 72 }; var msg = serializer.SerializeToMsg(obj1); Assert.Null(msg.GetString("Name")); Assert.Equal("Albert", msg.GetString("nom")); Assert.Equal(72, msg.GetInt("Age")); var obj2 = (RenameFieldClass)serializer.Deserialize(msg); Assert.NotSame(obj1, obj2); Assert.Equal(obj1.Name, obj2.Name); Assert.Equal(obj1.Age, obj2.Age); }
public void PrimitiveLists() { Assert.True(PropertyBasedSerializationSurrogate.CanHandle(typeDataCache, FudgeFieldNameConvention.Identity, typeof(PrimitiveListClass))); var serializer = new FudgeSerializer(context); // We're relying on it auto-discovering the type surrogate var obj1 = new PrimitiveListClass(); obj1.Names.Add("Fred"); obj1.Names.Add("Sheila"); var msg = serializer.SerializeToMsg(obj1); // Check the serialized format Assert.Equal(FudgeMsgFieldType.Instance, msg.GetByName("Names").Type); var listMsg = msg.GetMessage("Names"); Assert.Equal("FudgeMsg[ => Fred, => Sheila]", listMsg.ToString()); var obj2 = (PrimitiveListClass)serializer.Deserialize(msg); Assert.NotSame(obj1, obj2); Assert.Equal(obj1.Names, obj2.Names); }
public void Dictionaries() { Assert.True(PropertyBasedSerializationSurrogate.CanHandle(typeDataCache, FudgeFieldNameConvention.Identity, typeof(DictionaryClass))); var serializer = new FudgeSerializer(context); // We're relying on it auto-discovering the type surrogate var obj1 = new DictionaryClass(); obj1.Map = new Dictionary <string, SimpleExampleClass>(); obj1.Map["Fred"] = new SimpleExampleClass { Name = "Fred", Age = 23 }; obj1.Map["Jemima"] = new SimpleExampleClass { Name = "Jemima", Age = 17 }; var msg = serializer.SerializeToMsg(obj1); var obj2 = (DictionaryClass)serializer.Deserialize(msg); Assert.NotSame(obj1, obj2); Assert.NotSame(obj1.Map, obj2.Map); Assert.Equal(obj1.Map["Fred"], obj2.Map["Fred"]); Assert.Equal(obj1.Map["Jemima"], obj2.Map["Jemima"]); }
public void UnhandleableCases() { Assert.False(PropertyBasedSerializationSurrogate.CanHandle(typeDataCache, FudgeFieldNameConvention.Identity, typeof(NoDefaultConstructorClass))); Assert.False(PropertyBasedSerializationSurrogate.CanHandle(typeDataCache, FudgeFieldNameConvention.Identity, typeof(NoSetterClass))); }