mirror of https://github.com/SixLabors/ImageSharp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
3.0 KiB
87 lines
3.0 KiB
// Copyright (c) Six Labors and contributors.
|
|
// Licensed under the Apache License, Version 2.0.
|
|
|
|
namespace SixLabors.ImageSharp.Tests
|
|
{
|
|
using System.Linq;
|
|
using Xunit;
|
|
|
|
using ImageSharp.Formats;
|
|
|
|
public class TiffImageFormatDetectorTests
|
|
{
|
|
public static object[][] IsLittleEndianValues = new[] { new object[] { false },
|
|
new object[] { true } };
|
|
|
|
[Theory]
|
|
[MemberData(nameof(IsLittleEndianValues))]
|
|
public void DetectFormat_ReturnsTiffFormat_ForValidFile(bool isLittleEndian)
|
|
{
|
|
byte[] bytes = new TiffGenHeader()
|
|
{
|
|
FirstIfd = new TiffGenIfd()
|
|
}
|
|
.ToBytes(isLittleEndian);
|
|
|
|
TiffImageFormatDetector formatDetector = new TiffImageFormatDetector();
|
|
byte[] headerBytes = bytes.Take(formatDetector.HeaderSize).ToArray();
|
|
var format = formatDetector.DetectFormat(headerBytes);
|
|
|
|
Assert.NotNull(format);
|
|
Assert.IsType<TiffFormat>(format);
|
|
}
|
|
|
|
[Theory]
|
|
[MemberData(nameof(IsLittleEndianValues))]
|
|
public void DetectFormat_ReturnsNull_WithInvalidByteOrderMarkers(bool isLittleEndian)
|
|
{
|
|
byte[] bytes = new TiffGenHeader()
|
|
{
|
|
FirstIfd = new TiffGenIfd(),
|
|
ByteOrderMarker = 0x1234
|
|
}
|
|
.ToBytes(isLittleEndian);
|
|
|
|
TiffImageFormatDetector formatDetector = new TiffImageFormatDetector();
|
|
byte[] headerBytes = bytes.Take(formatDetector.HeaderSize).ToArray();
|
|
var format = formatDetector.DetectFormat(headerBytes);
|
|
|
|
Assert.Null(format);
|
|
}
|
|
|
|
[Theory]
|
|
[MemberData(nameof(IsLittleEndianValues))]
|
|
public void DetectFormat_ReturnsNull_WithIncorrectMagicNumber(bool isLittleEndian)
|
|
{
|
|
byte[] bytes = new TiffGenHeader()
|
|
{
|
|
FirstIfd = new TiffGenIfd(),
|
|
MagicNumber = 32
|
|
}
|
|
.ToBytes(isLittleEndian);
|
|
|
|
TiffImageFormatDetector formatDetector = new TiffImageFormatDetector();
|
|
byte[] headerBytes = bytes.Take(formatDetector.HeaderSize).ToArray();
|
|
var format = formatDetector.DetectFormat(headerBytes);
|
|
|
|
Assert.Null(format);
|
|
}
|
|
|
|
[Theory]
|
|
[MemberData(nameof(IsLittleEndianValues))]
|
|
public void DetectFormat_ReturnsNull_WithShortHeader(bool isLittleEndian)
|
|
{
|
|
byte[] bytes = new TiffGenHeader()
|
|
{
|
|
FirstIfd = new TiffGenIfd()
|
|
}
|
|
.ToBytes(isLittleEndian);
|
|
|
|
TiffImageFormatDetector formatDetector = new TiffImageFormatDetector();
|
|
byte[] headerBytes = bytes.Take(formatDetector.HeaderSize - 1).ToArray();
|
|
var format = formatDetector.DetectFormat(headerBytes);
|
|
|
|
Assert.Null(format);
|
|
}
|
|
}
|
|
}
|
|
|