예제 #1
0
        public void ShouldDeserializeStructsWithDataContracts()
        {
            MessagePackSerializer <TestStruct> serializer = MessagePackSerializer.Get <TestStruct>();

            byte[] bytes = serializer.PackSingleObject(new TestStruct(123));

            TestStruct result = serializer.UnpackSingleObject(bytes);

            Assert.That(result.Field, Is.EqualTo(123));
        }
예제 #2
0
        public void TestIssue92_EmptyAsMpo()
        {
            var bytes = new byte[] { 0x82, 0xA1, 0x74, 0x81, 0xA1, 0x74, 0x04, 0xA4, 0x64, 0x61, 0x74, 0x61, 0x80 };

            using (var buffer = new MemoryStream(bytes))
            {
                var serializer = MessagePackSerializer.Get <Dictionary <string, MessagePackObject> >(new SerializationContext());
                var d          = serializer.Unpack(buffer);
            }
        }
        public void TestGet_WithContext_SameTypeAsGet1()
        {
            var context = new SerializationContext();
            var first   = MessagePackSerializer.Get(typeof(Image), context);

            Assert.That(first, Is.Not.Null);
            var second = MessagePackSerializer.Get <Image>(context);

            Assert.That(second, Is.Not.Null);
            Assert.That(first.GetType(), Is.EqualTo(second.GetType()));
        }
예제 #4
0
        public void TestIssue13_StringListMapAsMpoDictionary()
        {
            var target = MessagePackSerializer.Get <Dictionary <MessagePackObject, MessagePackObject> >(SerializationContext.Default, PolymorphismSchema.Default);

            using (var buffer = new MemoryStream(Convert.FromBase64String("gadyZXN1bHRzkss/8AAAAAAAAMtAAAAAAAAAAA==")))
            {
                var result = target.Unpack(buffer);
                Assert.That(result.Count, Is.EqualTo(1));
                Assert.That(result.First().Key == "results", "{0}.Key != results", result.First().Key);
                Assert.That(result.First().Value.IsList, "{0}.Value is not list", result.First().Value.UnderlyingType);
            }
        }
예제 #5
0
        public void TestIssue152()
        {
            var serializer = MessagePackSerializer.Get <Issue152>(new SerializationContext());

            using (var buffer = new MemoryStream())
            {
                var target = new Issue152();
                target.SetItems(new List <int> {
                    1, 2, 3
                });
                serializer.Pack(buffer, target);
                buffer.Position = 0;
                var result = serializer.Unpack(buffer);
                Assert.That(result.GetItems(), Is.EqualTo(target.GetItems()));
            }
        }
예제 #6
0
        public void TestIssue92_EmptyAsCollection()
        {
            var value      = new int[][] { new[] { 1, 2 }, new int[0] };
            var serializer = MessagePackSerializer.Get <int[][]>(new SerializationContext());

            using (var buffer = new MemoryStream())
            {
                serializer.Pack(buffer, value);
                buffer.Position = 0;
                var a = serializer.Unpack(buffer);
                Assert.That(a.Length, Is.EqualTo(2));
                Assert.That(a[0].Length, Is.EqualTo(2));
                Assert.That(a[0][0], Is.EqualTo(1));
                Assert.That(a[0][1], Is.EqualTo(2));
                Assert.That(a[1].Length, Is.EqualTo(0));
            }
        }
예제 #7
0
        public void TestIssue269()
        {
            var input  = new MessagePackObject(Timestamp.UtcNow.Encode());
            var target = MessagePackSerializer.UnpackMessagePackObject(MessagePackSerializer.Get <MessagePackObject>().PackSingleObject(input));

            Assert.That(target.UnderlyingType, Is.EqualTo(typeof(MessagePackExtendedTypeObject)));
            Assert.That(target.IsTypeOf <byte[]>(), Is.False);
            Assert.That(target.IsTypeOf <MessagePackExtendedTypeObject>(), Is.True);

            var forBinary = Assert.Throws <InvalidOperationException>(() => target.AsBinary());

            Assert.That(forBinary.Message, Is.EqualTo("Do not convert MsgPack.MessagePackExtendedTypeObject MessagePackObject to System.Byte[]."));

            var forString = Assert.Throws <InvalidOperationException>(() => target.AsString());

            Assert.That(forString.Message, Is.EqualTo("Do not convert MsgPack.MessagePackExtendedTypeObject MessagePackObject to System.String."));
        }
예제 #8
0
 public void TestIssue41()
 {
     using (var buffer = new MemoryStream(new byte[] { 0x84, 0x01, 0x81, 0x0a, 0x14, 0x02, 0x93, 0x14, 0x1e, 0x28, 0x03, MessagePackCode.NilValue, 0x04, 0x0 }))
     //using ( var unpacker = Unpacker.Create( buffer ) )
     {
         //unpacker.Read();
         var serializer = MessagePackSerializer.Get <MessagePackObjectDictionary>();
         //var result = serializer.UnpackFrom( unpacker );
         var result = serializer.Unpack(buffer);
         Assert.That(result.Count, Is.EqualTo(4));
         Assert.That(result[1].AsDictionary().Count, Is.EqualTo(1));
         Assert.That(result[1].AsDictionary()[10], Is.EqualTo(( MessagePackObject )0x14));
         Assert.That(result[2].AsList().Count, Is.EqualTo(3));
         Assert.That(result[2].AsList()[0], Is.EqualTo(( MessagePackObject )0x14));
         Assert.That(result[2].AsList()[1], Is.EqualTo(( MessagePackObject )0x1E));
         Assert.That(result[2].AsList()[2], Is.EqualTo(( MessagePackObject )0x28));
         Assert.That(result[3].IsNil);
         Assert.That(result[4], Is.EqualTo(( MessagePackObject )0x0));
     }
 }
예제 #9
0
        public void TestIssue73()
        {
            var original = SerializationContext.ConfigureClassic();

            try
            {
                var value =
                    new Dictionary <string, object> {
                    { "1", new object() }, { "2", new object() }
                };
                var serializer = MessagePackSerializer.Get <Dictionary <string, object> >(new SerializationContext());
                using (var buffer = new MemoryStream())
                {
                    Assert.Throws <SerializationException>(() => serializer.Pack(buffer, value));
                }
            }
            finally
            {
                SerializationContext.Default = original;
            }
        }
예제 #10
0
        public void TestIssue70()
        {
            var serializer = MessagePackSerializer.Get <DBNull>(new SerializationContext());

#if !UNITY
            // Should not be created dynamically.
            Assert.That(serializer, Is.TypeOf(typeof(DefaultSerializers.System_DBNullMessagePackSerializer)));
#endif // !UNITY

            using (var buffer = new MemoryStream())
            {
                serializer.Pack(buffer, DBNull.Value);

                buffer.Position = 0;
                var packed = Unpacking.UnpackObject(buffer);
                Assert.That(packed.IsNil, packed.ToString());

                buffer.Position = 0;
                var unpacked = serializer.Unpack(buffer);
                Assert.That(Object.ReferenceEquals(unpacked, null), Is.False);
                Assert.That(unpacked, Is.SameAs(DBNull.Value));
            }
        }
예제 #11
0
        public void Issue143()
        {
            var array =
                new object[]
            {
                "111",
                32432,
                new int[] { 9, 8 },
                909
            };
            var serializer   = MessagePackSerializer.Get <object>(new SerializationContext());
            var packedBinary = serializer.PackSingleObject(array);
            var unpacked     = serializer.UnpackSingleObject(packedBinary);
            var unpackedList = (( MessagePackObject )unpacked).AsList();

            Assert.That(unpackedList.Count, Is.EqualTo(4));
            Assert.That(unpackedList[0] == "111");
            Assert.That(unpackedList[1] == 32432);
            Assert.That(unpackedList[2].IsList);
            Assert.That(unpackedList[2].AsList().Count, Is.EqualTo(2));
            Assert.That(unpackedList[2].AsList()[0] == 9);
            Assert.That(unpackedList[2].AsList()[1] == 8);
            Assert.That(unpackedList[3] == 909);
        }
예제 #12
0
        public void TestIssue99_HoGyuLee_AotForEnumKeyDictionary()
        {
            MessagePackSerializer.PrepareType <FileMode>();
            using (var buffer = new MemoryStream(new byte[] { 0x81, 0x01, 0x00 }))
            {
                var serializer =
                    MessagePackSerializer.Get <Dictionary <FileMode, int> >(
                        PreGeneratedSerializerActivator.CreateContext(
                            SerializationMethod.Array,
                            PackerCompatibilityOptions.None
                            )
                        );
                var result = serializer.Unpack(buffer);
                Assert.That(result.Count, Is.EqualTo(1));
                var singleResult = default(KeyValuePair <FileMode, int>);
                foreach (var kv in result)
                {
                    singleResult = kv;
                }

                Assert.That(singleResult.Key, Is.EqualTo(( FileMode )1));
                Assert.That(singleResult.Value, Is.EqualTo(0));
            }
        }
 public void TestGet_WithContext_ContextIsNull_Fail()
 {
     Assert.Throws <ArgumentNullException>(() => MessagePackSerializer.Get(typeof(Image), null));
 }
 public void TestGet_WithContext_TypeIsNull_Fail()
 {
     Assert.Throws <ArgumentNullException>(() => MessagePackSerializer.Get(null, new SerializationContext()));
 }
        public void TestGet_WithoutContext_Ok()
        {
            var instance = MessagePackSerializer.Get(typeof(Image));

            Assert.That(instance, Is.Not.Null);
        }
 public void TestGet1_WithContext_Null_Fail()
 {
     Assert.Throws <ArgumentNullException>(() => MessagePackSerializer.Get <Image>(null));
 }