using System.Collections.Generic;
public class VideoFileSearcher
public static List<string> FindVideoFiles(string directoryPath)
List<string> videoFiles = new List<string>();
string[] videoExtensions = { ".mp4", ".avi", ".mov", ".wmv", ".flv" };
if (!Directory.Exists(directoryPath))
Console.WriteLine($"Error: Directory not found: {directoryPath}");
return new List<string>();
string[] allFiles = Directory.GetFiles(directoryPath, "*.*", SearchOption.AllDirectories);
foreach (string file in allFiles)
if (videoExtensions.Contains(Path.GetExtension(file).ToLower()))
Console.WriteLine($"Error: An exception occurred: {ex.Message}");
return new List<string>();
public static void CreateDirectory(string folderPath)
if (!Directory.Exists(folderPath))
Directory.CreateDirectory(folderPath);
Console.WriteLine("Folder created: " + folderPath);
Console.WriteLine("Folder already exists: " + folderPath);
Console.WriteLine("Error creating folder: " + ex.Message);
public static int Main(string[] args)
return new AutoRun().Execute(args);
public class VideoFileSearcherTests
private string _testDirectory;
_testDirectory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
Directory.CreateDirectory(_testDirectory);
File.WriteAllText(Path.Combine(_testDirectory, "test1.mp4"), "dummy content");
File.WriteAllText(Path.Combine(_testDirectory, "test2.avi"), "dummy content");
File.WriteAllText(Path.Combine(_testDirectory, "test3.txt"), "dummy content");
string subDirectory = Path.Combine(_testDirectory, "subdir");
Directory.CreateDirectory(subDirectory);
File.WriteAllText(Path.Combine(subDirectory, "test4.mov"), "dummy content");
if (Directory.Exists(_testDirectory))
Directory.Delete(_testDirectory, true);
public void FindVideoFiles_ValidDirectory_ReturnsListOfVideoFiles()
List<string> videoFiles = VideoFileSearcher.FindVideoFiles(_testDirectory);
Assert.AreEqual(3, videoFiles.Count);
Assert.IsTrue(videoFiles.Any(f => Path.GetFileName(f) == "test1.mp4"));
Assert.IsTrue(videoFiles.Any(f => Path.GetFileName(f) == "test2.avi"));
Assert.IsTrue(videoFiles.Any(f => Path.GetFileName(f) == "test4.mov"));
public void FindVideoFiles_DirectoryNotFound_ReturnsEmptyList()
string nonExistentDirectory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
List<string> videoFiles = VideoFileSearcher.FindVideoFiles(nonExistentDirectory);
Assert.IsEmpty(videoFiles);
public void FindVideoFiles_NoVideoFiles_ReturnsEmptyList()
string emptyDirectory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
Directory.CreateDirectory(emptyDirectory);
List<string> videoFiles = VideoFileSearcher.FindVideoFiles(emptyDirectory);
Assert.IsEmpty(videoFiles);
Directory.Delete(emptyDirectory);
public void FindVideoFiles_EmptyDirectoryPath_ReturnsEmptyList()
string emptyDirectoryPath = "";
List<string> videoFiles = VideoFileSearcher.FindVideoFiles(emptyDirectoryPath);
Assert.IsEmpty(videoFiles);
public void FindVideoFiles_DirectoryWithMixedCaseExtensions_ReturnsListOfVideoFiles()
string mixedCaseDirectory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
Directory.CreateDirectory(mixedCaseDirectory);
File.WriteAllText(Path.Combine(mixedCaseDirectory, "test.Mp4"), "dummy content");
File.WriteAllText(Path.Combine(mixedCaseDirectory, "test.aVi"), "dummy content");
File.WriteAllText(Path.Combine(mixedCaseDirectory, "test.MOV"), "dummy content");
List<string> videoFiles = VideoFileSearcher.FindVideoFiles(mixedCaseDirectory);
Assert.AreEqual(3, videoFiles.Count);
Assert.IsTrue(videoFiles.Any(f => Path.GetFileName(f) == "test.Mp4"));
Assert.IsTrue(videoFiles.Any(f => Path.GetFileName(f) == "test.aVi"));
Assert.IsTrue(videoFiles.Any(f => Path.GetFileName(f) == "test.MOV"));
Directory.Delete(mixedCaseDirectory, true);