public void UnknownType() { var formatter = new CloudFormatter(); using (var stream = new MemoryStream()) { var item = new MockWithObject { Generic = DateTime.UtcNow.Second > 30 ? (object)100 : "hello" }; formatter.Serialize(item, stream, typeof(MockWithObject)); stream.Seek(0, SeekOrigin.Begin); var output = (MockWithObject)formatter.Deserialize(stream, typeof(MockWithObject)); Assert.AreEqual(item.Generic, output.Generic); } }
public void UnpackRepack() { var formatter = new CloudFormatter(); // STRING foreach (var result in ApplyUnpackRepackXml(formatter, "test!")) { Assert.AreEqual("test!", result, "string"); } // INTEGER foreach (var result in ApplyUnpackRepackXml(formatter, 123)) { Assert.AreEqual(123, result, "integer"); } // BYTE ARRAY var byteArray = new byte[] { 1, 2, 3 }; foreach (var result in ApplyUnpackRepackXml(formatter, byteArray)) { CollectionAssert.AreEquivalent(byteArray, result, "byte array"); } // COMPLEX DATA var complexInput = new[] { new MockComplex { Prop1 = "0", Prop2 = 0, Flags = new List <MockEnum> { MockEnum.Item1 }, Ignored = "hi!", InvoiceId = "700", Field = 0.0F }, new MockComplex { Prop1 = "1", Prop2 = 1, Flags = new List <MockEnum> { MockEnum.Item2 }, Ignored = "hi!", InvoiceId = "800", Field = 1.0F }, new MockComplex { Prop1 = "2", Prop2 = 2, Flags = new List <MockEnum> { MockEnum.Item3, MockEnum.Item1 }, Ignored = "hi!", Field = 2.0F } }; foreach (var result in ApplyUnpackRepackXml(formatter, complexInput)) { Assert.AreEqual(complexInput.Length, result.Length); for (int i = 0; i < complexInput.Length; i++) { Assert.AreEqual(complexInput[i].Field, result[i].Field); Assert.AreEqual(complexInput[i].Prop1, result[i].Prop1); Assert.AreEqual(complexInput[i].Prop2, result[i].Prop2); CollectionAssert.AreEquivalent(complexInput[i].Flags, result[i].Flags); Assert.IsNull(result[i].Ignored); Assert.AreEqual(complexInput[i].InvoiceId, result[i].InvoiceId); } } // SERIALIZABLE INSTEAD OF DATA CONTRACT var serializableInput = new MockComplex2 { Prop1 = "0", Prop2 = 0, Flags = new List <MockEnum> { MockEnum.Item1 }, }; foreach (var result in ApplyUnpackRepackXml(formatter, serializableInput)) { Assert.AreEqual(serializableInput.Prop1, result.Prop1); Assert.AreEqual(serializableInput.Prop2, result.Prop2); Assert.AreEqual(serializableInput.Flags.Count, result.Flags.Count); } // UNTYPED DATA var unknownInput = new MockWithObject { Generic = DateTime.UtcNow.Second > 30 ? (object)100 : "hello" }; foreach (var result in ApplyUnpackRepackXml(formatter, unknownInput)) { Assert.AreEqual(unknownInput.Generic, result.Generic); } }