📷 A modern, cross-platform, 2D Graphics library for .NET
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.
 
 

116 lines
4.2 KiB

// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
using SixLabors.ImageSharp.Formats.Heif;
namespace SixLabors.ImageSharp.Tests.Formats.Heif;
[Trait("Format", "Heif")]
public class HeifLocationTests
{
[Fact]
public void CheckSameLocationFromDifferentOrigin()
{
// Arrange
const int dataPosition = 50;
const int itemPosition = 100;
HeifLocation fromItem = new(HeifLocationOffsetOrigin.ItemOffset, 0, 10, 42);
HeifLocation fromFile = new(HeifLocationOffsetOrigin.FileOffset, 0, 110, 42);
HeifLocation fromData = new(HeifLocationOffsetOrigin.ItemDataOffset, 0, 60, 42);
// Act
long itemActual = fromItem.GetStreamPosition(dataPosition, itemPosition);
long fileActual = fromFile.GetStreamPosition(dataPosition, itemPosition);
long dataActual = fromData.GetStreamPosition(dataPosition, itemPosition);
// Assert
Assert.Equal(110, itemActual);
Assert.Equal(110, fileActual);
Assert.Equal(110, dataActual);
}
[Fact]
public void CheckSameLocationFromDifferentOriginWithBaseOffset()
{
// Arrange
const int dataPosition = 50;
const int itemPosition = 100;
HeifLocation fromItem = new(HeifLocationOffsetOrigin.ItemOffset, 40, 10, 42);
HeifLocation fromFile = new(HeifLocationOffsetOrigin.FileOffset, 40, 110, 42);
HeifLocation fromData = new(HeifLocationOffsetOrigin.ItemDataOffset, 40, 60, 42);
// Act
long itemActual = fromItem.GetStreamPosition(dataPosition, itemPosition);
long fileActual = fromFile.GetStreamPosition(dataPosition, itemPosition);
long dataActual = fromData.GetStreamPosition(dataPosition, itemPosition);
// Assert
Assert.Equal(150, itemActual);
Assert.Equal(150, fileActual);
Assert.Equal(150, dataActual);
}
[Fact]
public void CheckComparerOnSameLocation()
{
// Arrange
const int dataPosition = 50;
const int itemPosition = 100;
HeifLocation fromItem = new(HeifLocationOffsetOrigin.ItemOffset, 0, 50, 42);
HeifLocation fromFile = new(HeifLocationOffsetOrigin.FileOffset, 30, 120, 42);
HeifLocation fromData = new(HeifLocationOffsetOrigin.ItemDataOffset, 40, 60, 42);
HeifLocationComparer comparer = new(dataPosition, itemPosition);
// Act
int item2Data = comparer.Compare(fromItem, fromData);
int item2File = comparer.Compare(fromItem, fromFile);
int file2Data = comparer.Compare(fromFile, fromData);
int data2File = comparer.Compare(fromData, fromFile);
// Assert
Assert.Equal(0, item2Data);
Assert.Equal(0, item2File);
Assert.Equal(0, file2Data);
Assert.Equal(0, data2File);
}
[Fact]
public void CheckComparerOnLowerLocation()
{
// Arrange
const int dataPosition = 50;
const int itemPosition = 100;
HeifLocation fromItem = new(HeifLocationOffsetOrigin.ItemOffset, 0, 50, 42);
HeifLocation fromFile = new(HeifLocationOffsetOrigin.FileOffset, 30, 150, 42);
HeifLocation fromData = new(HeifLocationOffsetOrigin.ItemDataOffset, 40, 80, 42);
HeifLocationComparer comparer = new(dataPosition, itemPosition);
// Act
int item2Data = comparer.Compare(fromItem, fromData);
int item2File = comparer.Compare(fromItem, fromFile);
// Assert
Assert.Equal(-1, item2Data);
Assert.Equal(-1, item2File);
}
[Fact]
public void CheckComparerOnHigherLocation()
{
// Arrange
const int dataPosition = 50;
const int itemPosition = 100;
HeifLocation fromItem = new(HeifLocationOffsetOrigin.ItemOffset, 10, 50, 42);
HeifLocation fromFile = new(HeifLocationOffsetOrigin.FileOffset, 30, 120, 42);
HeifLocation fromData = new(HeifLocationOffsetOrigin.ItemDataOffset, 40, 60, 42);
HeifLocationComparer comparer = new(dataPosition, itemPosition);
// Act
int item2Data = comparer.Compare(fromItem, fromData);
int item2File = comparer.Compare(fromItem, fromFile);
// Assert
Assert.Equal(1, item2Data);
Assert.Equal(1, item2File);
}
}