public void RemoveContentFilesFromDifferentDirectories() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory("/directory"); fileSystem.CreateDirectory("/directory/directory1"); if (fileSystem.TryGetFile("/directory", out var file) && file is Directory directory) { if (fileSystem.TryGetFile("/directory/directory1", out var file1) && file1 is Directory directory1) { directory.AddChild(new ContentFile("/directory/file1", "test", directory)); directory1.AddChild(new ContentFile("/directory/directory1/file2", "test", directory1)); var paths = new[] { "/directory/file1", "/directory/directory1/file2" }; Assert.IsTrue(2 == directory.GetChildren().Count()); Assert.IsTrue(1 == directory1.GetChildren().Count()); fileSystem.RemoveContentFiles(paths); Assert.IsTrue(1 == directory.GetChildren().Count()); Assert.IsTrue(!directory1.GetChildren().Any()); } else { Assert.Fail(); } } else { Assert.Fail(); } }
/// <summary> /// Executes the list directory command. /// </summary> /// <param name="fileSystem">The file system on which the command is going to be executed.</param> public override void Execute(Models.FileSystem fileSystem) { IEnumerable <File> fileList; try { fileList = fileSystem.ListDirectory(Directory); } catch (InvalidOperationException exception) { Console.WriteLine(exception.Message); return; } foreach (var file in fileList) { if (file is Directory directory) { Console.ForegroundColor = ConsoleColor.Green; Console.Write(directory.Name + " "); Console.ResetColor(); } else if (file is ContentFile contentFile) { Console.Write(contentFile.Name + " "); } } Console.WriteLine(); }
public void ChangeDirectory() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory("/directory"); fileSystem.CreateDirectory("/directory/testDirectory"); Assert.AreEqual("/", fileSystem.CurrentDirectoryPath); fileSystem.ChangeDirectory("/directory"); Assert.AreEqual("/directory", fileSystem.CurrentDirectoryPath); fileSystem.ChangeDirectory("testDirectory"); Assert.AreEqual("/directory/testDirectory", fileSystem.CurrentDirectoryPath); fileSystem.ChangeDirectory(".."); Assert.AreEqual("/directory", fileSystem.CurrentDirectoryPath); fileSystem.ChangeDirectory("../directory/testDirectory"); Assert.AreEqual("/directory/testDirectory", fileSystem.CurrentDirectoryPath); fileSystem.ChangeDirectory("/"); Assert.AreEqual("/", fileSystem.CurrentDirectoryPath); }
public void TryAddExistingDirectory() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory("directory"); fileSystem.CreateDirectory("directory"); }
public void AddTwoDirectoriesFullPath() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory("/directory"); fileSystem.CreateDirectory("/directory/test"); if (fileSystem.TryGetFile("/directory", out var directory1)) { Assert.AreEqual("directory", directory1.Name); Assert.AreEqual("/directory", directory1.Path); } else { Assert.Fail("Directory was not added or couldn't be found in the tree."); } if (fileSystem.TryGetFile("/directory/test", out var directory2)) { Assert.AreEqual("test", directory2.Name); Assert.AreEqual("/directory/test", directory2.Path); } else { Assert.Fail("Directory was not added or couldn't be found in the tree."); } }
public void TryCreateContentFileIntoMissingDirectory() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory("/directory"); fileSystem.CreateContentFile("/directory1/test", "Hello."); }
public void TryCreateContentFileWhenFileAlreadyExists() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory("/directory"); fileSystem.CreateContentFile("/directory/test", "Hello."); fileSystem.CreateContentFile("/directory/test", "Hello."); }
public void TryRemoveDirectoryWithRemoveContentFileFunction() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory("/directory"); var paths = new[] { "/directory" }; fileSystem.RemoveContentFiles(paths); }
public void TryNavigateToInvalidDirectory() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory("/directory"); fileSystem.CreateDirectory("/directory/testDirectory"); fileSystem.ChangeDirectory("/directory1"); }
/// <summary> /// Executes the concatenate command. /// </summary> /// <param name="fileSystem">The file system on which the command is going to be executed.</param> public override void Execute(Models.FileSystem fileSystem) { var hasInputFiles = InputFiles.Any(); var hasOutputFile = !string.IsNullOrWhiteSpace(OutputFile); if (hasInputFiles && hasOutputFile) { try { var concatenatedContent = ConcatenateFiles(fileSystem); fileSystem.CreateContentFile(OutputFile, concatenatedContent); } catch (InvalidOperationException operationException) { Console.WriteLine(operationException.Message); } catch (ArgumentException argumentException) { Console.WriteLine(argumentException.Message); } } else if (hasInputFiles) { try { var concatenatedContent = ConcatenateFiles(fileSystem); Console.Write(concatenatedContent); } catch (InvalidOperationException operationException) { Console.WriteLine(operationException.Message); } } else if (hasOutputFile) { var userInput = ReadUserInput(); try { fileSystem.CreateContentFile(OutputFile, userInput); } catch (InvalidOperationException operationException) { Console.WriteLine(operationException.Message); } catch (ArgumentException argumentException) { Console.WriteLine(argumentException.Message); } } else { Console.WriteLine("Couldn't execute cat command. Please check the validity of the passed parameters."); } }
/// <summary> /// Executes the remove command. /// </summary> /// <param name="fileSystem">The file system on which the command is going to be executed.</param> public override void Execute(Models.FileSystem fileSystem) { try { fileSystem.RemoveContentFiles(Paths); } catch (InvalidOperationException invalidOperationException) { Console.WriteLine(invalidOperationException.Message); } }
public void ListInvalidDirectory() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory("/directory"); fileSystem.CreateDirectory("/directory/testDirectory"); fileSystem.CreateDirectory("/directory/testDirectory1"); fileSystem.CreateDirectory("/directory/testDirectory2"); var listedDirectory = fileSystem.ListDirectory("/directory/123").ToList(); }
public void ListCurrentDirectory() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory("/directory"); fileSystem.CreateDirectory("/directory/testDirectory"); var listedDirectory = fileSystem.ListDirectory("").ToList(); Assert.AreEqual(1, listedDirectory.Count); }
/// <summary> /// Executes the change directory command. /// </summary> /// <param name="fileSystem">The file system on which the command is going to be executed.</param> public override void Execute(Models.FileSystem fileSystem) { try { fileSystem.ChangeDirectory(Path); } catch (InvalidOperationException exception) { Console.WriteLine(exception.Message); } }
public void TryCreateInvalidContentFile() { var fileSystem = new Models.FileSystem(); if (fileSystem.TryGetFile("/", out File file) && file is Directory directory) { directory.AddChild(new ContentFile(null, "Test", directory)); } else { Assert.Fail(); } }
public void CheckDefaultDirectory() { var fileSystem = new Models.FileSystem(); if (fileSystem.TryGetFile("/", out var directory)) { Assert.AreEqual("", directory.Name); Assert.AreEqual("/", directory.Path); } else { Assert.Fail(); } }
/// <summary> /// Executes the make directory command. /// </summary> /// <param name="fileSystem">The file system on which the command is going to be executed.</param> public override void Execute(Models.FileSystem fileSystem) { try { fileSystem.CreateDirectory(Path); } catch (ArgumentException argumentException) { Console.WriteLine(argumentException.Message); } catch (InvalidOperationException invalidOperationException) { Console.WriteLine(invalidOperationException.Message); } }
public void ListDirectoryRelative() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory("/directory"); fileSystem.CreateDirectory("/directory/testDirectory"); fileSystem.CreateDirectory("/directory/testDirectory1"); fileSystem.CreateDirectory("/directory/testDirectory2"); var listedDirectory = fileSystem.ListDirectory("directory").ToList(); Assert.AreEqual(3, listedDirectory.Count); Assert.IsTrue(listedDirectory.FirstOrDefault(f => f.Path == "/directory/testDirectory") != null); Assert.IsTrue(listedDirectory.FirstOrDefault(f => f.Path == "/directory/testDirectory1") != null); Assert.IsTrue(listedDirectory.FirstOrDefault(f => f.Path == "/directory/testDirectory2") != null); }
public void AddDirectoryFullPathAndTryGetIt() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory("/directory"); if (fileSystem.TryGetFile("/directory", out var directory)) { Assert.AreEqual("directory", directory.Name); Assert.AreEqual("/directory", directory.Path); } else { Assert.Fail("Directory was not added or couldn't be found in the tree."); } }
public void TryAddFileWithSameName() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory("/directory"); if (fileSystem.TryGetFile("/directory", out var file) && file is Directory directory) { directory.AddChild(new ContentFile("/directory/file1", "test", directory)); directory.AddChild(new ContentFile("/directory/file1", "test", directory)); } else { Assert.Fail(); } }
public void CreateContentFile() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory("/directory"); fileSystem.CreateContentFile("/directory/test", "Hello."); if (fileSystem.TryGetFile("/directory/test", out File file) && file is ContentFile contentFile) { Assert.IsTrue(string.Equals("Hello.", contentFile.Content)); } else { Assert.Fail(); } }
private string ConcatenateFiles(Models.FileSystem fileSystem) { var stringBuilder = new StringBuilder(); foreach (var path in InputFiles) { if (fileSystem.TryGetFile(path.Trim(), out File file) && file is ContentFile contentFile) { stringBuilder.AppendLine(contentFile.Content); } else { throw new InvalidOperationException($"File {path} couldn't be found"); } } return(stringBuilder.ToString()); }
public void TryRemoveOneDirectoryOneContentFileWithRemoveContentFileFunction() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory("/directory"); if (fileSystem.TryGetFile("/directory", out var file) && file is Directory directory) { directory.AddChild(new ContentFile("/file1", "test", directory)); var paths = new[] { "/file1", "/directory" }; fileSystem.RemoveContentFiles(paths); } else { Assert.Fail(); } }
public void TryRemoveMissingContentFile() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory("/directory"); if (fileSystem.TryGetFile("/directory", out var file) && file is Directory directory) { directory.AddChild(new ContentFile("/directory/file1", "test", directory)); var paths = new[] { "/directory/file1", "/directory/file2" }; Assert.IsTrue(1 == directory.GetChildren().Count()); fileSystem.RemoveContentFiles(paths); } else { Assert.Fail(); } }
/// <summary> /// Executes the exit command. /// </summary> /// <param name="fileSystem">The file system on which the command is going to be executed.</param> public override void Execute(Models.FileSystem fileSystem) { System.Environment.Exit(0); }
/// <summary> /// Executes the print working directory command. /// </summary> /// <param name="fileSystem">The file system on which the command is going to be executed.</param> public override void Execute(Models.FileSystem fileSystem) { Console.WriteLine(fileSystem.CurrentDirectoryPath); }
/// <summary> /// The definition of the execute method. /// </summary> /// <param name="fileSystem">The file system on which the command will be executed.</param> public abstract void Execute(Models.FileSystem fileSystem);
public void TryGetInvalidDirectory() { var fileSystem = new Models.FileSystem(); fileSystem.TryGetFile(null, out File file); }
public void TryAddInvalidDirectory() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory(null); }
public void TryAddDirectoryWithMissingPath() { var fileSystem = new Models.FileSystem(); fileSystem.CreateDirectory("/directory/test"); }