Пример #1
0
        public override object ReadJson(JsonReader reader,
                                        Type objectType, object existingValue, JsonSerializer serializer)
        {
            JObject jObject = JObject.Load(reader);

            string actionType = (string)jObject["Action"] ?? string.Empty;

            ModInstallAction item = null;

            if (actionType.Equals("MoveFile", StringComparison.InvariantCultureIgnoreCase))
            {
                item = new MoveFileAction();
            }
            else if (actionType.Equals("MoveFiles", StringComparison.InvariantCultureIgnoreCase))
            {
                item = new MoveFilesAction();
            }
            else if (actionType.Equals("DeleteFiles", StringComparison.InvariantCultureIgnoreCase))
            {
                item = new DeleteFilesAction();
            }
            else if (actionType.Equals("ReplaceFile", StringComparison.InvariantCultureIgnoreCase))
            {
                item = new ReplaceFileAction();
            }
            else if (actionType.Equals("ReplaceFiles", StringComparison.InvariantCultureIgnoreCase))
            {
                item = new ReplaceFilesAction();
            }
            else if (actionType.Equals("CopyFile", StringComparison.InvariantCultureIgnoreCase))
            {
                item = new CopyFileAction();
            }
            else if (actionType.Equals("CopyFiles", StringComparison.InvariantCultureIgnoreCase))
            {
                item = new CopyFilesAction();
            }
            else if (actionType.Equals("WriteToFile", StringComparison.InvariantCultureIgnoreCase))
            {
                item = new WriteToFileAction();
            }
            else if (actionType.Equals("QuickBMSExtract", StringComparison.InvariantCultureIgnoreCase))
            {
                item = new QuickBMSExtractAction();
            }
            else if (actionType.Equals("UnluacDecompile", StringComparison.InvariantCultureIgnoreCase))
            {
                item = new UnluacDecompileAction();
            }
            else
            {
                item = new ModInstallAction();
            }

            serializer.Populate(jObject.CreateReader(), item);

            return(item);
        }
Пример #2
0
        static bool CheckFileDeleteAction(DeleteFilesAction action, List <string> loadErrors)
        {
            // Can only delete files in the game path
            if (!action.TargetFiles.All(f => ValidGameFilePath(f)))
            {
                loadErrors.Add($"FileDelete - {nameof(action.TargetFiles)}: Provided path must be in the [GAME] folder");
                return(false);
            }

            return(action.TargetFiles.All(s => !string.IsNullOrWhiteSpace(s)));
        }
Пример #3
0
        public void DeleteFileFailsWhenArgumentsNull()
        {
            var deleteFileAction = new DeleteFilesAction
            {
                Id = Guid.NewGuid().ToString("N")
            };
            var result = deleteFileAction.Execute(null);

            Assert.IsNotNull(result);
            Assert.IsFalse(result.Result);
        }
Пример #4
0
        public void DeleteFileFailsWhenMissingArgument()
        {
            var deleteFileAction = new DeleteFilesAction
            {
                Id = Guid.NewGuid().ToString("N")
            };
            var args   = new ArgumentCollection();
            var result = deleteFileAction.Execute(args);

            Assert.IsNotNull(result);
            Assert.IsFalse(result.Result);
        }
Пример #5
0
        public void DeleteFileFailsWhenFileDoesNotExist()
        {
            var deleteFileAction = new DeleteFilesAction
            {
                Id = Guid.NewGuid().ToString("N")
            };
            var filePath = @"\\//?-#.";
            var args     = new ArgumentCollection((DeleteFilesActionExecutionArgs.FilesPaths, new List <string> {
                filePath
            }));
            var result   = deleteFileAction.Execute(args);

            Assert.IsNotNull(result);
            Assert.IsFalse(result.Result);
        }
Пример #6
0
        public void DeleteFileFailsWhenUsedByAnotherProcess()
        {
            var deleteFileAction = new DeleteFilesAction
            {
                Id = Guid.NewGuid().ToString("N")
            };
            var filePath          = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
            var createdFileStream = File.Create(filePath);

            Assert.IsTrue(File.Exists(filePath));
            var args   = new ArgumentCollection((DeleteFilesActionExecutionArgs.FilesPaths, new List <string> {
                filePath
            }));
            var result = deleteFileAction.Execute(args);

            Assert.IsNotNull(result);
            Assert.IsFalse(result.Result);
            Assert.IsTrue(File.Exists(filePath));
            createdFileStream.Close();
            File.Delete(filePath);
            Assert.IsFalse(File.Exists(filePath));
        }
Пример #7
0
        public void DeleteFileTestSuccess()
        {
            var deleteFileAction = new DeleteFilesAction
            {
                Id = Guid.NewGuid().ToString("N")
            };
            var filePath = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            using (var file = File.Create(filePath))
            {
            }

            Assert.IsTrue(File.Exists(filePath));
            var args   = new ArgumentCollection((DeleteFilesActionExecutionArgs.FilesPaths, new List <string> {
                filePath
            }));
            var result = deleteFileAction.Execute(args);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Result);
            Assert.IsFalse(File.Exists(filePath));
        }