Exemplo n.º 1
0
        public void Mfi_Save()
        {
            Given_Loader();
            Given_MainFormInteractor();
            Given_LoadPreferences();
            Given_DecompilerInstance();
            Given_XmlWriter();
            fsSvc.Stub(f => f.MakeRelativePath("foo.dcproject", "foo.exe")).Return("foo.exe");
            fsSvc.Stub(f => f.MakeRelativePath(Arg <string> .Is.Equal("foo.dcproject"), Arg <string> .Is.Null)).Return(null);
            mr.ReplayAll();

            When_CreateMainFormInteractor();
            Assert.IsNotNull(loader);
            dcSvc.Decompiler.Load("foo.exe");
            var p = new Reko.Core.Serialization.Procedure_v1
            {
                Address = "12345",
                Name    = "MyProc",
            };
            var program = dcSvc.Decompiler.Project.Programs[0];

            program.User.Procedures.Add(Address.Ptr32(0x12345), p);
            program.User.Heuristics.Add("shingle");

            interactor.Save();
            string s =
                @"<?xml version=""1.0"" encoding=""utf-8""?>
<project xmlns=""http://schemata.jklnet.org/Reko/v4"">
  <arch>x86-protected-32</arch>
  <platform>TestPlatform</platform>
  <input>
    <filename>foo.exe</filename>
    <user>
      <processor />
      <procedure name=""MyProc"">
        <address>00012345</address>
      </procedure>
      <heuristic name=""shingle"" />
      <registerValues />
    </user>
  </input>
</project>";

            Assert.AreEqual(s, Encoding.UTF8.GetString(xmlStm.ToArray()));
            mr.VerifyAll();
        }
Exemplo n.º 2
0
        public void Mfi_Save()
        {
            Given_Loader();
            Given_MainFormInteractor();
            Given_LoadPreferences();
            Given_DecompilerInstance();
            mr.ReplayAll();

            When_CreateMainFormInteractor();
            Assert.IsNotNull(loader);
            dcSvc.Decompiler.Load("foo.exe");
            var p = new Reko.Core.Serialization.Procedure_v1 {
                Address = "12345",
                Name    = "MyProc",
            };
            var program = dcSvc.Decompiler.Project.Programs[0];

            program.UserProcedures.Add(Address.Ptr32(0x12345), p);

            interactor.Save();
            string s =
                @"<?xml version=""1.0"" encoding=""utf-16""?>
<project xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns=""http://schemata.jklnet.org/Decompiler/v2"">
  <input>
    <filename>foo.exe</filename>
    <address>00010000</address>
    <procedure name=""MyProc"">
      <address>00012345</address>
    </procedure>
    <options>
      <HeuristicScanning>false</HeuristicScanning>
    </options>
  </input>
  <output />
</project>";

            Assert.AreEqual(s, interactor.Test_SavedProjectXml);
            mr.VerifyAll();
        }