void TestRequired <From, To>() { var from = Random.Init <From>(); Util.RoundtripStream <From, To> testRequired = (serialize, deserialize) => { var stream = new MemoryStream(); serialize(from, stream); stream.Position = 0; try { deserialize(stream); Assert.Fail("Missing required field not detected."); } catch (InvalidDataException e) { Assert.IsTrue(e.Message.Contains("Required field"), e.Message); } }; testRequired(Util.SerializeCB, Util.DeserializeCB <To>); // TODO: tagged protocol determine missing required fields during schema valiadation //testRequired(Util.SerializeSP, Util.DeserializeSP<From, To>); }
void BondedSerialize <D>(D from, IBonded bonded) where D : class, new() { Util.RoundtripStream <IBonded, D> streamRoundtrip = (serialize, deserialize) => { var stream = new MemoryStream(); serialize(bonded, stream); stream.Position = 0; var to = deserialize(stream); Assert.IsTrue(to.IsEqual <D>(from)); }; streamRoundtrip(Util.SerializeCB, Util.DeserializeCB <D>); streamRoundtrip(Util.SerializeFB, Util.DeserializeFB <D>); }
public void TypeMismatch <From, To>() { Util.RoundtripStream <BondClass <From>, BondClass <To> > test = (serialize, deserialize) => { try { var stream = new MemoryStream(); serialize(new BondClass <From>(), stream); stream.Position = 0; deserialize(stream); Assert.Fail("Deserialization of mismatched type didn't throw exception."); } catch (InvalidDataException) {} }; // TODO: for untagged protocol mismatch schema will be detected in schema validation test(Util.SerializeCB, Util.DeserializeCB <BondClass <To> >); }