public void IsSatisfiedBy_ForSingleRule_WithFalse_ReturnsFalse() { var info = new RenamerInfo(); var fileSystem = new Mock <IFileSystem>().Object; var rule1 = new RenamerRule("rule 1", (a, b) => false); var result = rule1.IsSatisfiedBy(info, fileSystem); Assert.IsFalse(result, "False rule is meant to be false"); }
private void Window_Initialized(object sender, EventArgs e) { TextBoxLogger.Initialize(LogsTextBox, StatusLabel, StatusImage); _ruleSet = BuildRuleSet(); _renamer = new Renamer(TextBoxLogger.Get(), FileSystemWrapper.Create(), _ruleSet); _renamer.TargetFolderAdded += Renamer_TargetFolderAdded; _renamer.RenamesSet += Renamer_RenamesSet; _renamer.SolutionRenamed += Renamer_SolutionRenamed; _renameTimer.Tick += RenameTimer_Tick; _renameTimer.Interval = TimeSpan.FromSeconds(1.5); }
public void IsSatisfiedBy_ForMultipleRules_WithTrueAndTrue_ReturnsTrue() { var info = new RenamerInfo(); var fileSystem = new Mock <IFileSystem>().Object; var rule1 = new RenamerRule("rule 1", (a, b) => true); var rule2 = new RenamerRule("rule 2", (a, b) => true); rule1.Next = rule2; var result = rule1.IsSatisfiedBy(info, fileSystem); Assert.IsTrue(result, "True and true rules are meant to be true"); }
public void IsSatisfiedBy_ForMultipleRules_WithFalseAndFalse_ReturnsFalse() { var info = new RenamerInfo(); var fileSystem = new Mock <IFileSystem>().Object; var rule1 = new RenamerRule("rule 1", (a, b) => false); var rule2 = new RenamerRule("rule 2", (a, b) => false); rule1.Next = rule2; var result = rule1.IsSatisfiedBy(info, fileSystem); Assert.IsFalse(result, "False and false rules are meant to be false"); }
public RenamerInfo GetFiles(string folder, RenamerRule ruleSet) { if (string.IsNullOrWhiteSpace(folder)) { throw new ArgumentNullException(nameof(folder)); } var root = new RenamerInfo { Path = folder, FileType = FileType.Directory, IsIncluded = true }; RecursiveBuildRenamerInfo(root, ruleSet, true); return(root); }
private void RecursiveBuildRenamerInfo(RenamerInfo parent, RenamerRule ruleSet, bool isRoot) { // go through each of the children // create renamer around each file/folder var entries = Directory.EnumerateFileSystemEntries(parent.Path).ToList(); foreach (var path in entries) { var fixedPath = path.ToLower(); var info = new RenamerInfo { Path = path, FileType = Directory.Exists(fixedPath) ? FileType.Directory : fixedPath.EndsWith(".sln") ? FileType.Solution : fixedPath.EndsWith(".dll") ? FileType.Library : fixedPath.EndsWith(".exe") ? FileType.Executable : fixedPath.EndsWith(".config") ? FileType.Config : fixedPath.EndsWith(".cs") ? FileType.Code : fixedPath.EndsWith(".csproj") ? FileType.Project : fixedPath.EndsWith(".sqlproj") ? FileType.Project : FileType.Other }; info.IsIncluded = ruleSet.IsSatisfiedBy(info, this); parent.Children.Add(info); } // for speed, only continue if we are in a solution folder if (!isRoot || parent.ContainsSolutionFile) { foreach (var info in parent.Children) { if (info.FileType == FileType.Directory) { RecursiveBuildRenamerInfo(info, ruleSet, false); } } } }