public void EditProjectAndSave()
        {
            var uiSvc = new FakeShellUiService();
            var epi = new EditProjectInteractor();
            var p = CreateTestProject();

            var ret = epi.EditProjectProperties(uiSvc, p, delegate(Project_v3 project)
            {
                var input = (DecompilerInput_v3)project.Inputs[0];
                Assert.AreEqual("test.exe", input.Filename);
                Assert.AreEqual("test.asm", input.DisassemblyFilename);
                Assert.AreEqual("test.dis", input.IntermediateFilename);
                Assert.AreEqual("test.h",   input.TypesFilename);
                Assert.AreEqual("test.c",   input.OutputFilename);
            });
            Assert.IsTrue(ret);
        }
 public void EditProjectAndCancel()
 {
     FakeShellUiService uiSvc = new FakeShellUiService();
     uiSvc.SimulateUserCancel = true;
     var project = CreateTestProject();
     var epi = new EditProjectInteractor();
     var ret = epi.EditProjectProperties(uiSvc, project, delegate(Project_v3 p)
     {
         Assert.Fail("Should not save if user cancels.");
     });
     Assert.IsFalse(ret);
     var input = (DecompilerInput_v3)project.Inputs[0];
     Assert.AreEqual("test.exe", input.Filename);
     Assert.AreEqual("test.asm", input.DisassemblyFilename);
     Assert.AreEqual("test.dis", input.IntermediateFilename);
     Assert.AreEqual("test.h", input.TypesFilename);
     Assert.AreEqual("test.c", input.OutputFilename);
 }