public void Sgrom_LoadImage() { var sc = new ServiceContainer(); var cfgSvc = mr.Stub <IConfigurationService>(); var openv = mr.Stub <OperatingEnvironment>(); var diagSvc = mr.StrictMock <IDiagnosticsService>(); var arch = new M68kArchitecture("m68k"); var platform = new SegaGenesisPlatform(sc, arch); cfgSvc.Expect(c => c.GetArchitecture("m68k")).Return(arch); cfgSvc.Expect(c => c.GetEnvironment("sega-genesis")).Return(openv); openv.Expect(o => o.Load(sc, arch)).Return(platform); sc.AddService <IConfigurationService>(cfgSvc); sc.AddService <IDiagnosticsService>(diagSvc); Given_AbsoluteMemoryMap(platform); mr.ReplayAll(); var rawBytes = new byte[0x300]; var sgrom = new RomLoader(sc, "foo.bin", rawBytes); var program = sgrom.Load(Address.Ptr32(0)); var romSegment = program.SegmentMap.Segments.Values.First(); Assert.IsNotNull(romSegment.MemoryArea, "ROM image should have been loaded into first segment"); Assert.AreSame(rawBytes, romSegment.MemoryArea.Bytes, "ROM image should have been loaded into first segment"); Assert.AreEqual(rawBytes.Length, romSegment.ContentSize); var ramSegment = program.SegmentMap.Segments.Values.First(s => s.Name == ".data"); Assert.IsNotNull(ramSegment.MemoryArea, "RAM segment should have a MemoryArea"); }
public void Sgrom_LoadImage() { var sc = new ServiceContainer(); var cfgSvc = new Mock <IConfigurationService>(); var openv = new Mock <PlatformDefinition>(); var listener = new Mock <DecompilerEventListener>(); var arch = new M68kArchitecture(sc, "m68k"); var platform = new SegaGenesisPlatform(sc, arch); cfgSvc.Setup(c => c.GetArchitecture("m68k")).Returns(arch); cfgSvc.Setup(c => c.GetEnvironment("sega-genesis")).Returns(openv.Object); openv.Setup(o => o.Load(sc, arch)).Returns(platform); sc.AddService <IConfigurationService>(cfgSvc.Object); sc.AddService <DecompilerEventListener>(listener.Object); Given_AbsoluteMemoryMap(platform); var rawBytes = new byte[0x300]; var sgrom = new RomLoader(sc, "foo.bin", rawBytes); var program = sgrom.Load(Address.Ptr32(0)); var romSegment = program.SegmentMap.Segments.Values.First(); var bmem = (ByteMemoryArea)romSegment.MemoryArea; Assert.IsNotNull(romSegment.MemoryArea, "ROM image should have been loaded into first segment"); Assert.AreSame(rawBytes, bmem.Bytes, "ROM image should have been loaded into first segment"); Assert.AreEqual(rawBytes.Length, romSegment.ContentSize); var ramSegment = program.SegmentMap.Segments.Values.First(s => s.Name == ".data"); Assert.IsNotNull(ramSegment.MemoryArea, "RAM segment should have a MemoryArea"); }
private void Given_AbsoluteMemoryMap(SegaGenesisPlatform platform) { platform.MemoryMap = new MemoryMap_v1 { Segments = new MemorySegment_v1[] { new MemorySegment_v1 { Address = "0", Name = ".text", Attributes = "rx", Size = "400000", }, new MemorySegment_v1 { Address = "E00000", Name = ".data", Attributes = "rwx", Size = "200000", }, } }; }