Skip to content

Commit 7b13e1d

Browse files
Add generated animated PNG tests for Identify and Decode frame counts
1 parent ac19053 commit 7b13e1d

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

tests/ImageSharp.Tests/Formats/Png/PngDecoderTests.cs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,55 @@ public void Identify_AnimatedPng_ReadsFrameCountCorrectly()
423423
Assert.Equal(50, imageInfo.FrameMetadataCollection.Count);
424424
}
425425

426+
[Theory]
427+
[InlineData(1)]
428+
[InlineData(2)]
429+
[InlineData(5)]
430+
[InlineData(10)]
431+
[InlineData(100)]
432+
public void Identify_AnimatedPng_FrameCount_MatchesDecode(int frameCount)
433+
{
434+
using Image<Rgba32> image = new(10, 10, Color.Red.ToPixel<Rgba32>());
435+
for (int i = 1; i < frameCount; i++)
436+
{
437+
using ImageFrame<Rgba32> frame = new(Configuration.Default, 10, 10);
438+
image.Frames.AddFrame(frame);
439+
}
440+
441+
using MemoryStream stream = new();
442+
image.Save(stream, new PngEncoder());
443+
stream.Position = 0;
444+
445+
ImageInfo imageInfo = Image.Identify(stream);
446+
447+
Assert.NotNull(imageInfo);
448+
Assert.Equal(frameCount, imageInfo.FrameMetadataCollection.Count);
449+
}
450+
451+
[Theory]
452+
[InlineData(1)]
453+
[InlineData(2)]
454+
[InlineData(5)]
455+
[InlineData(10)]
456+
[InlineData(100)]
457+
public void Decode_AnimatedPng_FrameCount(int frameCount)
458+
{
459+
using Image<Rgba32> image = new(10, 10, Color.Red.ToPixel<Rgba32>());
460+
for (int i = 1; i < frameCount; i++)
461+
{
462+
using ImageFrame<Rgba32> frame = new(Configuration.Default, 10, 10);
463+
image.Frames.AddFrame(frame);
464+
}
465+
466+
using MemoryStream stream = new();
467+
image.Save(stream, new PngEncoder());
468+
stream.Position = 0;
469+
470+
using Image<Rgba32> decoded = Image.Load<Rgba32>(stream);
471+
472+
Assert.Equal(frameCount, decoded.Frames.Count);
473+
}
474+
426475
[Theory]
427476
[WithFile(TestImages.Png.Bad.MissingDataChunk, PixelTypes.Rgba32)]
428477
public void Decode_MissingDataChunk_ThrowsException<TPixel>(TestImageProvider<TPixel> provider)

0 commit comments

Comments
 (0)