Example #1
0
        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>);
        }
Example #2
0
        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>);
        }
Example #3
0
        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> >);
        }