Пример #1
0
        private void BtnNext_Click(object sender, RoutedEventArgs e)
        {
            var dir    = DirectoryPathBox.Text;
            var parser = new SFMDirectoryParser(dir, WindowsFileSystem.Instance);
            var error  = parser.Validate();

            if (error == SFMDirectoryParserError.NotExists)
            {
                MessageBox.Show("The path chosen is not a valid directory.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            if (error == SFMDirectoryParserError.NotLikely)
            {
                if (MessageBox.Show("The directory does not seem like the typical SFM installation. Continue?",
                                    "Warning", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.No)
                {
                    return;
                }
            }

            _config.Write(new ConfigFile(parser.Path));

            var gameinfoHandler = new GameinfoHandler(parser.GameinfoPath, WindowsFileSystem.Instance);
            var ret             = gameinfoHandler.Execute();

            /* TODO: maybe display a bit more useful error message including troubleshooting issues */
            if (ret == GameinfoHandlerError.FileInvalid)
            {
                MessageBox.Show("Failed to add entry to gameinfo.txt", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }

            SetupWindow.Instance.GoToMainWindow();
        }
Пример #2
0
        public void TestFaultyExecution()
        {
            var fs = new MockFileSystem();

            fs.CreateFile("C:\\gameinfo.txt", Encoding.UTF8.GetBytes(GameinfoDataInvalid));
            var handler = new GameinfoHandler("C:\\gameinfo.txt", fs);

            var error = handler.Execute();

            Assert.AreEqual(GameinfoHandlerError.FileInvalid, error);
        }
Пример #3
0
        public void TestNopExecution()
        {
            var fs = new MockFileSystem();

            fs.CreateFile("C:\\gameinfo.txt", Encoding.UTF8.GetBytes(_gameinfoDataComplete));
            var handler = new GameinfoHandler("C:\\gameinfo.txt", fs);

            var error = handler.Execute();

            Assert.AreEqual(GameinfoHandlerError.AlreadyAdded, error);
        }
Пример #4
0
        public void TestCorrectExecution()
        {
            var fs = new MockFileSystem();

            fs.CreateFile("C:\\gameinfo.txt", Encoding.UTF8.GetBytes(GameinfoData));
            var handler = new GameinfoHandler("C:\\gameinfo.txt", fs);

            var error = handler.Execute();

            Assert.AreEqual(GameinfoHandlerError.Success, error);

            var newdata = Encoding.UTF8.GetString(fs.ReadFile("C:\\gameinfo.txt")).Replace("\r", "");

            Assert.IsTrue(newdata.IndexOf(GameinfoHandler.GameinfoLine, StringComparison.Ordinal) != -1);
            Assert.AreEqual(_gameinfoDataComplete, newdata);
        }
Пример #5
0
        public void TestBackup()
        {
            var fs = new MockFileSystem();

            fs.CreateFile("C:\\gameinfo.txt", Encoding.UTF8.GetBytes(GameinfoData));
            var handler = new GameinfoHandler("C:\\gameinfo.txt", fs);

            handler.CreateBackup();

            Assert.IsTrue(fs.FileExists("C:\\gameinfo.txt.bak"));
            var backupdata = fs.ReadFile("C:\\gameinfo.txt.bak");

            Assert.AreEqual(GameinfoData, Encoding.UTF8.GetString(backupdata));

            /* Now test RestoreBackup */
            fs.DeleteFile("C:\\gameinfo.txt");

            handler.RestoreBackup();

            Assert.IsTrue(fs.FileExists("C:\\gameinfo.txt"));
        }