DeepDrftTests.csproj

- FileDatabase Tests
This commit is contained in:
daniel-c-harvey
2025-09-04 14:20:29 -04:00
parent c4c4662c67
commit e82366e47f
6 changed files with 876 additions and 0 deletions
+255
View File
@@ -0,0 +1,255 @@
using DeepDrftContent.FileDatabase.Models;
namespace DeepDrftTests;
/// <summary>
/// Tests for model classes and data structures
/// </summary>
[TestFixture]
public class ModelTests
{
[TestFixture]
public class EntryKeyTests
{
[Test]
public void EntryKey_CanBeCreated()
{
// Arrange
var key = "test-key";
var type = MediaVaultType.Image;
// Act
var entryKey = new EntryKey(key, type);
// Assert
Assert.That(entryKey.Key, Is.EqualTo(key), "Key should match");
Assert.That(entryKey.Type, Is.EqualTo(type), "Type should match");
}
[Test]
public void EntryKey_SupportsStructuralEquality()
{
// Arrange
var key1 = new EntryKey("test", MediaVaultType.Image);
var key2 = new EntryKey("test", MediaVaultType.Image);
var key3 = new EntryKey("different", MediaVaultType.Image);
// Act & Assert
Assert.That(key1, Is.EqualTo(key2), "Structurally equal keys should be equal");
Assert.That(key1, Is.Not.EqualTo(key3), "Different keys should not be equal");
Assert.That(key1.GetHashCode(), Is.EqualTo(key2.GetHashCode()), "Equal keys should have same hash code");
}
}
[TestFixture]
public class MediaModelTests
{
[Test]
public void FileBinary_CanBeCreated()
{
// Arrange
var buffer = TestData.TestPngBytes;
var size = buffer.Length;
var parameters = new FileBinaryParams(buffer, size);
// Act
var fileBinary = new FileBinary(parameters);
// Assert
Assert.That(fileBinary.Buffer, Is.EqualTo(buffer), "Buffer should match");
Assert.That(fileBinary.Size, Is.EqualTo(size), "Size should match");
}
[Test]
public void FileBinary_CanBeCreatedFromDto()
{
// Arrange
var originalBuffer = TestData.TestPngBytes;
var base64Data = Convert.ToBase64String(originalBuffer);
var dto = new FileBinaryDto(base64Data, originalBuffer.Length);
// Act
var fileBinary = FileBinary.From(dto);
// Assert
Assert.That(fileBinary.Size, Is.EqualTo(originalBuffer.Length), "Size should match");
Assert.That(fileBinary.Buffer, Is.EqualTo(originalBuffer), "Buffer should match original");
}
[Test]
public void MediaBinary_CanBeCreated()
{
// Arrange
var buffer = TestData.TestPngBytes;
var size = buffer.Length;
var extension = ".png";
var parameters = new MediaBinaryParams(buffer, size, extension);
// Act
var mediaBinary = new MediaBinary(parameters);
// Assert
Assert.That(mediaBinary.Buffer, Is.EqualTo(buffer), "Buffer should match");
Assert.That(mediaBinary.Size, Is.EqualTo(size), "Size should match");
Assert.That(mediaBinary.Extension, Is.EqualTo(extension), "Extension should match");
}
[Test]
public void ImageBinary_CanBeCreated()
{
// Arrange
var buffer = TestData.TestPngBytes;
var size = buffer.Length;
var extension = ".png";
var aspectRatio = 1.5;
var parameters = new ImageBinaryParams(buffer, size, extension, aspectRatio);
// Act
var imageBinary = new ImageBinary(parameters);
// Assert
Assert.That(imageBinary.Buffer, Is.EqualTo(buffer), "Buffer should match");
Assert.That(imageBinary.Size, Is.EqualTo(size), "Size should match");
Assert.That(imageBinary.Extension, Is.EqualTo(extension), "Extension should match");
Assert.That(imageBinary.AspectRatio, Is.EqualTo(aspectRatio), "Aspect ratio should match");
}
[Test]
public void ImageBinary_CanBeCreatedFromDto()
{
// Arrange
var originalBuffer = TestData.TestPngBytes;
var base64Data = Convert.ToBase64String(originalBuffer);
var dto = new ImageBinaryDto(base64Data, originalBuffer.Length, "image/png", 1.0);
// Act
var imageBinary = ImageBinary.From(dto);
// Assert
Assert.That(imageBinary.Size, Is.EqualTo(originalBuffer.Length), "Size should match");
Assert.That(imageBinary.Buffer, Is.EqualTo(originalBuffer), "Buffer should match original");
Assert.That(imageBinary.Extension, Is.EqualTo(".png"), "Extension should match");
Assert.That(imageBinary.AspectRatio, Is.EqualTo(1.0), "Aspect ratio should match");
}
[Test]
public void ImageBinaryDto_CanBeCreatedFromImageBinary()
{
// Arrange
var imageBinary = TestData.CreateTestImageBinary(1.5);
// Act
var dto = new ImageBinaryDto(imageBinary);
// Assert
Assert.That(dto.Size, Is.EqualTo(imageBinary.Size), "Size should match");
Assert.That(dto.Mime, Is.EqualTo(MimeTypeExtensions.GetMimeType(imageBinary.Extension)), "MIME type should match");
Assert.That(dto.AspectRatio, Is.EqualTo(imageBinary.AspectRatio), "Aspect ratio should match");
// Verify base64 encoding
var decodedBuffer = Convert.FromBase64String(dto.Base64);
Assert.That(decodedBuffer, Is.EqualTo(imageBinary.Buffer), "Decoded buffer should match original");
}
}
[TestFixture]
public class MetaDataTests
{
[Test]
public void MetaData_CanBeCreated()
{
// Arrange
var key = "test-key";
var extension = ".png";
// Act
var metaData = new MetaData(key, extension);
// Assert
Assert.That(metaData.MediaKey, Is.EqualTo(key), "MediaKey should match");
Assert.That(metaData.Extension, Is.EqualTo(extension), "Extension should match");
}
[Test]
public void ImageMetaData_CanBeCreated()
{
// Arrange
var key = "test-image";
var extension = ".jpg";
var aspectRatio = 1.77;
// Act
var imageMetaData = new ImageMetaData(key, extension, aspectRatio);
// Assert
Assert.That(imageMetaData.MediaKey, Is.EqualTo(key), "MediaKey should match");
Assert.That(imageMetaData.Extension, Is.EqualTo(extension), "Extension should match");
Assert.That(imageMetaData.AspectRatio, Is.EqualTo(aspectRatio), "Aspect ratio should match");
}
[Test]
public void MetaDataFactory_CreatesCorrectTypes()
{
// Arrange
var key = "test";
var extension = ".png";
var aspectRatio = 2.0;
// Act
var mediaMetaData = MetaDataFactory.Create(MediaVaultType.Media, key, extension, 0.0);
var imageMetaData = MetaDataFactory.Create(MediaVaultType.Image, key, extension, aspectRatio);
// Assert
Assert.That(mediaMetaData, Is.TypeOf<MetaData>(), "Should create MetaData for Media type");
Assert.That(imageMetaData, Is.TypeOf<ImageMetaData>(), "Should create ImageMetaData for Image type");
var typedImageMetaData = (ImageMetaData)imageMetaData;
Assert.That(typedImageMetaData.AspectRatio, Is.EqualTo(aspectRatio), "Aspect ratio should be set");
}
}
[TestFixture]
public class MediaFactoryTests
{
[Test]
public void MediaBinaryFactory_CreatesCorrectTypes()
{
// Arrange
var buffer = TestData.TestPngBytes;
var size = buffer.Length;
var extension = ".png";
// Act
var mediaParams = new MediaBinaryParams(buffer, size, extension);
var imageParams = new ImageBinaryParams(buffer, size, extension, 1.0);
var mediaBinary = FileBinaryFactory.Create(MediaVaultType.Media, mediaParams);
var imageBinary = FileBinaryFactory.Create(MediaVaultType.Image, imageParams);
// Assert
Assert.That(mediaBinary, Is.TypeOf<MediaBinary>(), "Should create MediaBinary for Media type");
Assert.That(imageBinary, Is.TypeOf<ImageBinary>(), "Should create ImageBinary for Image type");
var typedImageBinary = (ImageBinary)imageBinary;
Assert.That(typedImageBinary.AspectRatio, Is.EqualTo(1.0), "Aspect ratio should be set");
}
[Test]
public void MediaBinaryFactory_ThrowsForInvalidType()
{
// Arrange
var buffer = TestData.TestPngBytes;
var size = buffer.Length;
var extension = ".png";
var invalidType = (MediaVaultType)999;
// Act & Assert
var invalidParams = new MediaBinaryParams(buffer, size, extension);
Assert.Throws<ArgumentException>(() =>
{
FileBinaryFactory.Create(invalidType, invalidParams);
}, "Should throw for invalid media vault type");
}
}
}