示例#1
0
        public unsafe void AllFieldsUnknown()
        {
            var type     = (TypeDefinition)_fixture.MockModule.LookupMember(typeof(SimpleStruct).MetadataToken);
            var contents = new MemoryBlockValue(sizeof(SimpleStruct));

            var value = new LleStructValue(_environment.ValueFactory, type.ToTypeSignature(), contents);

            Assert.False(value.IsKnown);
        }
示例#2
0
        public void ReadInteger64()
        {
            var ptrValue = new MemoryBlockValue(8);

            var value = new Integer32Value("00001111????0011001100??00??0101");

            ptrValue.WriteInteger32(0, value);
            Assert.Equal(value, ptrValue.ReadInteger32(0));
        }
示例#3
0
        public void ReadWriteFloat32()
        {
            var ptrValue = new MemoryBlockValue(4);

            var value = new Float32Value(0.12345678f);

            ptrValue.WriteFloat32(0, value);
            Assert.Equal(value.F32, ptrValue.ReadFloat32(0).F32);
        }
示例#4
0
        public void ReadWriteFloat64()
        {
            var ptrValue = new MemoryBlockValue(8);

            var value = new Float64Value(0.12345678d);

            ptrValue.WriteFloat64(0, value);
            Assert.Equal(value.F64, ptrValue.ReadFloat64(0).F64);
        }
示例#5
0
        public void ReadInteger16()
        {
            var ptrValue = new MemoryBlockValue(2);

            var value = new Integer16Value("00001111????0000");

            ptrValue.WriteInteger16(0, value);
            Assert.Equal(value, ptrValue.ReadInteger16(0));
        }
示例#6
0
        public unsafe void OneFieldUnknown()
        {
            var type     = (TypeDefinition)_fixture.MockModule.LookupMember(typeof(SimpleStruct).MetadataToken);
            var field    = type.Fields.First(f => f.Name == nameof(SimpleStruct.Y));
            var contents = new MemoryBlockValue(sizeof(SimpleStruct), true);

            var value = new LleStructValue(_environment.ValueFactory, type.ToTypeSignature(), contents);

            value.SetFieldValue(field, new Integer32Value(0, 0));
            Assert.False(value.IsKnown);
        }
示例#7
0
        public void WriteInteger16ShouldBeLittleEndian()
        {
            var ptrValue = new MemoryBlockValue(2);

            var value = new Integer16Value("00001111????0000");

            ptrValue.WriteInteger16(0, value);

            Assert.Equal(new Integer8Value("????0000"), ptrValue.ReadInteger8(0));
            Assert.Equal(new Integer8Value("00001111"), ptrValue.ReadInteger8(1));
        }
示例#8
0
        public void WriteInteger32ShouldBeLittleEndian()
        {
            var ptrValue = new MemoryBlockValue(4);

            var value = new Integer32Value("00001111" + "????0011" + "001100??" + "00??0101");

            ptrValue.WriteInteger32(0, value);

            Assert.Equal(new Integer8Value("00??0101"), ptrValue.ReadInteger8(0));
            Assert.Equal(new Integer8Value("001100??"), ptrValue.ReadInteger8(1));
            Assert.Equal(new Integer8Value("????0011"), ptrValue.ReadInteger8(2));
            Assert.Equal(new Integer8Value("00001111"), ptrValue.ReadInteger8(3));
        }
示例#9
0
        public void WriteInteger64ShouldBeLittleEndian()
        {
            var ptrValue = new MemoryBlockValue(8);

            var value = new Integer64Value("00000000" + "11111111" + "????????" + "00001111" +
                                           "????0000" + "01010101" + "0?0?0?0?" + "01010?0?");

            ptrValue.WriteInteger64(0, value);

            Assert.Equal(new Integer8Value("01010?0?"), ptrValue.ReadInteger8(0));
            Assert.Equal(new Integer8Value("0?0?0?0?"), ptrValue.ReadInteger8(1));
            Assert.Equal(new Integer8Value("01010101"), ptrValue.ReadInteger8(2));
            Assert.Equal(new Integer8Value("????0000"), ptrValue.ReadInteger8(3));
            Assert.Equal(new Integer8Value("00001111"), ptrValue.ReadInteger8(4));
            Assert.Equal(new Integer8Value("????????"), ptrValue.ReadInteger8(5));
            Assert.Equal(new Integer8Value("11111111"), ptrValue.ReadInteger8(6));
            Assert.Equal(new Integer8Value("00000000"), ptrValue.ReadInteger8(7));
        }