From 7a21a889446027cd81ee84dbd29cca74cb9a3642 Mon Sep 17 00:00:00 2001 From: Dmitry Pentin Date: Mon, 6 Sep 2021 08:55:22 +0300 Subject: [PATCH] Fixed failing tests --- .../Components/Encoder/HuffmanScanEncoder.cs | 18 +++++++++--------- .../Formats/Jpg/Block8x8Tests.cs | 18 ++++++++++-------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/ImageSharp/Formats/Jpeg/Components/Encoder/HuffmanScanEncoder.cs b/src/ImageSharp/Formats/Jpeg/Components/Encoder/HuffmanScanEncoder.cs index 8e799e98bb..db0bc32ae5 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Encoder/HuffmanScanEncoder.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Encoder/HuffmanScanEncoder.cs @@ -303,8 +303,6 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Encoder { this.huffmanTables = HuffmanLut.TheHuffmanLut; - var unzig = ZigZag.CreateUnzigTable(); - // ReSharper disable once InconsistentNaming int prevDCR = 0, prevDCG = 0, prevDCB = 0; @@ -327,26 +325,28 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Encoder QuantIndex.Luminance, prevDCR, ref pixelConverter.R, - ref luminanceQuantTable, - ref unzig); + ref luminanceQuantTable); prevDCG = this.WriteBlock( QuantIndex.Luminance, prevDCG, ref pixelConverter.G, - ref luminanceQuantTable, - ref unzig); + ref luminanceQuantTable); prevDCB = this.WriteBlock( QuantIndex.Luminance, prevDCB, ref pixelConverter.B, - ref luminanceQuantTable, - ref unzig); + ref luminanceQuantTable); + + if (this.IsFlushNeeded) + { + this.FlushToStream(); + } } } - this.FlushInternalBuffer(); + this.FlushRemainingBytes(); } /// diff --git a/tests/ImageSharp.Tests/Formats/Jpg/Block8x8Tests.cs b/tests/ImageSharp.Tests/Formats/Jpg/Block8x8Tests.cs index 6d73181cba..69375ae1b9 100644 --- a/tests/ImageSharp.Tests/Formats/Jpg/Block8x8Tests.cs +++ b/tests/ImageSharp.Tests/Formats/Jpg/Block8x8Tests.cs @@ -248,24 +248,26 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg short fillValue = (short)rng.Next(-2000, 2000); // first filled chunk - int lastIndex1 = rng.Next(1, Block8x8F.Size / 2); - for (int dataIndex = 0; dataIndex <= lastIndex1; dataIndex++) + int firstChunkStart = rng.Next(0, Block8x8.Size / 2); + int firstChunkEnd = rng.Next(firstChunkStart, Block8x8.Size / 2); + for (int dataIdx = firstChunkStart; dataIdx <= firstChunkEnd; dataIdx++) { - data[dataIndex] = fillValue; + data[dataIdx] = fillValue; } // second filled chunk, there might be a spot with zero(s) between first and second chunk - int lastIndex2 = rng.Next(lastIndex1 + 1, Block8x8F.Size); - for (int dataIndex = 0; dataIndex <= lastIndex2; dataIndex++) + int secondChunkStart = rng.Next(firstChunkEnd, Block8x8.Size); + int secondChunkEnd = rng.Next(secondChunkStart, Block8x8.Size); + for (int dataIdx = secondChunkStart; dataIdx <= secondChunkEnd; dataIdx++) { - data[dataIndex] = fillValue; + data[dataIdx] = fillValue; } - int expected = lastIndex2; + int expected = secondChunkEnd; int actual = data.GetLastNonZeroIndex(); - Assert.Equal(expected, actual); + Assert.True(expected == actual, $"Expected: {expected}\nActual: {actual}\nInput matrix: {data}"); } }