Пример #1
0
        public void ShowSaveFileDialogExtensionTest()
        {
            FileType rtfFileType             = new FileType("RichText Document", ".rtf");
            FileType xpsFileType             = new FileType("XPS Document", ".xps");
            IEnumerable <FileType> fileTypes = new FileType[] { rtfFileType, xpsFileType };
            string           defaultFileName = "Document 1.rtf";
            FileDialogResult result          = new FileDialogResult("Document 2.rtf", rtfFileType);

            MockFileDialogService service = new MockFileDialogService();

            service.Result = result;

            Assert.AreEqual(result, service.ShowSaveFileDialog(rtfFileType));
            Assert.AreEqual(rtfFileType, service.FileTypes.Single());
            AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, rtfFileType));
            AssertHelper.ExpectedException <ArgumentNullException>(() => service.ShowSaveFileDialog((FileType)null));

            Assert.AreEqual(result, service.ShowSaveFileDialog(rtfFileType, defaultFileName));
            Assert.AreEqual(rtfFileType, service.FileTypes.Single());
            Assert.AreEqual(defaultFileName, service.DefaultFileName);
            AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, rtfFileType, defaultFileName));
            AssertHelper.ExpectedException <ArgumentNullException>(() => service.ShowSaveFileDialog((FileType)null, defaultFileName));

            Assert.AreEqual(result, service.ShowSaveFileDialog(fileTypes));
            Assert.IsTrue(service.FileTypes.SequenceEqual(new FileType[] { rtfFileType, xpsFileType }));
            AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, fileTypes));
        }
Пример #2
0
        public void OpenSaveDocumentTest()
        {
            MockFileDialogService fileDialogService = Container.GetExportedValue <MockFileDialogService>();
            IFileService          fileService       = Container.GetExportedValue <IFileService>();

            fileDialogService.Result = new FileDialogResult();
            fileService.OpenCommand.Execute(null);
            Assert.AreEqual(FileDialogType.OpenFileDialog, fileDialogService.FileDialogType);

            Assert.IsFalse(fileService.SaveCommand.CanExecute(null));
            Assert.IsFalse(fileService.SaveAsCommand.CanExecute(null));

            fileService.NewCommand.Execute(null);

            Assert.IsFalse(fileService.SaveCommand.CanExecute(null));
            Assert.IsTrue(fileService.SaveAsCommand.CanExecute(null));

            MainViewModel     mainViewModel     = Container.GetExportedValue <MainViewModel>();
            RichTextViewModel richTextViewModel = ViewHelper.GetViewModel <RichTextViewModel>((IView)mainViewModel.ActiveDocumentView);

            AssertHelper.CanExecuteChangedEvent(fileService.SaveCommand, () =>
                                                richTextViewModel.Document.Modified = true);

            Assert.IsTrue(fileService.SaveCommand.CanExecute(null));
            Assert.IsTrue(fileService.SaveAsCommand.CanExecute(null));

            fileDialogService.Result = new FileDialogResult();
            fileService.SaveCommand.Execute(null);
            Assert.AreEqual(FileDialogType.SaveFileDialog, fileDialogService.FileDialogType);
            Assert.IsTrue(richTextViewModel.Document.Modified);

            fileDialogService.Result = new FileDialogResult();
            fileService.SaveAsCommand.Execute(null);
            Assert.AreEqual(FileDialogType.SaveFileDialog, fileDialogService.FileDialogType);
        }
Пример #3
0
        public void SaveChangesTest()
        {
            var controller = Container.GetExportedValue <ModuleController>();

            controller.Initialize();
            controller.Run();

            ShellViewModel shellViewModel = Container.GetExportedValue <ShellViewModel>();

            shellViewModel.FileService.NewCommand.Execute(null);

            MainViewModel     mainViewModel     = Container.GetExportedValue <MainViewModel>();
            RichTextViewModel richTextViewModel = ViewHelper.GetViewModel <RichTextViewModel>((IView)mainViewModel.ActiveDocumentView);

            richTextViewModel.Document.Modified = true;

            bool showDialogCalled = false;

            MockSaveChangesView.ShowDialogAction = view =>
            {
                showDialogCalled = true;
                Assert.IsTrue(ViewHelper.GetViewModel <SaveChangesViewModel>(view).Documents.SequenceEqual(
                                  new[] { richTextViewModel.Document }));
                view.Close();
            };

            // When we try to close the ShellView then the ApplicationController shows the SaveChangesView because the
            // modified document wasn't saved.
            shellViewModel.ExitCommand.Execute(null);
            Assert.IsTrue(showDialogCalled);
            MockShellView shellView = (MockShellView)Container.GetExportedValue <IShellView>();

            Assert.IsTrue(shellView.IsVisible);

            showDialogCalled = false;
            MockSaveChangesView.ShowDialogAction = view =>
            {
                showDialogCalled = true;
                view.ViewModel.YesCommand.Execute(null);
            };

            MockFileDialogService fileDialogService = (MockFileDialogService)Container.GetExportedValue <IFileDialogService>();

            fileDialogService.Result = new FileDialogResult();

            // This time we let the SaveChangesView to save the modified document
            shellViewModel.ExitCommand.Execute(null);
            Assert.IsTrue(showDialogCalled);
            Assert.AreEqual(FileDialogType.SaveFileDialog, fileDialogService.FileDialogType);
            Assert.IsFalse(shellView.IsVisible);

            MockSaveChangesView.ShowDialogAction = null;
        }
Пример #4
0
        public void OpenDocumentTest()
        {
            MockFileDialogService fileDialogService = Container.GetExportedValue <MockFileDialogService>();
            FileController        fileController    = Container.GetExportedValue <FileController>();
            IFileService          fileService       = Container.GetExportedValue <IFileService>();

            MockDocumentType documentType = new MockDocumentType("Mock Document", ".mock");

            fileController.Register(documentType);

            Assert.IsFalse(fileService.Documents.Any());
            Assert.IsNull(fileService.ActiveDocument);

            fileDialogService.Result = new FileDialogResult("Document1.mock", new FileType("Mock Document", ".mock"));
            fileService.OpenCommand.Execute(null);

            Assert.AreEqual(FileDialogType.OpenFileDialog, fileDialogService.FileDialogType);
            Assert.AreEqual("Mock Document", fileDialogService.FileTypes.Last().Description);
            Assert.AreEqual(".mock", fileDialogService.FileTypes.Last().FileExtension);

            Assert.AreEqual(DocumentOperation.Open, documentType.DocumentOperation);
            Assert.AreEqual("Document1.mock", documentType.FileName);

            IDocument document = fileService.Documents.Last();

            Assert.AreEqual("Document1.mock", document.FileName);

            Assert.IsTrue(fileService.Documents.SequenceEqual(new[] { document }));
            Assert.AreEqual(document, fileService.ActiveDocument);

            // Open the same file again -> It's not opened again, just activated.

            fileService.ActiveDocument = null;
            fileService.OpenCommand.Execute("Document1.mock");
            Assert.IsTrue(fileService.Documents.SequenceEqual(new[] { document }));
            Assert.AreEqual(document, fileService.ActiveDocument);

            // Now the user cancels the OpenFileDialog box

            fileDialogService.Result = new FileDialogResult();
            int documentsCount = fileService.Documents.Count;

            fileService.OpenCommand.Execute(null);
            Assert.AreEqual(documentsCount, fileService.Documents.Count);

            Assert.IsTrue(fileService.Documents.SequenceEqual(new[] { document }));
            Assert.AreEqual(document, fileService.ActiveDocument);
        }
Пример #5
0
        public void SaveDocumentTest()
        {
            MockFileDialogService fileDialogService = Container.GetExportedValue <MockFileDialogService>();
            FileController        fileController    = Container.GetExportedValue <FileController>();
            IFileService          fileService       = Container.GetExportedValue <IFileService>();
            MockDocumentType      documentType      = new MockDocumentType("Mock Document", ".mock");

            fileController.Register(documentType);
            fileController.New(documentType);
            IDocument document = fileService.Documents.Single();

            document.FileName = "Document.mock";

            fileDialogService.Result = new FileDialogResult("Document1.mock", new FileType("Mock Document", ".mock"));
            fileService.SaveAsCommand.Execute(null);

            Assert.AreEqual(FileDialogType.SaveFileDialog, fileDialogService.FileDialogType);
            Assert.AreEqual("Mock Document", fileDialogService.FileTypes.Single().Description);
            Assert.AreEqual(".mock", fileDialogService.FileTypes.Single().FileExtension);
            Assert.AreEqual("Mock Document", fileDialogService.DefaultFileType.Description);
            Assert.AreEqual(".mock", fileDialogService.DefaultFileType.FileExtension);
            Assert.AreEqual("Document", fileDialogService.DefaultFileName);

            Assert.AreEqual(DocumentOperation.Save, documentType.DocumentOperation);
            Assert.AreEqual(document, documentType.Document);

            Assert.AreEqual("Document1.mock", documentType.FileName);

            // Change the CanSave to return false so that no documentType is able to save the document anymore

            documentType.CanSaveResult = false;
            Assert.IsFalse(fileService.SaveCommand.CanExecute(null));

            // Simulate an exception during the Save operation.

            MockMessageService messageService = Container.GetExportedValue <MockMessageService>();

            messageService.Clear();
            documentType.ThrowException = true;
            documentType.CanSaveResult  = true;
            fileService.SaveAsCommand.Execute(null);
            Assert.AreEqual(MessageType.Error, messageService.MessageType);
            Assert.IsFalse(string.IsNullOrEmpty(messageService.Message));
        }
Пример #6
0
        public void ShowMockFileDialogService()
        {
            var fileDialogService = new MockFileDialogService();

            var owner     = new object();
            var fileType  = new FileType("description", ".fileExtension");
            var fileTypes = new[] { fileType };
            var result    = new FileDialogResult("selectedName", fileType);

            fileDialogService.Result = result;

            Assert.AreEqual(result, fileDialogService.ShowOpenFileDialog(owner, fileTypes, fileType, "defaultFileName"));

            Assert.AreEqual(FileDialogType.OpenFileDialog, fileDialogService.FileDialogType);
            Assert.AreEqual(owner, fileDialogService.Owner);
            Assert.AreEqual(fileTypes, fileDialogService.FileTypes);
            Assert.AreEqual(fileType, fileDialogService.DefaultFileType);
            Assert.AreEqual("defaultFileName", fileDialogService.DefaultFileName);

            fileDialogService.Clear();

            Assert.AreEqual(FileDialogType.None, fileDialogService.FileDialogType);
            Assert.IsNull(fileDialogService.Owner);
            Assert.IsNull(fileDialogService.FileTypes);
            Assert.IsNull(fileDialogService.DefaultFileType);
            Assert.IsNull(fileDialogService.DefaultFileName);


            fileDialogService.Result = result;
            Assert.AreEqual(result, fileDialogService.ShowSaveFileDialog(owner, fileTypes, fileType, "defaultFileName"));

            Assert.AreEqual(FileDialogType.SaveFileDialog, fileDialogService.FileDialogType);
            Assert.AreEqual(owner, fileDialogService.Owner);
            Assert.AreEqual(fileTypes, fileDialogService.FileTypes);
            Assert.AreEqual(fileType, fileDialogService.DefaultFileType);
            Assert.AreEqual("defaultFileName", fileDialogService.DefaultFileName);
        }
Пример #7
0
        public void SaveDocumentWhenFileExistsTest()
        {
            // Get the absolute file path
            string fileName = Path.GetFullPath("SaveWhenFileExistsTest.mock");

            MockFileDialogService fileDialogService = Container.GetExportedValue <MockFileDialogService>();
            FileController        fileController    = Container.GetExportedValue <FileController>();
            IFileService          fileService       = Container.GetExportedValue <IFileService>();
            MockDocumentType      documentType      = new MockDocumentType("Mock Document", ".mock");

            fileController.Register(documentType);

            using (StreamWriter writer = new StreamWriter(fileName))
            {
                writer.WriteLine("Hello World");
            }

            IDocument document = fileController.New(documentType);

            ((MockDocument)document).Modified = true;
            // We set the absoulte file path to simulate that we already saved the document
            document.FileName = fileName;

            fileService.SaveCommand.Execute(null);
            Assert.AreEqual(DocumentOperation.Save, documentType.DocumentOperation);
            Assert.AreEqual(document, documentType.Document);
            Assert.AreEqual(fileName, documentType.FileName);

            // Simulate the scenario when the user overwrites the existing file
            fileDialogService.Result = new FileDialogResult(fileName, new FileType("Mock Document", ".mock"));
            fileService.SaveAsCommand.Execute(null);
            Assert.AreEqual("Mock Document", fileDialogService.DefaultFileType.Description);
            Assert.AreEqual(".mock", fileDialogService.DefaultFileType.FileExtension);
            Assert.AreEqual(DocumentOperation.Save, documentType.DocumentOperation);
            Assert.AreEqual(document, documentType.Document);
            Assert.AreEqual(fileName, documentType.FileName);
        }
        public void ShowSaveFileDialogExtensionTest()
        {
            var    rtfFileType     = new FileType("RichText Document", ".rtf");
            var    xpsFileType     = new FileType("XPS Document", ".xps");
            var    fileTypes       = new[] { rtfFileType, xpsFileType };
            string defaultFileName = "Document 1.rtf";
            var    result          = new FileDialogResult("Document 2.rtf", rtfFileType);

            object owner   = new object();
            var    service = new MockFileDialogService()
            {
                Result = result
            };

            Assert.AreEqual(result, service.ShowSaveFileDialog(rtfFileType));
            Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType);
            Assert.AreEqual(rtfFileType, service.FileTypes.Single());
            AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null !, rtfFileType));
            AssertHelper.ExpectedException <ArgumentNullException>(() => service.ShowSaveFileDialog((FileType)null !));

            service.Clear();
            Assert.AreEqual(result, service.ShowSaveFileDialog(owner, rtfFileType));
            Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType);
            Assert.AreEqual(owner, service.Owner);
            Assert.AreEqual(rtfFileType, service.FileTypes.Single());
            AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null !, owner, rtfFileType));
            AssertHelper.ExpectedException <ArgumentNullException>(() => service.ShowSaveFileDialog(owner, (FileType)null !));

            service.Clear();
            Assert.AreEqual(result, service.ShowSaveFileDialog(rtfFileType, defaultFileName));
            Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType);
            Assert.AreEqual(rtfFileType, service.FileTypes.Single());
            Assert.AreEqual(defaultFileName, service.DefaultFileName);
            AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null !, rtfFileType, defaultFileName));
            AssertHelper.ExpectedException <ArgumentNullException>(() => service.ShowSaveFileDialog((FileType)null !, defaultFileName));

            service.Clear();
            Assert.AreEqual(result, service.ShowSaveFileDialog(owner, rtfFileType, defaultFileName));
            Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType);
            Assert.AreEqual(owner, service.Owner);
            Assert.AreEqual(rtfFileType, service.FileTypes.Single());
            Assert.AreEqual(defaultFileName, service.DefaultFileName);
            AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null !, owner, rtfFileType, defaultFileName));
            AssertHelper.ExpectedException <ArgumentNullException>(() => service.ShowSaveFileDialog(owner, (FileType)null !, defaultFileName));

            service.Clear();
            Assert.AreEqual(result, service.ShowSaveFileDialog(fileTypes));
            Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType);
            AssertHelper.SequenceEqual(new[] { rtfFileType, xpsFileType }, service.FileTypes);
            AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null !, fileTypes));

            service.Clear();
            Assert.AreEqual(result, service.ShowSaveFileDialog(owner, fileTypes));
            Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType);
            Assert.AreEqual(owner, service.Owner);
            AssertHelper.SequenceEqual(new[] { rtfFileType, xpsFileType }, service.FileTypes);
            AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null !, owner, fileTypes));

            service.Clear();
            Assert.AreEqual(result, service.ShowSaveFileDialog(fileTypes, rtfFileType, defaultFileName));
            Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType);
            AssertHelper.SequenceEqual(new[] { rtfFileType, xpsFileType }, service.FileTypes);
            Assert.AreEqual(rtfFileType, service.DefaultFileType);
            Assert.AreEqual(defaultFileName, service.DefaultFileName);
            AssertHelper.ExpectedException <ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null !, fileTypes, rtfFileType, defaultFileName));
        }
        public void ShowSaveFileDialogExtensionTest()
        {
            FileType rtfFileType = new FileType("RichText Document", ".rtf");
            FileType xpsFileType = new FileType("XPS Document", ".xps");
            IEnumerable<FileType> fileTypes = new[] { rtfFileType, xpsFileType };
            string defaultFileName = "Document 1.rtf";
            FileDialogResult result = new FileDialogResult("Document 2.rtf", rtfFileType);

            object owner = new object();
            MockFileDialogService service = new MockFileDialogService();
            service.Result = result;

            Assert.AreEqual(result, service.ShowSaveFileDialog(rtfFileType));
            Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType);
            Assert.AreEqual(rtfFileType, service.FileTypes.Single());
            AssertHelper.ExpectedException<ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, rtfFileType));
            AssertHelper.ExpectedException<ArgumentNullException>(() => service.ShowSaveFileDialog((FileType)null));

            service.Clear();
            Assert.AreEqual(result, service.ShowSaveFileDialog(owner, rtfFileType));
            Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType);
            Assert.AreEqual(owner, service.Owner);
            Assert.AreEqual(rtfFileType, service.FileTypes.Single());
            AssertHelper.ExpectedException<ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, owner, rtfFileType));
            AssertHelper.ExpectedException<ArgumentNullException>(() => service.ShowSaveFileDialog(owner, (FileType)null));

            service.Clear();
            Assert.AreEqual(result, service.ShowSaveFileDialog(rtfFileType, defaultFileName));
            Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType);
            Assert.AreEqual(rtfFileType, service.FileTypes.Single());
            Assert.AreEqual(defaultFileName, service.DefaultFileName);
            AssertHelper.ExpectedException<ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, rtfFileType, defaultFileName));
            AssertHelper.ExpectedException<ArgumentNullException>(() => service.ShowSaveFileDialog((FileType)null, defaultFileName));

            service.Clear();
            Assert.AreEqual(result, service.ShowSaveFileDialog(owner, rtfFileType, defaultFileName));
            Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType);
            Assert.AreEqual(owner, service.Owner);
            Assert.AreEqual(rtfFileType, service.FileTypes.Single());
            Assert.AreEqual(defaultFileName, service.DefaultFileName);
            AssertHelper.ExpectedException<ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, owner, rtfFileType, defaultFileName));
            AssertHelper.ExpectedException<ArgumentNullException>(() => service.ShowSaveFileDialog(owner, (FileType)null, defaultFileName));

            service.Clear();
            Assert.AreEqual(result, service.ShowSaveFileDialog(fileTypes));
            Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType);
            Assert.IsTrue(service.FileTypes.SequenceEqual(new[] { rtfFileType, xpsFileType }));
            AssertHelper.ExpectedException<ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, fileTypes));

            service.Clear();
            Assert.AreEqual(result, service.ShowSaveFileDialog(owner, fileTypes));
            Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType);
            Assert.AreEqual(owner, service.Owner);
            Assert.IsTrue(service.FileTypes.SequenceEqual(new[] { rtfFileType, xpsFileType }));
            AssertHelper.ExpectedException<ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, owner, fileTypes));

            service.Clear();
            Assert.AreEqual(result, service.ShowSaveFileDialog(fileTypes, rtfFileType, defaultFileName));
            Assert.AreEqual(FileDialogType.SaveFileDialog, service.FileDialogType);
            Assert.IsTrue(service.FileTypes.SequenceEqual(new[] { rtfFileType, xpsFileType }));
            Assert.AreEqual(rtfFileType, service.DefaultFileType);
            Assert.AreEqual(defaultFileName, service.DefaultFileName);
            AssertHelper.ExpectedException<ArgumentNullException>(() => FileDialogServiceExtensions.ShowSaveFileDialog(null, fileTypes, rtfFileType, defaultFileName));
        }
Пример #10
0
        public void ShowMockFileDialogService()
        {
            var fileDialogService = new MockFileDialogService();

            var owner     = new object();
            var fileType  = new FileType("description", ".fileExtension");
            var fileTypes = new[] { fileType };
            var result    = new FileDialogResult("selectedName", fileType);

            fileDialogService.Result = result;

            Assert.AreEqual(result, fileDialogService.ShowOpenFileDialog(owner, fileTypes, fileType, "defaultFileName"));

            Assert.AreEqual(FileDialogType.OpenFileDialog, fileDialogService.FileDialogType);
            Assert.AreEqual(owner, fileDialogService.Owner);
            Assert.AreEqual(fileTypes, fileDialogService.FileTypes);
            Assert.AreEqual(fileType, fileDialogService.DefaultFileType);
            Assert.AreEqual("defaultFileName", fileDialogService.DefaultFileName);

            fileDialogService.Clear();

            Assert.AreEqual(FileDialogType.None, fileDialogService.FileDialogType);
            Assert.IsNull(fileDialogService.Owner);
            Assert.IsFalse(fileDialogService.FileTypes.Any());
            Assert.IsNull(fileDialogService.DefaultFileType);
            Assert.IsNull(fileDialogService.DefaultFileName);


            fileDialogService.Result = result;
            Assert.AreEqual(result, fileDialogService.ShowSaveFileDialog(owner, fileTypes, fileType, "defaultFileName"));

            Assert.AreEqual(FileDialogType.SaveFileDialog, fileDialogService.FileDialogType);
            Assert.AreEqual(owner, fileDialogService.Owner);
            Assert.AreEqual(fileTypes, fileDialogService.FileTypes);
            Assert.AreEqual(fileType, fileDialogService.DefaultFileType);
            Assert.AreEqual("defaultFileName", fileDialogService.DefaultFileName);

            var showOpenFileDialogCalled = false;

            fileDialogService.ShowOpenFileDialogStub = (view, fTypes, defaultFType, defaultFName) =>
            {
                showOpenFileDialogCalled = true;
                Assert.AreSame(owner, view);
                Assert.AreSame(fTypes, fileTypes);
                Assert.AreSame(defaultFType, fileType);
                Assert.AreEqual("defaultFileName", defaultFName);
                return(new FileDialogResult());
            };
            Assert.IsFalse(fileDialogService.ShowOpenFileDialog(owner, fileTypes, fileType, "defaultFileName").IsValid);
            Assert.IsTrue(showOpenFileDialogCalled);

            var showSaveFileDialogCalled = false;

            fileDialogService.ShowSaveFileDialogStub = (view, fTypes, defaultFType, defaultFName) =>
            {
                showSaveFileDialogCalled = true;
                Assert.AreSame(owner, view);
                Assert.AreSame(fTypes, fileTypes);
                Assert.AreSame(defaultFType, fileType);
                Assert.AreEqual("defaultFileName", defaultFName);
                return(new FileDialogResult());
            };
            Assert.IsFalse(fileDialogService.ShowSaveFileDialog(owner, fileTypes, fileType, "defaultFileName").IsValid);
            Assert.IsTrue(showSaveFileDialogCalled);
        }