|
|
|
@ -23,6 +23,14 @@ namespace SixLabors.ImageSharp.Tests.Formats.Gif |
|
|
|
{ TestImages.Gif.Ratio4x1, 4, 1, PixelResolutionUnit.AspectRatio } |
|
|
|
}; |
|
|
|
|
|
|
|
public static readonly TheoryData<string, uint> RepeatFiles = |
|
|
|
new TheoryData<string, uint> |
|
|
|
{ |
|
|
|
{ TestImages.Gif.Cheers, 0 }, |
|
|
|
{ TestImages.Gif.Receipt, 1 }, |
|
|
|
{ TestImages.Gif.Rings, 1 } |
|
|
|
}; |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void CloneIsDeep() |
|
|
|
{ |
|
|
|
@ -152,5 +160,35 @@ namespace SixLabors.ImageSharp.Tests.Formats.Gif |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[Theory] |
|
|
|
[MemberData(nameof(RepeatFiles))] |
|
|
|
public void Identify_VerifyRepeatCount(string imagePath, uint repeatCount) |
|
|
|
{ |
|
|
|
var testFile = TestFile.Create(imagePath); |
|
|
|
using (var stream = new MemoryStream(testFile.Bytes, false)) |
|
|
|
{ |
|
|
|
var decoder = new GifDecoder(); |
|
|
|
IImageInfo image = decoder.Identify(Configuration.Default, stream); |
|
|
|
GifMetadata meta = image.Metadata.GetGifMetadata(); |
|
|
|
Assert.Equal(repeatCount, meta.RepeatCount); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[Theory] |
|
|
|
[MemberData(nameof(RepeatFiles))] |
|
|
|
public void Decode_VerifyRepeatCount(string imagePath, uint repeatCount) |
|
|
|
{ |
|
|
|
var testFile = TestFile.Create(imagePath); |
|
|
|
using (var stream = new MemoryStream(testFile.Bytes, false)) |
|
|
|
{ |
|
|
|
var decoder = new GifDecoder(); |
|
|
|
using (Image<Rgba32> image = decoder.Decode<Rgba32>(Configuration.Default, stream)) |
|
|
|
{ |
|
|
|
GifMetadata meta = image.Metadata.GetGifMetadata(); |
|
|
|
Assert.Equal(repeatCount, meta.RepeatCount); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|