public Mock <IPlatform> CreateMockPlatform() { if (this.mockPlatform != null) { return(this.mockPlatform); } var mockPlatform = new Mock <IPlatform>(); mockPlatform.Setup(p => p.Name).Returns("TestPlatform"); mockPlatform.Setup(p => p.PointerType).Returns(PrimitiveType.Ptr32); mockPlatform.Setup(p => p.GetBitSizeFromCBasicType(CBasicType.Char)).Returns(8); mockPlatform.Setup(p => p.GetBitSizeFromCBasicType(CBasicType.Short)).Returns(16); mockPlatform.Setup(p => p.GetBitSizeFromCBasicType(CBasicType.Int)).Returns(32); mockPlatform.Setup(p => p.GetBitSizeFromCBasicType(CBasicType.Long)).Returns(32); mockPlatform.Setup(p => p.GetBitSizeFromCBasicType(CBasicType.LongLong)).Returns(64); mockPlatform.Setup(p => p.GetBitSizeFromCBasicType(CBasicType.Float)).Returns(32); mockPlatform.Setup(p => p.GetBitSizeFromCBasicType(CBasicType.Double)).Returns(64); mockPlatform.Setup(p => p.GetBitSizeFromCBasicType(CBasicType.LongDouble)).Returns(64); mockPlatform.Setup(p => p.GetBitSizeFromCBasicType(CBasicType.Int64)).Returns(64); mockPlatform.Setup(p => p.CreateMetadata()).Returns(() => this.platformMetadata.Clone()); var arch = new X86ArchitectureFlat32(new ServiceContainer(), "x86-protected-32", new Dictionary <string, object>()); mockPlatform.Setup(p => p.Architecture).Returns(arch); mockPlatform.Setup(p => p.DefaultCallingConvention).Returns("__cdecl"); var ccStdcall = new X86CallingConvention(4, 4, 4, false, false); var ccCdecl = new X86CallingConvention(4, 4, 4, true, false); mockPlatform.Setup(p => p.GetCallingConvention(null)).Returns(ccCdecl); mockPlatform.Setup(p => p.GetCallingConvention("__stdcall")).Returns(ccStdcall); mockPlatform.Setup(p => p.SaveUserOptions()).Returns((Dictionary <string, object>)null); this.mockPlatform = mockPlatform; return(mockPlatform); }
private void Given_16bit_CallingConvention(string cConvention) { this.ccr = new CallingConventionEmitter(); this.deserializer = new FakeTypeDeserializer(32); X86CallingConvention cc; switch (cConvention) { case "__cdecl": cc = new X86CallingConvention(4, 2, 4, true, false); break; case "stdapi": case "stdcall": case "__stdcall": cc = new X86CallingConvention(4, 2, 4, false, false); break; case "pascal": cc = new X86CallingConvention(4, 2, 4, false, true); break; default: throw new NotImplementedException(cConvention + " not supported."); } this.cc = cc; }
public IPlatform CreatePlatform() { if (platform != null) { return(platform); } platform = mr.Stub <IPlatform>(); platform.Stub(p => p.Name).Return("TestPlatform"); platform.Stub(p => p.PointerType).Return(PrimitiveType.Ptr32); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Char)).Return(1); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Short)).Return(2); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Int)).Return(4); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Long)).Return(4); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.LongLong)).Return(8); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Float)).Return(4); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Double)).Return(8); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.LongDouble)).Return(8); platform.Stub(p => p.GetByteSizeFromCBasicType(CBasicType.Int64)).Return(8); platform.Stub(p => p.CreateMetadata()).Do(new Func <TypeLibrary>(() => this.platformMetadata.Clone())); var arch = new X86ArchitectureFlat32("x86-protected-32"); platform.Stub(p => p.Architecture).Return(arch); platform.Stub(p => p.DefaultCallingConvention).Return("__cdecl"); var ccStdcall = new X86CallingConvention(4, 4, 4, false, false); var ccCdecl = new X86CallingConvention(4, 4, 4, true, false); platform.Stub(p => p.GetCallingConvention(null)).Return(ccCdecl); platform.Stub(p => p.GetCallingConvention("__stdcall")).Return(ccStdcall); platform.Stub(p => p.SaveUserOptions()).Return(null); platform.Replay(); return(platform); }
public void Vafs_ReplaceArgs() { var platform = new Mock <IPlatform>(); var cc = new X86CallingConvention(4, 4, 4, false, false); platform.Setup(p => p.GetCallingConvention("")).Returns(cc); var newSig = VarargsFormatScanner.ReplaceVarargs( platform.Object, x86PrintfSig, new DataType[] { PrimitiveType.Int16, new Pointer(PrimitiveType.Char, 32) }); System.Diagnostics.Debug.Print("{0}", DumpSignature("test", newSig)); Assert.AreEqual( "void test(Stack +0004 (ptr32 char), Stack +0008 int16, Stack +000C (ptr32 char))", DumpSignature("test", newSig)); }