H. Utku Maden
a89e51f5e7
(I just wanted to reference the first commit message from the git source code.)
78 lines
2.0 KiB
C#
78 lines
2.0 KiB
C#
using System.Runtime.CompilerServices;
|
|
using ReMime.Platform;
|
|
|
|
namespace ReMime.Tests
|
|
{
|
|
public abstract class MediaTypesByExtension<T> where T : IMediaTypeResolver, new()
|
|
{
|
|
private T CIT;
|
|
|
|
protected MediaTypesByExtension()
|
|
{
|
|
Unsafe.SkipInit(out CIT);
|
|
}
|
|
|
|
[TestInitialize]
|
|
public virtual void Initialize()
|
|
{
|
|
CIT = new T();
|
|
}
|
|
|
|
readonly (string extension, string type)[] ExampleMimeTypes = new (string, string)[] {
|
|
("png", "image/png"),
|
|
("gif", "image/gif"),
|
|
("jpeg", "image/jpeg"),
|
|
("jpg", "image/jpeg"),
|
|
("txt", "text/plain"),
|
|
("css", "text/css"),
|
|
("mp4", "video/mp4"),
|
|
("ttf", "font/ttf")
|
|
};
|
|
|
|
[TestMethod]
|
|
public void PassKnownTypes()
|
|
{
|
|
foreach (var(ext, type) in ExampleMimeTypes)
|
|
{
|
|
Assert.IsTrue(CIT.TryResolve(ext, out MediaType? result));
|
|
Assert.AreEqual(result!.FullType, type);
|
|
Assert.IsTrue(result.Extensions.Contains(ext));
|
|
}
|
|
}
|
|
}
|
|
|
|
[TestClass]
|
|
public class UnixMediaTypes : MediaTypesByExtension<UnixMediaTypeResolver>
|
|
{
|
|
[TestInitialize]
|
|
public override void Initialize()
|
|
{
|
|
if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || OperatingSystem.IsFreeBSD())
|
|
{
|
|
base.Initialize();
|
|
}
|
|
else
|
|
{
|
|
Assert.Inconclusive("Cannot test this in this platform.");
|
|
}
|
|
}
|
|
}
|
|
|
|
[TestClass]
|
|
public class Win32MediaTypes : MediaTypesByExtension<Win32MediaTypeResolver>
|
|
{
|
|
[TestInitialize]
|
|
public override void Initialize()
|
|
{
|
|
if (OperatingSystem.IsWindows())
|
|
{
|
|
base.Initialize();
|
|
}
|
|
else
|
|
{
|
|
Assert.Inconclusive("Cannot test this in this platform.");
|
|
}
|
|
}
|
|
}
|
|
}
|