示例#1
0
        public void Should_Serialize_Fields()
        {
            var mapping = ObjectSerializationMapper.Create()
                          .FromType <FieldTestClass>()
                          .PublicFields()
                          .Map();

            var serializationOps = ObjectSerializerCompiler.CompileSerializationOps(mapping).ToList().AsReadOnly();

            var context = ObjectSerializerInterpreter.InterpretObjectSerializationNullContext(
                typeof(FieldTestClass),
                serializationOps,
                ObjectSerializerProgram.GetOpValueSerializerTypes(serializationOps).ToList().AsReadOnly()
                );

            var serializeDelegate = ObjectSerializerInterpreter.InterpretDynamicSerializeDelegate(
                context,
                typeof(FieldTestClass),
                serializationOps
                );

            var testObject = new FieldTestClass()
            {
                X = 1500, Y = 37500
            };
            var buffer = new byte[8];

            serializeDelegate(context, testObject, buffer, 0);

            Assert.Equal(testObject.X, MemoryMapper.ReadInt(buffer, 0));
            Assert.Equal(testObject.Y, MemoryMapper.ReadInt(buffer, sizeof(int)));
        }
示例#2
0
        public void TestFieldParseMethodForObject()
        {
            // Prepare
            var obj    = new FieldTestClass();
            var fields = obj
                         .GetType()
                         .GetProperties()
                         .AsFields()
                         .AsList();

            // Act
            var parsed = Field.Parse(obj);

            // Assert
            Assert.AreEqual(3, parsed.Count());
            Assert.IsTrue(parsed.All(field => fields.Contains(field)));
        }