Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add some more tests #13

Merged
merged 1 commit into from
Mar 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 22 additions & 22 deletions GoProVideoRenamer.UnitTests/File/FileFilterTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ public class FileFilterTests
public void FileFilter_ShouldReturnGoProAvcVideos()
{
var testFiles = new[] {
IVideoFileMocks.GetMockedIVideoFile("GH010001.mp4"),
IVideoFileMocks.GetMockedIVideoFile("GH010002.mp4"),
IVideoFileMocks.GetMockedIVideoFile("GH010003.mp4")
IVideoFileMocking.GetMockedIVideoFile("GH010001.mp4"),
IVideoFileMocking.GetMockedIVideoFile("GH010002.mp4"),
IVideoFileMocking.GetMockedIVideoFile("GH010003.mp4")
};
var fileFilter = new FileFilter();

Expand All @@ -33,9 +33,9 @@ public void FileFilter_ShouldReturnGoProAvcVideos()
public void FileFilter_ShouldReturnGoProHevcVideos()
{
var testFiles = new[] {
IVideoFileMocks.GetMockedIVideoFile("GX010001.mp4"),
IVideoFileMocks.GetMockedIVideoFile("GX010002.mp4"),
IVideoFileMocks.GetMockedIVideoFile("GX010003.mp4")
IVideoFileMocking.GetMockedIVideoFile("GX010001.mp4"),
IVideoFileMocking.GetMockedIVideoFile("GX010002.mp4"),
IVideoFileMocking.GetMockedIVideoFile("GX010003.mp4")
};
var fileFilter = new FileFilter();

Expand All @@ -48,9 +48,9 @@ public void FileFilter_ShouldReturnGoProHevcVideos()
public void FileFilter_ShouldIdentifySingleVideos()
{
var testFiles = new[] {
IVideoFileMocks.GetMockedIVideoFile("GH010001.mp4"),
IVideoFileMocks.GetMockedIVideoFile("GH010002.mp4"),
IVideoFileMocks.GetMockedIVideoFile("GH010003.mp4")
IVideoFileMocking.GetMockedIVideoFile("GH010001.mp4"),
IVideoFileMocking.GetMockedIVideoFile("GH010002.mp4"),
IVideoFileMocking.GetMockedIVideoFile("GH010003.mp4")
};
var fileFilter = new FileFilter();

Expand All @@ -63,9 +63,9 @@ public void FileFilter_ShouldIdentifySingleVideos()
public void FileFilter_ShouldIdentifyChapteredVideos()
{
var testFiles = new[] {
IVideoFileMocks.GetMockedIVideoFile("GH010001.mp4"),
IVideoFileMocks.GetMockedIVideoFile("GH020001.mp4"),
IVideoFileMocks.GetMockedIVideoFile("GH030001.mp4")
IVideoFileMocking.GetMockedIVideoFile("GH010001.mp4"),
IVideoFileMocking.GetMockedIVideoFile("GH020001.mp4"),
IVideoFileMocking.GetMockedIVideoFile("GH030001.mp4")
};
var fileFilter = new FileFilter();

Expand All @@ -78,9 +78,9 @@ public void FileFilter_ShouldIdentifyChapteredVideos()
public void FileFilter_ShouldNotIdentifyLoopedVideos()
{
var testFiles = new[] {
IVideoFileMocks.GetMockedIVideoFile("GHAA0001.mp4"),
IVideoFileMocks.GetMockedIVideoFile("GHAA0002.mp4"),
IVideoFileMocks.GetMockedIVideoFile("GHAA0003.mp4")
IVideoFileMocking.GetMockedIVideoFile("GHAA0001.mp4"),
IVideoFileMocking.GetMockedIVideoFile("GHAA0002.mp4"),
IVideoFileMocking.GetMockedIVideoFile("GHAA0003.mp4")
};
var fileFilter = new FileFilter();

Expand All @@ -93,15 +93,15 @@ public void FileFilter_ShouldNotIdentifyLoopedVideos()
public void FileFilter_ShouldNotReturnOtherFiles()
{
var goproFiles = new[] {
IVideoFileMocks.GetMockedIVideoFile("GH010001.mp4"),
IVideoFileMocks.GetMockedIVideoFile("GH020001.mp4"),
IVideoFileMocks.GetMockedIVideoFile("GH030001.mp4")
IVideoFileMocking.GetMockedIVideoFile("GH010001.mp4"),
IVideoFileMocking.GetMockedIVideoFile("GH020001.mp4"),
IVideoFileMocking.GetMockedIVideoFile("GH030001.mp4")
};
var notGoproFiles = new[] {
IVideoFileMocks.GetMockedIVideoFile("test.txt"),
IVideoFileMocks.GetMockedIVideoFile("other_video.mp4"),
IVideoFileMocks.GetMockedIVideoFile("never gonna give you up.mp3"),
IVideoFileMocks.GetMockedIVideoFile("system32")
IVideoFileMocking.GetMockedIVideoFile("test.txt"),
IVideoFileMocking.GetMockedIVideoFile("other_video.mp4"),
IVideoFileMocking.GetMockedIVideoFile("never gonna give you up.mp3"),
IVideoFileMocking.GetMockedIVideoFile("system32")
};
var allFiles = goproFiles.Union(notGoproFiles);
var fileFilter = new FileFilter();
Expand Down
205 changes: 205 additions & 0 deletions GoProVideoRenamer.UnitTests/File/FileRenameTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,205 @@
using FluentAssertions;
using GoProVideoRenamer.File;
using GoProVideoRenamer.File.VideoFile.Numbered.Interfaces;
using GoProVideoRenamer.File.VideoFile.Renamed;
using GoProVideoRenamer.File.VideoFile.Renamed.Interfaces;
using Microsoft.Extensions.Logging;
using Microsoft.VisualStudio.TestTools.UnitTesting.Logging;
using Moq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GoProVideoRenamer.UnitTests.File
{
[TestClass]
public class FileRenameTests
{
private readonly Mock<ILogger<FileRename>> _loggerMock = new Mock<ILogger<FileRename>>();
private readonly Mock<IRenamedVideoFileFactory> _factory = new Mock<IRenamedVideoFileFactory>();

[TestInitialize]
public void Setup()
{
_factory.Reset();
}

[TestMethod]
public void FileRename_ShouldWorkWhenPrefixSupplied()
{
CheckPrefixSuffixNaming(
"some result - ",
null,
[
"some result - 1.mp4",
"some result - 2.mp4",
"some result - 3.mp4",
"some result - 4.mp4",
"some result - 5.mp4",
]);
}

[TestMethod]
public void FileRename_ShouldWorkWhenSuffixSupplied()
{
CheckPrefixSuffixNaming(
null,
" - some suffix to follow",
[
"1 - some suffix to follow.mp4",
"2 - some suffix to follow.mp4",
"3 - some suffix to follow.mp4",
"4 - some suffix to follow.mp4",
"5 - some suffix to follow.mp4",
]);
}

[TestMethod]
public void FileRename_ShouldWorkWhenPrefixAndSuffixSupplied()
{
CheckPrefixSuffixNaming(
"a prefix - ",
" - and a suffix",
[
"a prefix - 1 - and a suffix.mp4",
"a prefix - 2 - and a suffix.mp4",
"a prefix - 3 - and a suffix.mp4",
"a prefix - 4 - and a suffix.mp4",
"a prefix - 5 - and a suffix.mp4",
]);
}

[TestMethod]
public void FileRename_ShouldWorkWhenNeitherPrefixNorSuffixSupplied()
{
CheckPrefixSuffixNaming(
null,
null,
[
"1.mp4",
"2.mp4",
"3.mp4",
"4.mp4",
"5.mp4",
]);
}

[TestMethod]
public void FileRename_ShouldWorkWhenDigitCountSpecified()
{
var input = GetMockedInput(5);
foreach (INumberedVideoFile file in input)
{
_factory.Setup(m => m.Create(It.IsAny<string>(), file))
.Returns<string, INumberedVideoFile>((s, f) => GetRenamed(f, s));
}

var rename = new FileRename(_loggerMock.Object, _factory.Object);

var result = rename.GetRenamedFiles(input, null, null, 3);

result.Select(r => r.NewName).Should().Equal([
"001.mp4",
"002.mp4",
"003.mp4",
"004.mp4",
"005.mp4",
]);
foreach (INumberedVideoFile file in input)
{
_factory.Verify(m => m.Create(It.IsAny<string>(), file), Times.Once());
}
}

[TestMethod]
public void FileRename_ShouldPadWhenDigitCountNotSpecified()
{
var input = GetMockedInput(10);
foreach (INumberedVideoFile file in input)
{
_factory.Setup(m => m.Create(It.IsAny<string>(), file))
.Returns<string, INumberedVideoFile>((s, f) => GetRenamed(f, s));
}

var rename = new FileRename(_loggerMock.Object, _factory.Object);

var result = rename.GetRenamedFiles(input, null, null, null);

result.Select(r => r.NewName).Should().Equal([
"01.mp4",
"02.mp4",
"03.mp4",
"04.mp4",
"05.mp4",
"06.mp4",
"07.mp4",
"08.mp4",
"09.mp4",
"10.mp4"
]);
foreach (INumberedVideoFile file in input)
{
_factory.Verify(m => m.Create(It.IsAny<string>(), file), Times.Once());
}
}

[TestMethod]
public void FileRename_ShouldThrowIfSpecifiedDigitsTooLow()
{
var input = GetMockedInput(10);
foreach (INumberedVideoFile file in input)
{
_factory.Setup(m => m.Create(It.IsAny<string>(), file))
.Returns<string, INumberedVideoFile>((s, f) => GetRenamed(f, s));
}

var rename = new FileRename(_loggerMock.Object, _factory.Object);

Assert.ThrowsException<ArgumentOutOfRangeException>(() => rename.GetRenamedFiles(input, null, null, 1));
}

private void CheckPrefixSuffixNaming(string? prefix, string? suffix, params string[] expectedFilenames)
{
var input = GetMockedInput(5);
foreach (INumberedVideoFile file in input)
{
_factory.Setup(m => m.Create(It.IsAny<string>(), file))
.Returns<string, INumberedVideoFile>((s, f) => GetRenamed(f, s));
}

var rename = new FileRename(_loggerMock.Object, _factory.Object);

var result = rename.GetRenamedFiles(input, prefix, suffix, null);

result.Select(r => r.NewName).Should().Equal(expectedFilenames);
foreach (INumberedVideoFile file in input)
{
_factory.Verify(m => m.Create(It.IsAny<string>(), file), Times.Once());
}
}

private IRenamedVideoFile GetRenamed(INumberedVideoFile input, string newName)
{
var result = new Mock<IRenamedVideoFile>();
result.Setup(m => m.NewName).Returns(newName);
return result.Object;
}

private IList<INumberedVideoFile> GetMockedInput(int count)
{
var result = new List<INumberedVideoFile>();
for (int i = 0; i < count; i++)
{
var file = new Mock<INumberedVideoFile>();
file.Setup(m => m.FileExtension).Returns(".mp4");
file.Setup(m => m.Name).Returns($"some input file.mp4");
file.Setup(m => m.NewIndex).Returns(i + 1);
result.Add(file.Object);
}

return result;
}
}
}
32 changes: 16 additions & 16 deletions GoProVideoRenamer.UnitTests/File/FileSortTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ public class FileSortTests
[TestMethod]
public void FileSort_ShouldOrderGoproFiles()
{
var file1 = IVideoFileMocks.GetIVideoFileWithMockedIFileInfo("GX010001.mp4");
var file1 = IVideoFileMocking.GetIVideoFileWithMockedIFileInfo("GX010001.mp4");
var numbered1 = new NumberedVideoFile(1, file1);
var file2 = IVideoFileMocks.GetIVideoFileWithMockedIFileInfo("GX010002.mp4");
var file2 = IVideoFileMocking.GetIVideoFileWithMockedIFileInfo("GX010002.mp4");
var numbered2 = new NumberedVideoFile(2, file2);
var file3 = IVideoFileMocks.GetIVideoFileWithMockedIFileInfo("GX010003.mp4");
var file3 = IVideoFileMocking.GetIVideoFileWithMockedIFileInfo("GX010003.mp4");
var numbered3 = new NumberedVideoFile(3, file3);
var file4 = IVideoFileMocks.GetIVideoFileWithMockedIFileInfo("GX010004.mp4");
var file4 = IVideoFileMocking.GetIVideoFileWithMockedIFileInfo("GX010004.mp4");
var numbered4 = new NumberedVideoFile(4, file4);

var files = new[]
Expand All @@ -50,13 +50,13 @@ public void FileSort_ShouldOrderGoproFiles()
[TestMethod]
public void FileSort_ShouldOrderChapteredFiles()
{
var file1 = IVideoFileMocks.GetIVideoFileWithMockedIFileInfo("GX010001.mp4");
var file1 = IVideoFileMocking.GetIVideoFileWithMockedIFileInfo("GX010001.mp4");
var numbered1 = new NumberedVideoFile(1, file1);
var file2 = IVideoFileMocks.GetIVideoFileWithMockedIFileInfo("GX020001.mp4");
var file2 = IVideoFileMocking.GetIVideoFileWithMockedIFileInfo("GX020001.mp4");
var numbered2 = new NumberedVideoFile(2, file2);
var file3 = IVideoFileMocks.GetIVideoFileWithMockedIFileInfo("GX030001.mp4");
var file3 = IVideoFileMocking.GetIVideoFileWithMockedIFileInfo("GX030001.mp4");
var numbered3 = new NumberedVideoFile(3, file3);
var file4 = IVideoFileMocks.GetIVideoFileWithMockedIFileInfo("GX040001.mp4");
var file4 = IVideoFileMocking.GetIVideoFileWithMockedIFileInfo("GX040001.mp4");
var numbered4 = new NumberedVideoFile(4, file4);

var files = new[]
Expand All @@ -82,17 +82,17 @@ public void FileSort_ShouldOrderChapteredFiles()
[TestMethod]
public void FileSort_ShouldOrderIndividualAndChapteredFiles()
{
var file1 = IVideoFileMocks.GetIVideoFileWithMockedIFileInfo("GX010001.mp4");
var file1 = IVideoFileMocking.GetIVideoFileWithMockedIFileInfo("GX010001.mp4");
var numbered1 = new NumberedVideoFile(1, file1);
var file2 = IVideoFileMocks.GetIVideoFileWithMockedIFileInfo("GX010002.mp4");
var file2 = IVideoFileMocking.GetIVideoFileWithMockedIFileInfo("GX010002.mp4");
var numbered2 = new NumberedVideoFile(2, file2);
var file3 = IVideoFileMocks.GetIVideoFileWithMockedIFileInfo("GX020002.mp4");
var file3 = IVideoFileMocking.GetIVideoFileWithMockedIFileInfo("GX020002.mp4");
var numbered3 = new NumberedVideoFile(3, file3);
var file4 = IVideoFileMocks.GetIVideoFileWithMockedIFileInfo("GX030002.mp4");
var file4 = IVideoFileMocking.GetIVideoFileWithMockedIFileInfo("GX030002.mp4");
var numbered4 = new NumberedVideoFile(4, file4);
var file5 = IVideoFileMocks.GetIVideoFileWithMockedIFileInfo("GX040002.mp4");
var file5 = IVideoFileMocking.GetIVideoFileWithMockedIFileInfo("GX040002.mp4");
var numbered5 = new NumberedVideoFile(5, file5);
var file6 = IVideoFileMocks.GetIVideoFileWithMockedIFileInfo("GX010003.mp4");
var file6 = IVideoFileMocking.GetIVideoFileWithMockedIFileInfo("GX010003.mp4");
var numbered6 = new NumberedVideoFile(6, file6);

var files = new[]
Expand Down Expand Up @@ -122,9 +122,9 @@ public void FileSort_ShouldOrderIndividualAndChapteredFiles()
[TestMethod]
public void FileSort_ShouldThrowIfFilesAreDuplicate()
{
var file1 = IVideoFileMocks.GetIVideoFileWithMockedIFileInfo("GX010001.mp4");
var file1 = IVideoFileMocking.GetIVideoFileWithMockedIFileInfo("GX010001.mp4");
var numbered1 = new NumberedVideoFile(1, file1);
var file2 = IVideoFileMocks.GetIVideoFileWithMockedIFileInfo("GX010001.mp4");
var file2 = IVideoFileMocking.GetIVideoFileWithMockedIFileInfo("GX010001.mp4");
var numbered2 = new NumberedVideoFile(2, file2);

var files = new[]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

namespace GoProVideoRenamer.UnitTests.File
{
internal class IVideoFileMocks
internal class IVideoFileMocking
{
public static IVideoFile GetMockedIVideoFile(string fileName)
{
Expand Down
Loading
Loading