예제 #1
0
        public void VerifyStringPtrSerialization()
        {
            var obj = new StringsPair
            {
                String1 = { Value = "Test123" },
                String2 = { Value = "Test234" },
            };

            int         size       = (int)CodegenTypeExtensions.GetSerializedSize(obj);
            Span <byte> byteBuffer = stackalloc byte[size + 1];

            byteBuffer[size] = (byte)'#';

            unsafe
            {
                fixed(byte *pinnedBuffer = &byteBuffer.GetPinnableReference())
                {
                    IntPtr buffer = new IntPtr(pinnedBuffer);

                    CodegenTypeExtensions.Serialize(obj, buffer);

                    MlosUnitTestProxy.StringsPair proxy = default;
                    proxy.Buffer = buffer;

                    Assert.Equal(obj.String1.Value, proxy.String1.Value);
                    Assert.Equal(obj.String2.Value, proxy.String2.Value);
                }
            }

            Assert.Equal((byte)'#', byteBuffer[size]);
        }