コード例 #1
0
        public void Should_Deserialize_Non_Value_Type_Fields()
        {
            var mapping = ObjectSerializationMapper.Create()
                          .FromType <NonValueTypeFieldTestClass>()
                          .PublicFields()
                          .Map();

            var deserializationOps = ObjectSerializerCompiler.CompileDeserializationOps(mapping).ToList().AsReadOnly();

            var context = ObjectSerializerInterpreter.InterpretObjectSerializationNullContext(
                typeof(NonValueTypeFieldTestClass),
                deserializationOps,
                ObjectSerializerProgram.GetOpValueSerializerTypes(deserializationOps).ToList().AsReadOnly()
                );

            var deserializeDelegate = ObjectSerializerInterpreter.InterpretDynamicDeserializeDelegate(
                context,
                typeof(NonValueTypeFieldTestClass),
                deserializationOps
                );

            var stringSerializer   = new StringSerializer();
            var bitFieldSerializer = new BitFieldSerializer();
            var nullMask           = new BitField(1);

            nullMask.SetBit(0, true);

            var buffer = new byte[64];
            var offset = 0;

            bitFieldSerializer.Serialize(nullMask, buffer, offset);
            offset += bitFieldSerializer.GetSizeFromValue(nullMask);

            // X.
            MemoryMapper.WriteInt(25, buffer, offset);
            offset += sizeof(int);

            // Y.
            MemoryMapper.WriteInt(50, buffer, offset);
            offset += sizeof(int);

            // S2.
            stringSerializer.Serialize("hello!", buffer, offset);

            var results = (NonValueTypeFieldTestClass)deserializeDelegate(context, buffer, 0);

            Assert.Equal(25, results.X);
            Assert.Equal(50, results.Y);
            Assert.Equal("hello!", results.S2);

            Assert.Null(results.S1);

            Assert.True(string.IsNullOrEmpty(results.Null));
        }
コード例 #2
0
        public void Get_Size_From_Buffer_Returns_Bit_Field_Size_And_Size_Field_In_Bytes()
        {
            var buffer = new byte[]
            {
                4, // Size of the bit field in bytes.
                1, // Bit field bytes.
                2,
                3,
                4
            };

            Assert.Equal(5, BitFieldSerializer.GetSizeFromBuffer(buffer, 0));
        }
コード例 #3
0
        public void Should_Deserialize_Nullable_Properties()
        {
            var mapping = ObjectSerializationMapper.Create()
                          .FromType <NullablePropertyTestClass>()
                          .PublicProperties()
                          .Map();

            var deserializationOps = ObjectSerializerCompiler.CompileDeserializationOps(mapping).ToList().AsReadOnly();

            var context = ObjectSerializerInterpreter.InterpretObjectSerializationNullContext(
                typeof(NullablePropertyTestClass),
                deserializationOps,
                ObjectSerializerProgram.GetOpValueSerializerTypes(deserializationOps).ToList().AsReadOnly()
                );

            var deserializeDelegate = ObjectSerializerInterpreter.InterpretDynamicDeserializeDelegate(
                context,
                typeof(NullablePropertyTestClass),
                deserializationOps
                );

            var bitFieldSerializer = new BitFieldSerializer();
            var nullMask           = new BitField(1);

            nullMask.SetBit(0, true);

            var buffer = new byte[32];
            var offset = 0;

            bitFieldSerializer.Serialize(nullMask, buffer, offset);
            offset += bitFieldSerializer.GetSizeFromValue(nullMask);

            MemoryMapper.WriteInt(50, buffer, offset);
            offset += sizeof(int);

            MemoryMapper.WriteInt(75, buffer, offset);
            offset += sizeof(int);

            MemoryMapper.WriteInt(100, buffer, offset);

            var results = (NullablePropertyTestClass)deserializeDelegate(context, buffer, 0);

            Assert.Equal(50, results.I);
            Assert.Equal(75, results.X);
            Assert.Equal(100, results.J);
        }
コード例 #4
0
        public void Deserializes_From_Buffer_Correctly()
        {
            var buffer = new byte[]
            {
                4, // Size of the bit field in bytes.
                1, // Bit field bytes.
                2,
                3,
                4
            };

            var bf = BitFieldSerializer.Deserialize(buffer, 0);

            Assert.Equal(4, bf.Length);
            Assert.Equal(1, bf.GetByteAtIndex(0));
            Assert.Equal(2, bf.GetByteAtIndex(1));
            Assert.Equal(3, bf.GetByteAtIndex(2));
            Assert.Equal(4, bf.GetByteAtIndex(3));
        }
コード例 #5
0
        public void Serializes_To_Buffer_Correctly()
        {
            var bf = new BitField(4);

            bf.SetBit(7, true);
            bf.SetBit(15, true);
            bf.SetBit(23, true);
            bf.SetBit(31, true);

            var buffer = new byte[5];

            BitFieldSerializer.Serialize(bf, buffer, 0);

            Assert.Equal(4, buffer[0]);
            Assert.Equal(1, buffer[1]);
            Assert.Equal(1, buffer[2]);
            Assert.Equal(1, buffer[3]);
            Assert.Equal(1, buffer[4]);
        }
コード例 #6
0
 public void Get_Size_From_Value_Returns_Bit_Field_Size_In_And_Size_Field_Bytes()
 {
     Assert.Equal(17, BitFieldSerializer.GetSizeFromValue(new BitField(16)));
 }