Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        /// <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();
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        public void TryAddExistingDirectory()
        {
            var fileSystem = new Models.FileSystem();

            fileSystem.CreateDirectory("directory");
            fileSystem.CreateDirectory("directory");
        }
Exemplo n.º 5
0
        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.");
            }
        }
Exemplo n.º 6
0
        public void TryCreateContentFileIntoMissingDirectory()
        {
            var fileSystem = new Models.FileSystem();

            fileSystem.CreateDirectory("/directory");

            fileSystem.CreateContentFile("/directory1/test", "Hello.");
        }
Exemplo n.º 7
0
        public void TryCreateContentFileWhenFileAlreadyExists()
        {
            var fileSystem = new Models.FileSystem();

            fileSystem.CreateDirectory("/directory");

            fileSystem.CreateContentFile("/directory/test", "Hello.");
            fileSystem.CreateContentFile("/directory/test", "Hello.");
        }
Exemplo n.º 8
0
        public void TryRemoveDirectoryWithRemoveContentFileFunction()
        {
            var fileSystem = new Models.FileSystem();

            fileSystem.CreateDirectory("/directory");
            var paths = new[] { "/directory" };

            fileSystem.RemoveContentFiles(paths);
        }
Exemplo n.º 9
0
        public void TryNavigateToInvalidDirectory()
        {
            var fileSystem = new Models.FileSystem();

            fileSystem.CreateDirectory("/directory");
            fileSystem.CreateDirectory("/directory/testDirectory");

            fileSystem.ChangeDirectory("/directory1");
        }
Exemplo n.º 10
0
        /// <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.");
            }
        }
Exemplo n.º 11
0
 /// <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);
     }
 }
Exemplo n.º 12
0
        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();
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
 /// <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);
     }
 }
Exemplo n.º 15
0
        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();
            }
        }
Exemplo n.º 16
0
        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();
            }
        }
Exemplo n.º 17
0
 /// <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);
     }
 }
Exemplo n.º 18
0
        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);
        }
Exemplo n.º 19
0
        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.");
            }
        }
Exemplo n.º 20
0
        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();
            }
        }
Exemplo n.º 21
0
        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();
            }
        }
Exemplo n.º 22
0
        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());
        }
Exemplo n.º 23
0
        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();
            }
        }
Exemplo n.º 24
0
        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();
            }
        }
Exemplo n.º 25
0
 /// <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);
 }
Exemplo n.º 27
0
 /// <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);
Exemplo n.º 28
0
        public void TryGetInvalidDirectory()
        {
            var fileSystem = new Models.FileSystem();

            fileSystem.TryGetFile(null, out File file);
        }
Exemplo n.º 29
0
        public void TryAddInvalidDirectory()
        {
            var fileSystem = new Models.FileSystem();

            fileSystem.CreateDirectory(null);
        }
Exemplo n.º 30
0
        public void TryAddDirectoryWithMissingPath()
        {
            var fileSystem = new Models.FileSystem();

            fileSystem.CreateDirectory("/directory/test");
        }