コード例 #1
0
        public void UnresolvedSubtypeMemberDeserializationYieldsNull()
        {
            var serializer  = new BinarySerialization.BinarySerializer();
            var ingredients = serializer.Deserialize <Ingredients>(new byte[] { 0x4 });

            Assert.AreEqual(null, ingredients.MainIngredient);
        }
コード例 #2
0
        public void Roundtrip()
        {
            Cereal cereal = Cerealize();


            using (var stream = new MemoryStream())
            {
                _serializer.Serialize(stream, cereal);
                stream.Position = 0;

                Assert.AreEqual(BinarySerialization.Endianness.Big, _serializer.Endianness);

                //File.WriteAllBytes("c:\\temp\\out.bin", stream.ToArray());


                var cereal2 = _serializer.Deserialize <Cereal>(stream);

                Assert.AreEqual("Cheeri", cereal2.Name);
                Assert.AreEqual(cereal.Manufacturer, cereal2.Manufacturer);
                Assert.AreEqual(cereal.NutritionalInformation.Fat, cereal2.NutritionalInformation.Fat);
                Assert.AreEqual(cereal.NutritionalInformation.Calories, cereal2.NutritionalInformation.Calories);
                Assert.AreEqual(cereal.NutritionalInformation.VitaminA, cereal2.NutritionalInformation.VitaminA);
                Assert.AreEqual(cereal.NutritionalInformation.VitaminB, cereal2.NutritionalInformation.VitaminB);
                Assert.IsTrue(cereal.NutritionalInformation.OtherNestedStuff.SequenceEqual(
                                  cereal2.NutritionalInformation.OtherNestedStuff));
                Assert.IsTrue(cereal.NutritionalInformation.OtherNestedStuff2.SequenceEqual(
                                  cereal2.NutritionalInformation.OtherNestedStuff2));

                Assert.IsTrue(cereal.NutritionalInformation.Toys.SequenceEqual(cereal2.NutritionalInformation.Toys));

                Assert.IsInstanceOfType(cereal.NutritionalInformation.Ingredients.MainIngredient, typeof(Iron));

                Assert.AreEqual(cereal2.DoubleField, cereal2.DoubleField);
                Assert.IsTrue(cereal2.OtherStuff.Contains("app"));
                Assert.IsTrue(cereal2.OtherStuff.Contains("pea"));
                Assert.IsTrue(cereal2.OtherStuff.Contains("ban"));
                Assert.AreEqual(3, cereal2.OtherStuff.Count);
                Assert.AreEqual(cereal2.OtherStuff.Count, cereal2.OtherStuffCount);
                Assert.AreEqual(CerealShape.Circular, cereal2.Shape);
                Assert.AreEqual(CerealShape.Square, cereal2.DefinitelyNotTheShape);
                Assert.IsNull(cereal2.DontSerializeMe);
                Assert.AreEqual(cereal.SerializeMe, cereal2.SerializeMe);
                Assert.AreEqual(3, cereal2.ArrayOfInts.Length);
                Assert.AreEqual(1, cereal2.ArrayOfInts[0]);
                Assert.AreEqual(2, cereal2.ArrayOfInts[1]);
                Assert.AreEqual(3, cereal2.ArrayOfInts[2]);
                Assert.AreEqual(cereal.NutritionalInformation.WeirdOutlierLengthedField.Length / 2.0, cereal2.Outlier);

                Assert.IsTrue(cereal.ExplicitlyTerminatedList.SequenceEqual(cereal2.ExplicitlyTerminatedList));
                Assert.IsTrue(cereal.ImplicitlyTerminatedList.SequenceEqual(cereal2.ImplicitlyTerminatedList));

                //string weirdOutlierLengthedField = cereal.NutritionalInformation.WeirdOutlierLengthedField;
                //Assert.AreEqual(weirdOutlierLengthedField.Substring(0, (int)cereal.Outlier*2),
                //                cereal2.NutritionalInformation.WeirdOutlierLengthedField);

                var reader = new StreamReader(cereal2.Disclaimer);
                Assert.AreEqual(Disclaimer, reader.ReadToEnd());
            }
        }
コード例 #3
0
        public void ImplicitTermination()
        {
            var data = new byte[] { 0x0, 0x1, 0x2, 0x3 };

            var serializer = new BinarySerialization.BinarySerializer();
            var byteList   = serializer.Deserialize <ImplictTermination>(data);

            Assert.AreEqual(4, byteList.Data.Count);
        }